github.com/KiraCore/sekai@v0.3.43/x/gov/keeper/util_test.go (about) 1 package keeper_test 2 3 import ( 4 "os" 5 "testing" 6 7 tmproto "github.com/cometbft/cometbft/proto/tendermint/types" 8 sdk "github.com/cosmos/cosmos-sdk/types" 9 "github.com/stretchr/testify/require" 10 11 simapp "github.com/KiraCore/sekai/app" 12 appparams "github.com/KiraCore/sekai/app/params" 13 "github.com/KiraCore/sekai/x/gov/keeper" 14 "github.com/KiraCore/sekai/x/gov/types" 15 ) 16 17 func TestMain(m *testing.M) { 18 appparams.SetConfig() 19 os.Exit(m.Run()) 20 } 21 22 func TestCheckIfAllowedPermission(t *testing.T) { 23 addr, err := sdk.AccAddressFromBech32("kira15ky9du8a2wlstz6fpx3p4mqpjyrm5cgqzp4f3d") 24 require.NoError(t, err) 25 26 tests := []struct { 27 name string 28 prepareScenario func(ctx sdk.Context, keeper keeper.Keeper) 29 isAllowed bool 30 }{ 31 { 32 name: "actor not present", 33 prepareScenario: func(ctx sdk.Context, keeper keeper.Keeper) { 34 return 35 }, 36 isAllowed: false, 37 }, 38 { 39 name: "actor has permission individually blacklisted", 40 prepareScenario: func(ctx sdk.Context, keeper keeper.Keeper) { 41 actor := types.NewDefaultActor(addr) 42 require.NoError(t, actor.Permissions.AddToBlacklist(types.PermClaimValidator)) 43 keeper.SaveNetworkActor(ctx, actor) 44 }, 45 isAllowed: false, 46 }, 47 { 48 name: "actor has permission blacklisted in role", 49 prepareScenario: func(ctx sdk.Context, keeper keeper.Keeper) { 50 roleWithBlacklistedValue := uint64(123) 51 keeper.SetRole(ctx, types.Role{ 52 Id: uint32(roleWithBlacklistedValue), 53 Sid: "123", 54 Description: "123", 55 }) 56 err2 := keeper.BlacklistRolePermission(ctx, roleWithBlacklistedValue, types.PermClaimValidator) 57 require.NoError(t, err2) 58 59 actor := types.NewDefaultActor(addr) 60 keeper.AssignRoleToActor(ctx, actor, roleWithBlacklistedValue) 61 }, 62 isAllowed: false, 63 }, 64 { 65 name: "actor has permission whitelisted in role", 66 prepareScenario: func(ctx sdk.Context, keeper keeper.Keeper) { 67 roleWithWhitelistedValue := uint64(123) 68 keeper.SetRole(ctx, types.Role{ 69 Id: uint32(roleWithWhitelistedValue), 70 Sid: "123", 71 Description: "123", 72 }) 73 74 err2 := keeper.WhitelistRolePermission(ctx, roleWithWhitelistedValue, types.PermClaimValidator) 75 require.NoError(t, err2) 76 77 actor := types.NewDefaultActor(addr) 78 keeper.AssignRoleToActor(ctx, actor, roleWithWhitelistedValue) 79 }, 80 isAllowed: true, 81 }, 82 { 83 name: "actor has permission whitelisted individually", 84 prepareScenario: func(ctx sdk.Context, keeper keeper.Keeper) { 85 actor := types.NewDefaultActor(addr) 86 require.NoError(t, keeper.AddWhitelistPermission(ctx, actor, types.PermClaimValidator)) 87 }, 88 isAllowed: true, 89 }, 90 { 91 name: "actor not whitelisted or blacklisted", 92 prepareScenario: func(ctx sdk.Context, keeper keeper.Keeper) { 93 actor := types.NewDefaultActor(addr) 94 keeper.SaveNetworkActor(ctx, actor) 95 }, 96 isAllowed: false, 97 }, 98 } 99 100 for _, tt := range tests { 101 tt := tt 102 t.Run(tt.name, func(t *testing.T) { 103 app := simapp.Setup(false) 104 ctx := app.NewContext(false, tmproto.Header{}) 105 106 tt.prepareScenario(ctx, app.CustomGovKeeper) 107 108 allowed := keeper.CheckIfAllowedPermission(ctx, app.CustomGovKeeper, addr, types.PermClaimValidator) 109 require.Equal(t, tt.isAllowed, allowed) 110 }) 111 } 112 }