authorizable_test.gno
2.32 Kb ยท 107 lines
1package authorizable
2
3import (
4 "std"
5 "testing"
6
7 "gno.land/p/demo/testutils"
8 "gno.land/p/demo/uassert"
9)
10
11var (
12 alice = testutils.TestAddress("alice")
13 bob = testutils.TestAddress("bob")
14 charlie = testutils.TestAddress("charlie")
15)
16
17func TestNewAuthorizable(t *testing.T) {
18 testing.SetRealm(std.NewUserRealm(alice))
19
20 a := NewAuthorizable()
21 got := a.Owner()
22
23 if alice != got {
24 t.Fatalf("Expected %s, got: %s", alice, got)
25 }
26}
27
28func TestNewAuthorizableWithAddress(t *testing.T) {
29 a := NewAuthorizableWithAddress(alice)
30
31 got := a.Owner()
32
33 if alice != got {
34 t.Fatalf("Expected %s, got: %s", alice, got)
35 }
36}
37
38func TestOnAuthList(t *testing.T) {
39 a := NewAuthorizableWithAddress(alice)
40 testing.SetRealm(std.NewUserRealm(alice))
41
42 if err := a.OnAuthList(); err == ErrNotInAuthList {
43 t.Fatalf("expected alice to be on the list")
44 }
45}
46
47func TestNotOnAuthList(t *testing.T) {
48 a := NewAuthorizableWithAddress(alice)
49 testing.SetRealm(std.NewUserRealm(bob))
50
51 if err := a.OnAuthList(); err == nil {
52 t.Fatalf("expected bob to not be on the list")
53 }
54}
55
56func TestAddToAuthList(t *testing.T) {
57 a := NewAuthorizableWithAddress(alice)
58 testing.SetRealm(std.NewUserRealm(alice))
59
60 if err := a.AddToAuthList(bob); err != nil {
61 t.Fatalf("Expected no error, got %v", err)
62 }
63
64 testing.SetRealm(std.NewUserRealm(bob))
65
66 if err := a.AddToAuthList(bob); err == nil {
67 t.Fatalf("Expected AddToAuth to error while bob called it, but it didn't")
68 }
69}
70
71func TestDeleteFromList(t *testing.T) {
72 a := NewAuthorizableWithAddress(alice)
73 testing.SetRealm(std.NewUserRealm(alice))
74
75 if err := a.AddToAuthList(bob); err != nil {
76 t.Fatalf("Expected no error, got %v", err)
77 }
78
79 if err := a.AddToAuthList(charlie); err != nil {
80 t.Fatalf("Expected no error, got %v", err)
81 }
82
83 testing.SetRealm(std.NewUserRealm(bob))
84
85 // Try an unauthorized deletion
86 if err := a.DeleteFromAuthList(alice); err == nil {
87 t.Fatalf("Expected DelFromAuth to error with %v", err)
88 }
89
90 testing.SetRealm(std.NewUserRealm(alice))
91
92 if err := a.DeleteFromAuthList(charlie); err != nil {
93 t.Fatalf("Expected no error, got %v", err)
94 }
95}
96
97func TestAssertOnList(t *testing.T) {
98 testing.SetRealm(std.NewUserRealm(alice))
99
100 a := NewAuthorizableWithAddress(alice)
101
102 testing.SetRealm(std.NewUserRealm(bob))
103
104 uassert.PanicsWithMessage(t, ErrNotInAuthList.Error(), func() {
105 a.AssertOnAuthList()
106 })
107}