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  }