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  }