github.com/KiraCore/sekai@v0.3.43/x/gov/keeper/permission_registry_test.go (about) 1 package keeper_test 2 3 import ( 4 "testing" 5 6 simapp "github.com/KiraCore/sekai/app" 7 "github.com/KiraCore/sekai/x/gov/types" 8 tmproto "github.com/cometbft/cometbft/proto/tendermint/types" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestKeeper_CreateRoleAndWhitelistPerm(t *testing.T) { 13 app := simapp.Setup(false) 14 ctx := app.NewContext(false, tmproto.Header{}) 15 16 app.CustomGovKeeper.SetRole(ctx, types.Role{ 17 Id: uint32(types.RoleSudo), 18 Sid: "RoleSudo", 19 Description: "RoleSudo", 20 }) 21 22 err := app.CustomGovKeeper.WhitelistRolePermission(ctx, types.RoleSudo, types.PermClaimValidator) 23 require.NoError(t, err) 24 25 savedPerms, found := app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleSudo) 26 require.True(t, found) 27 require.True(t, savedPerms.IsWhitelisted(types.PermClaimValidator)) 28 } 29 30 func TestKeeper_HasGenesisDefaultRoles(t *testing.T) { 31 app := simapp.Setup(false) 32 ctx := app.NewContext(false, tmproto.Header{}) 33 34 roleSudo, found := app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleSudo) 35 require.True(t, found) 36 require.True(t, roleSudo.IsWhitelisted(types.PermSetPermissions)) 37 38 roleValidator, found := app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleValidator) 39 require.True(t, found) 40 require.True(t, roleValidator.IsWhitelisted(types.PermClaimValidator)) 41 42 iterator := app.CustomGovKeeper.GetRolesByWhitelistedPerm(ctx, types.PermClaimValidator) 43 requireIteratorCount(t, iterator, 2) 44 } 45 46 func TestKeeper_WhitelistRolePermission(t *testing.T) { 47 app := simapp.Setup(false) 48 ctx := app.NewContext(false, tmproto.Header{}) 49 50 perms, found := app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleSudo) 51 require.True(t, found) 52 require.False(t, perms.IsWhitelisted(types.PermChangeTxFee)) 53 54 err := app.CustomGovKeeper.WhitelistRolePermission(ctx, types.RoleSudo, types.PermChangeTxFee) 55 require.NoError(t, err) 56 57 perms, found = app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleSudo) 58 require.True(t, found) 59 require.True(t, perms.IsWhitelisted(types.PermChangeTxFee)) 60 61 iterator := app.CustomGovKeeper.GetRolesByWhitelistedPerm(ctx, types.PermChangeTxFee) 62 requireIteratorCount(t, iterator, 1) 63 } 64 65 func TestKeeper_RemoveWhitelistRolePermission(t *testing.T) { 66 app := simapp.Setup(false) 67 ctx := app.NewContext(false, tmproto.Header{}) 68 69 perms, found := app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleSudo) 70 require.True(t, found) 71 require.False(t, perms.IsWhitelisted(types.PermChangeTxFee)) 72 73 err := app.CustomGovKeeper.WhitelistRolePermission(ctx, types.RoleSudo, types.PermChangeTxFee) 74 require.NoError(t, err) 75 76 perms, found = app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleSudo) 77 require.True(t, found) 78 require.True(t, perms.IsWhitelisted(types.PermChangeTxFee)) 79 80 iterator := app.CustomGovKeeper.GetRolesByWhitelistedPerm(ctx, types.PermChangeTxFee) 81 requireIteratorCount(t, iterator, 1) 82 83 err = app.CustomGovKeeper.RemoveWhitelistRolePermission(ctx, types.RoleSudo, types.PermChangeTxFee) 84 require.NoError(t, err) 85 86 perms, found = app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleSudo) 87 require.True(t, found) 88 require.False(t, perms.IsWhitelisted(types.PermChangeTxFee)) 89 90 iterator = app.CustomGovKeeper.GetRolesByWhitelistedPerm(ctx, types.PermChangeTxFee) 91 requireIteratorCount(t, iterator, 0) 92 } 93 94 func TestKeeper_BlacklistRolePermission(t *testing.T) { 95 app := simapp.Setup(false) 96 ctx := app.NewContext(false, tmproto.Header{}) 97 98 perms, found := app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleSudo) 99 require.True(t, found) 100 require.False(t, perms.IsBlacklisted(types.PermChangeTxFee)) 101 102 err := app.CustomGovKeeper.BlacklistRolePermission(ctx, types.RoleSudo, types.PermChangeTxFee) 103 require.NoError(t, err) 104 105 perms, found = app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleSudo) 106 require.True(t, found) 107 require.True(t, perms.IsBlacklisted(types.PermChangeTxFee)) 108 } 109 110 func TestKeeper_RemoveBlacklistRolePermission(t *testing.T) { 111 app := simapp.Setup(false) 112 ctx := app.NewContext(false, tmproto.Header{}) 113 114 perms, found := app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleSudo) 115 require.True(t, found) 116 require.False(t, perms.IsBlacklisted(types.PermChangeTxFee)) 117 118 err := app.CustomGovKeeper.BlacklistRolePermission(ctx, types.RoleSudo, types.PermChangeTxFee) 119 require.NoError(t, err) 120 121 perms, found = app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleSudo) 122 require.True(t, found) 123 require.True(t, perms.IsBlacklisted(types.PermChangeTxFee)) 124 125 err = app.CustomGovKeeper.RemoveBlacklistRolePermission(ctx, types.RoleSudo, types.PermChangeTxFee) 126 require.NoError(t, err) 127 128 perms, found = app.CustomGovKeeper.GetPermissionsForRole(ctx, types.RoleSudo) 129 require.True(t, found) 130 require.False(t, perms.IsBlacklisted(types.PermChangeTxFee)) 131 } 132 133 func TestKeeper_GetPermissionsForRole_ReturnsNilWhenDoesNotExist(t *testing.T) { 134 app := simapp.Setup(false) 135 ctx := app.NewContext(false, tmproto.Header{}) 136 137 _, found := app.CustomGovKeeper.GetPermissionsForRole(ctx, 12345) 138 require.False(t, found) 139 }