From b2fc9133989cef6e8f479d3eef79bd5bae5fb374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Husiaty=C5=84ski?= <1517+husio@users.noreply.github.com> Date: Fri, 27 Aug 2021 15:37:07 +0200 Subject: [PATCH] Keeper tests (#590) * More keeper tests x/wasm/keeper tests are extended to test various input validation. Keeper input is validated before passing to the keeper method when used within wasmd application. We cannot ensure such validation when this keeper is used outside of wasmd application. To keep it safe, fully validate keeper methods input. hackatom.wasm is loaded into memory during initialization to avoid reading file in each test separately. Once migrated to go 1.16, embed package should be used instead. Run goimport on certain files. Some comments fixed or removed. * ensure that creator address is not nil --- cmd/wasmd/root.go | 5 +- x/wasm/keeper/api.go | 1 + x/wasm/keeper/handler_plugin.go | 15 +- x/wasm/keeper/handler_plugin_encoders_test.go | 3 +- x/wasm/keeper/handler_plugin_test.go | 3 +- x/wasm/keeper/keeper.go | 16 +- x/wasm/keeper/keeper_test.go | 151 ++++++++---------- x/wasm/keeper/query_plugins.go | 1 + x/wasm/module_test.go | 1 - 9 files changed, 98 insertions(+), 98 deletions(-) diff --git a/cmd/wasmd/root.go b/cmd/wasmd/root.go index c2f5700a..485ac518 100644 --- a/cmd/wasmd/root.go +++ b/cmd/wasmd/root.go @@ -2,12 +2,13 @@ package main import ( "errors" - wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" - "github.com/prometheus/client_golang/prometheus" "io" "os" "path/filepath" + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + "github.com/prometheus/client_golang/prometheus" + "github.com/CosmWasm/wasmd/x/wasm" clientcodec "github.com/CosmWasm/wasmd/x/wasm/client/codec" authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" diff --git a/x/wasm/keeper/api.go b/x/wasm/keeper/api.go index 5e33458e..44d4ad2d 100644 --- a/x/wasm/keeper/api.go +++ b/x/wasm/keeper/api.go @@ -2,6 +2,7 @@ package keeper import ( "fmt" + wasmvm "github.com/CosmWasm/wasmvm" wasmvmtypes "github.com/CosmWasm/wasmvm/types" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/wasm/keeper/handler_plugin.go b/x/wasm/keeper/handler_plugin.go index 5de2256e..de4520b2 100644 --- a/x/wasm/keeper/handler_plugin.go +++ b/x/wasm/keeper/handler_plugin.go @@ -3,6 +3,7 @@ package keeper import ( "errors" "fmt" + "github.com/CosmWasm/wasmd/x/wasm/types" wasmvmtypes "github.com/CosmWasm/wasmvm/types" codectypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -111,13 +112,16 @@ func NewMessageHandlerChain(first Messenger, others ...Messenger) *MessageHandle return r } -// DispatchMsg dispatch message to handlers. +// DispatchMsg dispatch message and calls chained handlers one after another in +// order to find the right one to process given message. If a handler cannot +// process given message (returns ErrUnknownMsg), its result is ignored and the +// next handler is executed. func (m MessageHandlerChain) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) ([]sdk.Event, [][]byte, error) { for _, h := range m.handlers { events, data, err := h.DispatchMsg(ctx, contractAddr, contractIBCPortID, msg) switch { case err == nil: - return events, data, err + return events, data, nil case errors.Is(err, types.ErrUnknownMsg): continue default: @@ -133,8 +137,8 @@ type IBCRawPacketHandler struct { capabilityKeeper types.CapabilityKeeper } -func NewIBCRawPacketHandler(chk types.ChannelKeeper, cak types.CapabilityKeeper) *IBCRawPacketHandler { - return &IBCRawPacketHandler{channelKeeper: chk, capabilityKeeper: cak} +func NewIBCRawPacketHandler(chk types.ChannelKeeper, cak types.CapabilityKeeper) IBCRawPacketHandler { + return IBCRawPacketHandler{channelKeeper: chk, capabilityKeeper: cak} } // DispatchMsg publishes a raw IBC packet onto the channel. @@ -180,9 +184,10 @@ func (h IBCRawPacketHandler) DispatchMsg(ctx sdk.Context, _ sdk.AccAddress, cont var _ Messenger = MessageHandlerFunc(nil) -// MessageHandlerFunc is a helper to construct simple function based message handler +// MessageHandlerFunc is a helper to construct a function based message handler. type MessageHandlerFunc func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) +// DispatchMsg delegates dispatching of provided message into the MessageHandlerFunc. func (m MessageHandlerFunc) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { return m(ctx, contractAddr, contractIBCPortID, msg) } diff --git a/x/wasm/keeper/handler_plugin_encoders_test.go b/x/wasm/keeper/handler_plugin_encoders_test.go index d1fb6b45..f8cdb0aa 100644 --- a/x/wasm/keeper/handler_plugin_encoders_test.go +++ b/x/wasm/keeper/handler_plugin_encoders_test.go @@ -2,6 +2,8 @@ package keeper import ( "encoding/json" + "testing" + "github.com/CosmWasm/wasmd/x/wasm/keeper/wasmtesting" codectypes "github.com/cosmos/cosmos-sdk/codec/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" @@ -10,7 +12,6 @@ import ( channeltypes "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/types" "github.com/golang/protobuf/proto" "github.com/stretchr/testify/assert" - "testing" "github.com/CosmWasm/wasmd/x/wasm/types" wasmvmtypes "github.com/CosmWasm/wasmvm/types" diff --git a/x/wasm/keeper/handler_plugin_test.go b/x/wasm/keeper/handler_plugin_test.go index b0e98c64..1e677288 100644 --- a/x/wasm/keeper/handler_plugin_test.go +++ b/x/wasm/keeper/handler_plugin_test.go @@ -2,6 +2,8 @@ package keeper import ( "encoding/json" + "testing" + "github.com/CosmWasm/wasmd/x/wasm/keeper/wasmtesting" "github.com/CosmWasm/wasmd/x/wasm/types" wasmvm "github.com/CosmWasm/wasmvm" @@ -16,7 +18,6 @@ import ( ibcexported "github.com/cosmos/cosmos-sdk/x/ibc/core/exported" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "testing" ) func TestMessageHandlerChainDispatch(t *testing.T) { diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 24481228..c35cfe70 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -5,6 +5,12 @@ import ( "crypto/sha256" "encoding/binary" "fmt" + "math" + "path/filepath" + "strconv" + "strings" + "time" + "github.com/CosmWasm/wasmd/x/wasm/types" wasmvm "github.com/CosmWasm/wasmvm" wasmvmtypes "github.com/CosmWasm/wasmvm/types" @@ -16,11 +22,6 @@ import ( paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/tendermint/tendermint/crypto" "github.com/tendermint/tendermint/libs/log" - "math" - "path/filepath" - "strconv" - "strings" - "time" ) // contractMemoryLimit is the memory limit of each contract execution (in MiB) @@ -155,6 +156,10 @@ func (k Keeper) setParams(ctx sdk.Context, ps types.Params) { } func (k Keeper) create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, instantiateAccess *types.AccessConfig, authZ AuthorizationPolicy) (codeID uint64, err error) { + if creator == nil { + return 0, sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, "cannot be nil") + } + if !authZ.CanCreateCode(k.getUploadAccessConfig(ctx), creator) { return 0, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "can not create code") } @@ -470,7 +475,6 @@ func (k Keeper) Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte } // reply is only called from keeper internal functions (dispatchSubmessages) after processing the submessage -// it func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddress) if err != nil { diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 0cf5628f..e2e5a717 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -4,15 +4,16 @@ import ( "bytes" "encoding/json" "errors" - "github.com/CosmWasm/wasmd/x/wasm/keeper/wasmtesting" - wasmvm "github.com/CosmWasm/wasmvm" - wasmvmtypes "github.com/CosmWasm/wasmvm/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "io/ioutil" "math" "testing" "time" + "github.com/CosmWasm/wasmd/x/wasm/keeper/wasmtesting" + wasmvm "github.com/CosmWasm/wasmvm" + wasmvmtypes "github.com/CosmWasm/wasmvm/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/CosmWasm/wasmd/x/wasm/types" stypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -23,6 +24,17 @@ import ( tmproto "github.com/tendermint/tendermint/proto/tendermint/types" ) +// When migrated to go 1.16, embed package should be used instead. +func init() { + b, err := ioutil.ReadFile("./testdata/hackatom.wasm") + if err != nil { + panic(err) + } + hackatomWasm = b +} + +var hackatomWasm []byte + const SupportedFeatures = "staking,stargate" func TestNewKeeper(t *testing.T) { @@ -30,32 +42,52 @@ func TestNewKeeper(t *testing.T) { require.NotNil(t, keepers.ContractKeeper) } -func TestCreate(t *testing.T) { +func TestCreateSuccess(t *testing.T) { ctx, keepers := CreateTestInput(t, false, SupportedFeatures) accKeeper, keeper, bankKeeper := keepers.AccountKeeper, keepers.ContractKeeper, keepers.BankKeeper deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - em := sdk.NewEventManager() - codeID, err := keeper.Create(ctx.WithEventManager(em), creator, wasmCode, nil) + contractID, err := keeper.Create(ctx.WithEventManager(em), creator, hackatomWasm, nil) require.NoError(t, err) - require.Equal(t, uint64(1), codeID) + require.Equal(t, uint64(1), contractID) // and verify content - storedCode, err := keepers.WasmKeeper.GetByteCode(ctx, codeID) + storedCode, err := keepers.WasmKeeper.GetByteCode(ctx, contractID) require.NoError(t, err) - require.Equal(t, wasmCode, storedCode) + require.Equal(t, hackatomWasm, storedCode) // and events emitted exp := sdk.Events{sdk.NewEvent("store_code", sdk.NewAttribute("code_id", "1"))} assert.Equal(t, exp, em.Events()) } +func TestCreateNilCreatorAddress(t *testing.T) { + ctx, keepers := CreateTestInput(t, false, SupportedFeatures) + + _, err := keepers.ContractKeeper.Create(ctx, nil, hackatomWasm, nil) + require.Error(t, err, "nil creator is not allowed") +} + +func TestCreateNilWasmCode(t *testing.T) { + ctx, keepers := CreateTestInput(t, false, SupportedFeatures) + deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) + creator := createFakeFundedAccount(t, ctx, keepers.AccountKeeper, keepers.BankKeeper, deposit) + + _, err := keepers.ContractKeeper.Create(ctx, creator, nil, nil) + require.Error(t, err, "nil WASM code is not allowed") +} + +func TestCreateInvalidWasmCode(t *testing.T) { + ctx, keepers := CreateTestInput(t, false, SupportedFeatures) + deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) + creator := createFakeFundedAccount(t, ctx, keepers.AccountKeeper, keepers.BankKeeper, deposit) + + _, err := keepers.ContractKeeper.Create(ctx, creator, []byte("potatoes"), nil) + require.Error(t, err, "potatoes are not valid WASM code") +} + func TestCreateStoresInstantiatePermission(t *testing.T) { - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) var ( deposit = sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) myAddr sdk.AccAddress = bytes.Repeat([]byte{1}, sdk.AddrLen) @@ -93,7 +125,7 @@ func TestCreateStoresInstantiatePermission(t *testing.T) { }) fundAccounts(t, ctx, accKeeper, bankKeeper, myAddr, deposit) - codeID, err := keeper.Create(ctx, myAddr, wasmCode, nil) + codeID, err := keeper.Create(ctx, myAddr, hackatomWasm, nil) require.NoError(t, err) codeInfo := keepers.WasmKeeper.GetCodeInfo(ctx, codeID) @@ -111,9 +143,6 @@ func TestCreateWithParamPermissions(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) otherAddr := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - specs := map[string]struct { srcPermission types.AccessConfig expError *sdkerrors.Error @@ -141,7 +170,7 @@ func TestCreateWithParamPermissions(t *testing.T) { params := types.DefaultParams() params.CodeUploadAccess = spec.srcPermission keepers.WasmKeeper.setParams(ctx, params) - _, err := keeper.Create(ctx, creator, wasmCode, nil) + _, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.True(t, spec.expError.Is(err), err) if spec.expError != nil { return @@ -157,26 +186,23 @@ func TestCreateDuplicate(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - // create one copy - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) require.Equal(t, uint64(1), contractID) // create second copy - duplicateID, err := keeper.Create(ctx, creator, wasmCode, nil) + duplicateID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) require.Equal(t, uint64(2), duplicateID) // and verify both content is proper storedCode, err := keepers.WasmKeeper.GetByteCode(ctx, contractID) require.NoError(t, err) - require.Equal(t, wasmCode, storedCode) + require.Equal(t, hackatomWasm, storedCode) storedCode, err = keepers.WasmKeeper.GetByteCode(ctx, duplicateID) require.NoError(t, err) - require.Equal(t, wasmCode, storedCode) + require.Equal(t, hackatomWasm, storedCode) } func TestCreateWithSimulation(t *testing.T) { @@ -189,25 +215,22 @@ func TestCreateWithSimulation(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - // create this once in simulation mode - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) require.Equal(t, uint64(1), contractID) // then try to create it in non-simulation mode (should not fail) ctx, keepers = CreateTestInput(t, false, SupportedFeatures) accKeeper, keeper = keepers.AccountKeeper, keepers.ContractKeeper - contractID, err = keeper.Create(ctx, creator, wasmCode, nil) + contractID, err = keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) require.Equal(t, uint64(1), contractID) // and verify content code, err := keepers.WasmKeeper.GetByteCode(ctx, contractID) require.NoError(t, err) - require.Equal(t, code, wasmCode) + require.Equal(t, code, hackatomWasm) } func TestIsSimulationMode(t *testing.T) { @@ -243,7 +266,7 @@ func TestCreateWithGzippedPayload(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm.gzip") - require.NoError(t, err) + require.NoError(t, err, "reading gzipped WASM code") contractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) @@ -251,9 +274,7 @@ func TestCreateWithGzippedPayload(t *testing.T) { // and verify content storedCode, err := keepers.WasmKeeper.GetByteCode(ctx, contractID) require.NoError(t, err) - rawCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - require.Equal(t, rawCode, storedCode) + require.Equal(t, hackatomWasm, storedCode) } func TestInstantiate(t *testing.T) { @@ -263,10 +284,7 @@ func TestInstantiate(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - codeID, err := keeper.Create(ctx, creator, wasmCode, nil) + codeID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -318,9 +336,6 @@ func TestInstantiate(t *testing.T) { } func TestInstantiateWithDeposit(t *testing.T) { - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - var ( bob = bytes.Repeat([]byte{1}, sdk.AddrLen) fred = bytes.Repeat([]byte{2}, sdk.AddrLen) @@ -359,7 +374,7 @@ func TestInstantiateWithDeposit(t *testing.T) { if spec.fundAddr { fundAccounts(t, ctx, accKeeper, bankKeeper, spec.srcActor, sdk.NewCoins(sdk.NewInt64Coin("denom", 200))) } - contractID, err := keeper.Create(ctx, spec.srcActor, wasmCode, nil) + contractID, err := keeper.Create(ctx, spec.srcActor, hackatomWasm, nil) require.NoError(t, err) // when @@ -377,9 +392,6 @@ func TestInstantiateWithDeposit(t *testing.T) { } func TestInstantiateWithPermissions(t *testing.T) { - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - var ( deposit = sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) myAddr = bytes.Repeat([]byte{1}, sdk.AddrLen) @@ -427,7 +439,7 @@ func TestInstantiateWithPermissions(t *testing.T) { accKeeper, bankKeeper, keeper := keepers.AccountKeeper, keepers.BankKeeper, keepers.ContractKeeper fundAccounts(t, ctx, accKeeper, bankKeeper, spec.srcActor, deposit) - contractID, err := keeper.Create(ctx, myAddr, wasmCode, &spec.srcPermission) + contractID, err := keeper.Create(ctx, myAddr, hackatomWasm, &spec.srcPermission) require.NoError(t, err) _, _, err = keepers.ContractKeeper.Instantiate(ctx, contractID, spec.srcActor, nil, initMsgBz, "demo contract 1", nil) @@ -479,10 +491,7 @@ func TestExecute(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, topUp) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -555,9 +564,6 @@ func TestExecute(t *testing.T) { } func TestExecuteWithDeposit(t *testing.T) { - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - var ( bob = bytes.Repeat([]byte{1}, sdk.AddrLen) fred = bytes.Repeat([]byte{2}, sdk.AddrLen) @@ -622,7 +628,7 @@ func TestExecuteWithDeposit(t *testing.T) { if spec.fundAddr { fundAccounts(t, ctx, accKeeper, bankKeeper, spec.srcActor, sdk.NewCoins(sdk.NewInt64Coin("denom", 200))) } - codeID, err := keeper.Create(ctx, spec.srcActor, wasmCode, nil) + codeID, err := keeper.Create(ctx, spec.srcActor, hackatomWasm, nil) require.NoError(t, err) initMsg := HackatomExampleInitMsg{Verifier: spec.srcActor, Beneficiary: spec.beneficiary} @@ -669,10 +675,7 @@ func TestExecuteWithPanic(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, topUp) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -703,10 +706,7 @@ func TestExecuteWithCpuLoop(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, topUp) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -748,10 +748,7 @@ func TestExecuteWithStorageLoop(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, topUp) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -1006,12 +1003,10 @@ func TestMigrateWithDispatchedMessage(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 5000))) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) burnerCode, err := ioutil.ReadFile("./testdata/burner.wasm") require.NoError(t, err) - originalContractID, err := keeper.Create(ctx, creator, wasmCode, nil) + originalContractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) burnerContractID, err := keeper.Create(ctx, creator, burnerCode, nil) require.NoError(t, err) @@ -1163,9 +1158,7 @@ func TestSudo(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -1251,10 +1244,7 @@ func TestUpdateContractAdmin(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, topUp) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - originalContractID, err := keeper.Create(ctx, creator, wasmCode, nil) + originalContractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, anyAddr := keyPubAddr() @@ -1322,10 +1312,7 @@ func TestClearContractAdmin(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, topUp) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - originalContractID, err := keeper.Create(ctx, creator, wasmCode, nil) + originalContractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, anyAddr := keyPubAddr() diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index cba21cdf..730e6ad7 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -3,6 +3,7 @@ package keeper import ( "encoding/json" "fmt" + "github.com/CosmWasm/wasmd/x/wasm/types" channeltypes "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/types" diff --git a/x/wasm/module_test.go b/x/wasm/module_test.go index 2e5d9809..01b02d66 100644 --- a/x/wasm/module_test.go +++ b/x/wasm/module_test.go @@ -30,7 +30,6 @@ type testData struct { stakingKeeper stakingkeeper.Keeper } -// returns a cleanup function, which must be defered on func setupTest(t *testing.T) testData { ctx, keepers := CreateTestInput(t, false, "staking,stargate") cdc := keeper.MakeTestCodec(t)