Upgrade to cosmos-sdk v0.45.0 (#717)
* Upgrade to cosmos-sdk v0.44.5 * Upgrade to sdk v0.45.0-rc1 * Fix local test deploy scripts * Bump to v0.45.0 final release * Fixed replace to 0.45.0 not rc1 * Fix changed import path since rc1 Co-authored-by: Ethan Frey <ethanfrey@users.noreply.github.com>
This commit is contained in:
@@ -29,6 +29,7 @@ type testData struct {
|
||||
keeper Keeper
|
||||
bankKeeper bankkeeper.Keeper
|
||||
stakingKeeper stakingkeeper.Keeper
|
||||
faucet *keeper.TestFaucet
|
||||
}
|
||||
|
||||
func setupTest(t *testing.T) testData {
|
||||
@@ -41,6 +42,7 @@ func setupTest(t *testing.T) testData {
|
||||
keeper: *keepers.WasmKeeper,
|
||||
bankKeeper: keepers.BankKeeper,
|
||||
stakingKeeper: keepers.StakingKeeper,
|
||||
faucet: keepers.Faucet,
|
||||
}
|
||||
return data
|
||||
}
|
||||
@@ -141,9 +143,7 @@ type state struct {
|
||||
|
||||
func TestHandleInstantiate(t *testing.T) {
|
||||
data := setupTest(t)
|
||||
|
||||
deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000))
|
||||
creator := createFakeFundedAccount(t, data.ctx, data.acctKeeper, data.bankKeeper, deposit)
|
||||
creator := data.faucet.NewFundedAccount(data.ctx, sdk.NewInt64Coin("denom", 100000))
|
||||
|
||||
h := data.module.Route().Handler()
|
||||
q := data.module.LegacyQuerierHandler(nil)
|
||||
@@ -177,7 +177,7 @@ func TestHandleInstantiate(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
contractBech32Addr := parseInitResponse(t, res.Data)
|
||||
|
||||
require.Equal(t, "cosmos14hj2tavq8fpesdwxxcu44rty3hh90vhuc53mp6", contractBech32Addr)
|
||||
require.Equal(t, "cosmos14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9s4hmalr", contractBech32Addr)
|
||||
// this should be standard x/wasm init event, nothing from contract
|
||||
require.Equal(t, 3, len(res.Events), prettyEvents(res.Events))
|
||||
require.Equal(t, "message", res.Events[0].Type)
|
||||
@@ -203,8 +203,9 @@ func TestHandleExecute(t *testing.T) {
|
||||
|
||||
deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000))
|
||||
topUp := sdk.NewCoins(sdk.NewInt64Coin("denom", 5000))
|
||||
creator := createFakeFundedAccount(t, data.ctx, data.acctKeeper, data.bankKeeper, deposit.Add(deposit...))
|
||||
fred := createFakeFundedAccount(t, data.ctx, data.acctKeeper, data.bankKeeper, topUp)
|
||||
|
||||
creator := data.faucet.NewFundedAccount(data.ctx, deposit.Add(deposit...)...)
|
||||
fred := data.faucet.NewFundedAccount(data.ctx, topUp...)
|
||||
|
||||
h := data.module.Route().Handler()
|
||||
q := data.module.LegacyQuerierHandler(nil)
|
||||
@@ -235,15 +236,17 @@ func TestHandleExecute(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
contractBech32Addr := parseInitResponse(t, res.Data)
|
||||
|
||||
require.Equal(t, "cosmos14hj2tavq8fpesdwxxcu44rty3hh90vhuc53mp6", contractBech32Addr)
|
||||
require.Equal(t, "cosmos14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9s4hmalr", contractBech32Addr)
|
||||
// this should be standard x/wasm message event, init event, plus a bank send event (2), with no custom contract events
|
||||
require.Equal(t, 4, len(res.Events), prettyEvents(res.Events))
|
||||
require.Equal(t, 6, len(res.Events), prettyEvents(res.Events))
|
||||
require.Equal(t, "message", res.Events[0].Type)
|
||||
assertAttribute(t, "module", "wasm", res.Events[0].Attributes[0])
|
||||
require.Equal(t, "transfer", res.Events[1].Type)
|
||||
require.Equal(t, "instantiate", res.Events[2].Type)
|
||||
require.Equal(t, "wasm", res.Events[3].Type)
|
||||
assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[3].Attributes[0])
|
||||
require.Equal(t, "coin_spent", res.Events[1].Type)
|
||||
require.Equal(t, "coin_received", res.Events[2].Type)
|
||||
require.Equal(t, "transfer", res.Events[3].Type)
|
||||
require.Equal(t, "instantiate", res.Events[4].Type)
|
||||
require.Equal(t, "wasm", res.Events[5].Type)
|
||||
assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[5].Attributes[0])
|
||||
|
||||
// ensure bob doesn't exist
|
||||
bobAcct := data.acctKeeper.GetAccount(data.ctx, bob)
|
||||
@@ -273,32 +276,37 @@ func TestHandleExecute(t *testing.T) {
|
||||
assertExecuteResponse(t, res.Data, []byte{0xf0, 0x0b, 0xaa})
|
||||
|
||||
// this should be standard message event, plus x/wasm init event, plus 2 bank send event, plus a special event from the contract
|
||||
require.Equal(t, 6, len(res.Events), prettyEvents(res.Events))
|
||||
require.Equal(t, 10, len(res.Events), prettyEvents(res.Events))
|
||||
|
||||
assert.Equal(t, "message", res.Events[0].Type)
|
||||
assertAttribute(t, "module", "wasm", res.Events[0].Attributes[0])
|
||||
assert.Equal(t, "coin_spent", res.Events[1].Type)
|
||||
assert.Equal(t, "coin_received", res.Events[2].Type)
|
||||
|
||||
require.Equal(t, "transfer", res.Events[1].Type)
|
||||
require.Len(t, res.Events[1].Attributes, 3)
|
||||
assertAttribute(t, "recipient", contractBech32Addr, res.Events[1].Attributes[0])
|
||||
assertAttribute(t, "sender", fred.String(), res.Events[1].Attributes[1])
|
||||
assertAttribute(t, "amount", "5000denom", res.Events[1].Attributes[2])
|
||||
require.Equal(t, "transfer", res.Events[3].Type)
|
||||
require.Len(t, res.Events[3].Attributes, 3)
|
||||
assertAttribute(t, "recipient", contractBech32Addr, res.Events[3].Attributes[0])
|
||||
assertAttribute(t, "sender", fred.String(), res.Events[3].Attributes[1])
|
||||
assertAttribute(t, "amount", "5000denom", res.Events[3].Attributes[2])
|
||||
|
||||
assert.Equal(t, "execute", res.Events[2].Type)
|
||||
assert.Equal(t, "execute", res.Events[4].Type)
|
||||
|
||||
// custom contract event attribute
|
||||
assert.Equal(t, "wasm", res.Events[3].Type)
|
||||
assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[3].Attributes[0])
|
||||
assertAttribute(t, "action", "release", res.Events[3].Attributes[1])
|
||||
assert.Equal(t, "wasm", res.Events[5].Type)
|
||||
assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[5].Attributes[0])
|
||||
assertAttribute(t, "action", "release", res.Events[5].Attributes[1])
|
||||
// custom contract event
|
||||
assert.Equal(t, "wasm-hackatom", res.Events[4].Type)
|
||||
assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[4].Attributes[0])
|
||||
assertAttribute(t, "action", "release", res.Events[4].Attributes[1])
|
||||
assert.Equal(t, "wasm-hackatom", res.Events[6].Type)
|
||||
assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[6].Attributes[0])
|
||||
assertAttribute(t, "action", "release", res.Events[6].Attributes[1])
|
||||
// second transfer (this without conflicting message)
|
||||
assert.Equal(t, "transfer", res.Events[5].Type)
|
||||
assertAttribute(t, "recipient", bob.String(), res.Events[5].Attributes[0])
|
||||
assertAttribute(t, "sender", contractBech32Addr, res.Events[5].Attributes[1])
|
||||
assertAttribute(t, "amount", "105000denom", res.Events[5].Attributes[2])
|
||||
assert.Equal(t, "coin_spent", res.Events[7].Type)
|
||||
assert.Equal(t, "coin_received", res.Events[8].Type)
|
||||
|
||||
assert.Equal(t, "transfer", res.Events[9].Type)
|
||||
assertAttribute(t, "recipient", bob.String(), res.Events[9].Attributes[0])
|
||||
assertAttribute(t, "sender", contractBech32Addr, res.Events[9].Attributes[1])
|
||||
assertAttribute(t, "amount", "105000denom", res.Events[9].Attributes[2])
|
||||
// finally, standard x/wasm tag
|
||||
|
||||
// ensure bob now exists and got both payments released
|
||||
@@ -311,7 +319,7 @@ func TestHandleExecute(t *testing.T) {
|
||||
|
||||
contractAcct = data.acctKeeper.GetAccount(data.ctx, contractAddr)
|
||||
require.NotNil(t, contractAcct)
|
||||
assert.Equal(t, sdk.Coins(nil), data.bankKeeper.GetAllBalances(data.ctx, contractAcct.GetAddress()))
|
||||
assert.Equal(t, sdk.Coins{}, data.bankKeeper.GetAllBalances(data.ctx, contractAcct.GetAddress()))
|
||||
|
||||
// ensure all contract state is as after init
|
||||
assertCodeList(t, q, data.ctx, 1)
|
||||
@@ -331,8 +339,8 @@ func TestHandleExecuteEscrow(t *testing.T) {
|
||||
|
||||
deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000))
|
||||
topUp := sdk.NewCoins(sdk.NewInt64Coin("denom", 5000))
|
||||
creator := createFakeFundedAccount(t, data.ctx, data.acctKeeper, data.bankKeeper, deposit.Add(deposit...))
|
||||
fred := createFakeFundedAccount(t, data.ctx, data.acctKeeper, data.bankKeeper, topUp)
|
||||
creator := data.faucet.NewFundedAccount(data.ctx, deposit.Add(deposit...)...)
|
||||
fred := data.faucet.NewFundedAccount(data.ctx, topUp...)
|
||||
|
||||
h := data.module.Route().Handler()
|
||||
|
||||
@@ -360,7 +368,7 @@ func TestHandleExecuteEscrow(t *testing.T) {
|
||||
res, err = h(data.ctx, &initCmd)
|
||||
require.NoError(t, err)
|
||||
contractBech32Addr := parseInitResponse(t, res.Data)
|
||||
require.Equal(t, "cosmos14hj2tavq8fpesdwxxcu44rty3hh90vhuc53mp6", contractBech32Addr)
|
||||
require.Equal(t, "cosmos14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9s4hmalr", contractBech32Addr)
|
||||
|
||||
handleMsg := map[string]interface{}{
|
||||
"release": map[string]interface{}{},
|
||||
@@ -389,7 +397,7 @@ func TestHandleExecuteEscrow(t *testing.T) {
|
||||
contractAddr, _ := sdk.AccAddressFromBech32(contractBech32Addr)
|
||||
contractAcct := data.acctKeeper.GetAccount(data.ctx, contractAddr)
|
||||
require.NotNil(t, contractAcct)
|
||||
assert.Equal(t, sdk.Coins(nil), data.bankKeeper.GetAllBalances(data.ctx, contractAcct.GetAddress()))
|
||||
assert.Equal(t, sdk.Coins{}, data.bankKeeper.GetAllBalances(data.ctx, contractAcct.GetAddress()))
|
||||
}
|
||||
|
||||
func TestReadWasmConfig(t *testing.T) {
|
||||
@@ -570,12 +578,3 @@ func assertContractInfo(t *testing.T, q sdk.Querier, ctx sdk.Context, contractBe
|
||||
assert.Equal(t, codeID, res.CodeID)
|
||||
assert.Equal(t, creator.String(), res.Creator)
|
||||
}
|
||||
|
||||
func createFakeFundedAccount(t *testing.T, ctx sdk.Context, am authkeeper.AccountKeeper, bankKeeper bankkeeper.Keeper, coins sdk.Coins) sdk.AccAddress {
|
||||
t.Helper()
|
||||
_, _, addr := keyPubAddr()
|
||||
acc := am.NewAccountWithAddress(ctx, addr)
|
||||
am.SetAccount(ctx, acc)
|
||||
require.NoError(t, bankKeeper.SetBalances(ctx, addr, coins))
|
||||
return addr
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user