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