github.com/cosmos/cosmos-sdk@v0.50.10/x/auth/types/permissions_test.go (about)

     1  package types
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  )
     8  
     9  func TestHasPermission(t *testing.T) {
    10  	emptyPermAddr := NewPermissionsForAddress("empty", []string{})
    11  	has := emptyPermAddr.HasPermission(Minter)
    12  	require.False(t, has)
    13  
    14  	cases := []struct {
    15  		permission string
    16  		expectHas  bool
    17  	}{
    18  		{Minter, true},
    19  		{Burner, true},
    20  		{Staking, true},
    21  		{"random", false},
    22  		{"", false},
    23  	}
    24  	permAddr := NewPermissionsForAddress("test", []string{Minter, Burner, Staking})
    25  	for i, tc := range cases {
    26  		has = permAddr.HasPermission(tc.permission)
    27  		require.Equal(t, tc.expectHas, has, "test case #%d", i)
    28  	}
    29  }
    30  
    31  func TestValidatePermissions(t *testing.T) {
    32  	cases := []struct {
    33  		name        string
    34  		permissions []string
    35  		expectPass  bool
    36  	}{
    37  		{"no permissions", []string{}, true},
    38  		{"valid permission", []string{Minter}, true},
    39  		{"invalid permission", []string{""}, false},
    40  		{"invalid and valid permission", []string{Staking, ""}, false},
    41  	}
    42  
    43  	for i, tc := range cases {
    44  		i, tc := i, tc
    45  		t.Run(tc.name, func(t *testing.T) {
    46  			err := validatePermissions(tc.permissions...)
    47  			if tc.expectPass {
    48  				require.NoError(t, err, "test case #%d", i)
    49  			} else {
    50  				require.Error(t, err, "test case #%d", i)
    51  			}
    52  		})
    53  	}
    54  }