github.com/KiraCore/sekai@v0.3.43/x/basket/keeper/msg_server_test.go (about) 1 package keeper_test 2 3 import ( 4 "time" 5 6 "github.com/KiraCore/sekai/x/basket/keeper" 7 "github.com/KiraCore/sekai/x/basket/types" 8 govtypes "github.com/KiraCore/sekai/x/gov/types" 9 "github.com/cometbft/cometbft/crypto/ed25519" 10 sdk "github.com/cosmos/cosmos-sdk/types" 11 ) 12 13 func (suite *KeeperTestSuite) TestDisableBasketDeposits() { 14 suite.SetupTest() 15 now := time.Now().UTC() 16 suite.ctx = suite.ctx.WithBlockTime(now) 17 18 addr1 := sdk.AccAddress(ed25519.GenPrivKey().PubKey().Address().Bytes()) 19 addr2 := sdk.AccAddress(ed25519.GenPrivKey().PubKey().Address().Bytes()) 20 21 suite.app.CustomGovKeeper.SaveNetworkActor(suite.ctx, govtypes.NetworkActor{ 22 Address: addr2, 23 Permissions: &govtypes.Permissions{ 24 Whitelist: []uint32{uint32(govtypes.PermHandleBasketEmergency)}, 25 }, 26 }) 27 28 basket := types.Basket{ 29 Id: 1, 30 Suffix: "usd", 31 Description: "usd basket", 32 LimitsPeriod: 3600, 33 Amount: sdk.NewInt(0), 34 SwapFee: sdk.NewDecWithPrec(1, 2), // 1% 35 SlipppageFeeMin: sdk.NewDecWithPrec(1, 2), // 1% 36 TokensCap: sdk.NewDecWithPrec(9, 1), // 90% 37 MintsMin: sdk.NewInt(1), 38 MintsMax: sdk.NewInt(100000000), 39 MintsDisabled: false, 40 BurnsMin: sdk.NewInt(1), 41 BurnsMax: sdk.NewInt(100000000), 42 BurnsDisabled: false, 43 SwapsMin: sdk.NewInt(1), 44 SwapsMax: sdk.NewInt(100000000), 45 SwapsDisabled: false, 46 Tokens: []types.BasketToken{ 47 { 48 Denom: "ukex", 49 Weight: sdk.NewDec(1), 50 Amount: sdk.NewInt(0), 51 Deposits: true, 52 Withdraws: true, 53 Swaps: true, 54 }, 55 { 56 Denom: "ueth", 57 Weight: sdk.NewDec(10), 58 Amount: sdk.NewInt(0), 59 Deposits: true, 60 Withdraws: true, 61 Swaps: true, 62 }, 63 }, 64 Surplus: sdk.NewCoins(sdk.NewInt64Coin("ueth", 1)), 65 } 66 suite.app.BasketKeeper.SetBasket(suite.ctx, basket) 67 68 msgServer := keeper.NewMsgServerImpl(suite.app.BasketKeeper, suite.app.CustomGovKeeper) 69 _, err := msgServer.DisableBasketDeposits(sdk.WrapSDKContext(suite.ctx), &types.MsgDisableBasketDeposits{ 70 Sender: addr1.String(), 71 BasketId: 1, 72 }) 73 suite.Require().Error(err) 74 75 _, err = msgServer.DisableBasketDeposits(sdk.WrapSDKContext(suite.ctx), &types.MsgDisableBasketDeposits{ 76 Sender: addr2.String(), 77 BasketId: 1, 78 Disabled: true, 79 }) 80 suite.Require().NoError(err) 81 82 // check disabled 83 savedBasket, err := suite.app.BasketKeeper.GetBasketById(suite.ctx, basket.Id) 84 suite.Require().NoError(err) 85 suite.Require().True(savedBasket.MintsDisabled) 86 } 87 88 func (suite *KeeperTestSuite) TestDisableBasketWithdraws() { 89 suite.SetupTest() 90 now := time.Now().UTC() 91 suite.ctx = suite.ctx.WithBlockTime(now) 92 93 addr1 := sdk.AccAddress(ed25519.GenPrivKey().PubKey().Address().Bytes()) 94 addr2 := sdk.AccAddress(ed25519.GenPrivKey().PubKey().Address().Bytes()) 95 96 suite.app.CustomGovKeeper.SaveNetworkActor(suite.ctx, govtypes.NetworkActor{ 97 Address: addr2, 98 Permissions: &govtypes.Permissions{ 99 Whitelist: []uint32{uint32(govtypes.PermHandleBasketEmergency)}, 100 }, 101 }) 102 103 basket := types.Basket{ 104 Id: 1, 105 Suffix: "usd", 106 Description: "usd basket", 107 LimitsPeriod: 3600, 108 Amount: sdk.NewInt(0), 109 SwapFee: sdk.NewDecWithPrec(1, 2), // 1% 110 SlipppageFeeMin: sdk.NewDecWithPrec(1, 2), // 1% 111 TokensCap: sdk.NewDecWithPrec(9, 1), // 90% 112 MintsMin: sdk.NewInt(1), 113 MintsMax: sdk.NewInt(100000000), 114 MintsDisabled: false, 115 BurnsMin: sdk.NewInt(1), 116 BurnsMax: sdk.NewInt(100000000), 117 BurnsDisabled: false, 118 SwapsMin: sdk.NewInt(1), 119 SwapsMax: sdk.NewInt(100000000), 120 SwapsDisabled: false, 121 Tokens: []types.BasketToken{ 122 { 123 Denom: "ukex", 124 Weight: sdk.NewDec(1), 125 Amount: sdk.NewInt(0), 126 Deposits: true, 127 Withdraws: true, 128 Swaps: true, 129 }, 130 { 131 Denom: "ueth", 132 Weight: sdk.NewDec(10), 133 Amount: sdk.NewInt(0), 134 Deposits: true, 135 Withdraws: true, 136 Swaps: true, 137 }, 138 }, 139 Surplus: sdk.NewCoins(sdk.NewInt64Coin("ueth", 1)), 140 } 141 suite.app.BasketKeeper.SetBasket(suite.ctx, basket) 142 143 msgServer := keeper.NewMsgServerImpl(suite.app.BasketKeeper, suite.app.CustomGovKeeper) 144 _, err := msgServer.DisableBasketWithdraws(sdk.WrapSDKContext(suite.ctx), &types.MsgDisableBasketWithdraws{ 145 Sender: addr1.String(), 146 BasketId: 1, 147 }) 148 suite.Require().Error(err) 149 150 _, err = msgServer.DisableBasketWithdraws(sdk.WrapSDKContext(suite.ctx), &types.MsgDisableBasketWithdraws{ 151 Sender: addr2.String(), 152 BasketId: 1, 153 Disabled: true, 154 }) 155 suite.Require().NoError(err) 156 157 // check disabled 158 savedBasket, err := suite.app.BasketKeeper.GetBasketById(suite.ctx, basket.Id) 159 suite.Require().NoError(err) 160 suite.Require().True(savedBasket.BurnsDisabled) 161 } 162 163 func (suite *KeeperTestSuite) TestDisableBasketSwaps() { 164 suite.SetupTest() 165 now := time.Now().UTC() 166 suite.ctx = suite.ctx.WithBlockTime(now) 167 168 addr1 := sdk.AccAddress(ed25519.GenPrivKey().PubKey().Address().Bytes()) 169 addr2 := sdk.AccAddress(ed25519.GenPrivKey().PubKey().Address().Bytes()) 170 171 suite.app.CustomGovKeeper.SaveNetworkActor(suite.ctx, govtypes.NetworkActor{ 172 Address: addr2, 173 Permissions: &govtypes.Permissions{ 174 Whitelist: []uint32{uint32(govtypes.PermHandleBasketEmergency)}, 175 }, 176 }) 177 178 basket := types.Basket{ 179 Id: 1, 180 Suffix: "usd", 181 Description: "usd basket", 182 LimitsPeriod: 3600, 183 Amount: sdk.NewInt(0), 184 SwapFee: sdk.NewDecWithPrec(1, 2), // 1% 185 SlipppageFeeMin: sdk.NewDecWithPrec(1, 2), // 1% 186 TokensCap: sdk.NewDecWithPrec(9, 1), // 90% 187 MintsMin: sdk.NewInt(1), 188 MintsMax: sdk.NewInt(100000000), 189 MintsDisabled: false, 190 BurnsMin: sdk.NewInt(1), 191 BurnsMax: sdk.NewInt(100000000), 192 BurnsDisabled: false, 193 SwapsMin: sdk.NewInt(1), 194 SwapsMax: sdk.NewInt(100000000), 195 SwapsDisabled: false, 196 Tokens: []types.BasketToken{ 197 { 198 Denom: "ukex", 199 Weight: sdk.NewDec(1), 200 Amount: sdk.NewInt(0), 201 Deposits: true, 202 Withdraws: true, 203 Swaps: true, 204 }, 205 { 206 Denom: "ueth", 207 Weight: sdk.NewDec(10), 208 Amount: sdk.NewInt(0), 209 Deposits: true, 210 Withdraws: true, 211 Swaps: true, 212 }, 213 }, 214 Surplus: sdk.NewCoins(sdk.NewInt64Coin("ueth", 1)), 215 } 216 suite.app.BasketKeeper.SetBasket(suite.ctx, basket) 217 218 msgServer := keeper.NewMsgServerImpl(suite.app.BasketKeeper, suite.app.CustomGovKeeper) 219 _, err := msgServer.DisableBasketSwaps(sdk.WrapSDKContext(suite.ctx), &types.MsgDisableBasketSwaps{ 220 Sender: addr1.String(), 221 BasketId: 1, 222 }) 223 suite.Require().Error(err) 224 225 _, err = msgServer.DisableBasketSwaps(sdk.WrapSDKContext(suite.ctx), &types.MsgDisableBasketSwaps{ 226 Sender: addr2.String(), 227 BasketId: 1, 228 Disabled: true, 229 }) 230 suite.Require().NoError(err) 231 232 // check disabled 233 savedBasket, err := suite.app.BasketKeeper.GetBasketById(suite.ctx, basket.Id) 234 suite.Require().NoError(err) 235 suite.Require().True(savedBasket.SwapsDisabled) 236 }