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}