mirror of https://github.com/certusone/wasmd.git
102 lines
2.9 KiB
Go
102 lines
2.9 KiB
Go
package v2_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/cometbft/cometbft/libs/rand"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
storetypes "cosmossdk.io/store/types"
|
|
|
|
"github.com/cosmos/cosmos-sdk/runtime"
|
|
"github.com/cosmos/cosmos-sdk/testutil"
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/cosmos/cosmos-sdk/types/address"
|
|
moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil"
|
|
paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
|
|
paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
|
|
|
|
"github.com/CosmWasm/wasmd/x/wasm"
|
|
v2 "github.com/CosmWasm/wasmd/x/wasm/migrations/v2"
|
|
"github.com/CosmWasm/wasmd/x/wasm/types"
|
|
)
|
|
|
|
func TestMigrate(t *testing.T) {
|
|
cfg := moduletestutil.MakeTestEncodingConfig(wasm.AppModuleBasic{})
|
|
cdc := cfg.Codec
|
|
var (
|
|
wasmStoreKey = storetypes.NewKVStoreKey(types.StoreKey)
|
|
paramsStoreKey = storetypes.NewKVStoreKey(paramstypes.StoreKey)
|
|
paramsTStoreKey = storetypes.NewTransientStoreKey(paramstypes.TStoreKey)
|
|
myAddress = sdk.AccAddress(rand.Bytes(address.Len))
|
|
)
|
|
specs := map[string]struct {
|
|
src v2.Params
|
|
}{
|
|
"one address": {
|
|
src: v2.Params{
|
|
CodeUploadAccess: v2.AccessConfig{
|
|
Permission: v2.AccessTypeOnlyAddress,
|
|
Address: myAddress.String(),
|
|
},
|
|
InstantiateDefaultPermission: v2.AccessTypeNobody,
|
|
},
|
|
},
|
|
"multiple addresses": {
|
|
src: v2.Params{
|
|
CodeUploadAccess: v2.AccessConfig{
|
|
Permission: v2.AccessTypeAnyOfAddresses,
|
|
Addresses: []string{myAddress.String(), sdk.AccAddress(rand.Bytes(address.Len)).String()},
|
|
},
|
|
InstantiateDefaultPermission: v2.AccessTypeEverybody,
|
|
},
|
|
},
|
|
"everybody": {
|
|
src: v2.Params{
|
|
CodeUploadAccess: v2.AccessConfig{
|
|
Permission: v2.AccessTypeEverybody,
|
|
},
|
|
InstantiateDefaultPermission: v2.AccessTypeEverybody,
|
|
},
|
|
},
|
|
"nobody": {
|
|
src: v2.Params{
|
|
CodeUploadAccess: v2.AccessConfig{
|
|
Permission: v2.AccessTypeNobody,
|
|
},
|
|
InstantiateDefaultPermission: v2.AccessTypeNobody,
|
|
},
|
|
},
|
|
}
|
|
for name, spec := range specs {
|
|
t.Run(name, func(t *testing.T) {
|
|
paramsKeeper := paramskeeper.NewKeeper(cdc, cfg.Amino, paramsStoreKey, paramsTStoreKey)
|
|
ctx := testutil.DefaultContextWithKeys(
|
|
map[string]*storetypes.KVStoreKey{
|
|
paramstypes.StoreKey: paramsStoreKey,
|
|
types.StoreKey: wasmStoreKey,
|
|
},
|
|
map[string]*storetypes.TransientStoreKey{
|
|
paramstypes.TStoreKey: paramsTStoreKey,
|
|
},
|
|
nil,
|
|
)
|
|
|
|
// register legacy parameters
|
|
params := spec.src
|
|
subspace := paramsKeeper.Subspace(types.ModuleName)
|
|
subspace.WithKeyTable(v2.ParamKeyTable())
|
|
subspace.SetParamSet(ctx, ¶ms)
|
|
|
|
// when
|
|
require.NoError(t, v2.MigrateStore(ctx, runtime.NewKVStoreService(wasmStoreKey), subspace, cdc))
|
|
|
|
var res v2.Params
|
|
bz := ctx.KVStore(wasmStoreKey).Get(types.ParamsKey)
|
|
require.NoError(t, cdc.Unmarshal(bz, &res))
|
|
assert.Equal(t, params, res)
|
|
})
|
|
}
|
|
}
|