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)