package authorizable import ( "testing" "gno.land/p/nt/ownable/v0" "gno.land/p/nt/testutils/v0" "gno.land/p/nt/uassert/v0" ) var ( alice = testutils.TestAddress("alice") bob = testutils.TestAddress("bob") charlie = testutils.TestAddress("charlie") ) func TestNew(t *testing.T) { testing.SetRealm(testing.NewUserRealm(alice)) a := New(ownable.NewWithAddress(alice)) got := a.Owner() if alice != got { t.Fatalf("Expected %s, got: %s", alice, got) } } func TestOnAuthList(t *testing.T) { a := New(ownable.NewWithAddress(alice)) testing.SetRealm(testing.NewUserRealm(alice)) if err := a.OnAuthList(); err == ErrNotInAuthList { t.Fatalf("expected alice to be on the list") } } func TestNotOnAuthList(t *testing.T) { a := New(ownable.NewWithAddress(alice)) testing.SetRealm(testing.NewUserRealm(bob)) if err := a.OnAuthList(); err == nil { t.Fatalf("expected bob to not be on the list") } } func TestAddToAuthList(t *testing.T) { a := New(ownable.NewWithAddress(alice)) testing.SetRealm(testing.NewUserRealm(alice)) if err := a.AddToAuthList(bob); err != nil { t.Fatalf("Expected no error, got %v", err) } testing.SetRealm(testing.NewUserRealm(bob)) if err := a.AddToAuthList(bob); err == nil { t.Fatalf("Expected AddToAuth to error while bob called it, but it didn't") } } func TestDeleteFromList(t *testing.T) { a := New(ownable.NewWithAddress(alice)) testing.SetRealm(testing.NewUserRealm(alice)) if err := a.AddToAuthList(bob); err != nil { t.Fatalf("Expected no error, got %v", err) } if err := a.AddToAuthList(charlie); err != nil { t.Fatalf("Expected no error, got %v", err) } testing.SetRealm(testing.NewUserRealm(bob)) // Try an unauthorized deletion if err := a.DeleteFromAuthList(alice); err == nil { t.Fatalf("Expected DelFromAuth to error with %v", err) } testing.SetRealm(testing.NewUserRealm(alice)) if err := a.DeleteFromAuthList(charlie); err != nil { t.Fatalf("Expected no error, got %v", err) } } func TestAssertOnList(t *testing.T) { a := New(ownable.NewWithAddress(alice)) testing.SetRealm(testing.NewUserRealm(bob)) uassert.PanicsWithMessage(t, ErrNotInAuthList.Error(), func() { a.AssertOnAuthList() }) }