0g-chain/migrate/v0_16/cosmos_test.go
Ruaridh ffef832d45
Upgrade to sdk v0.44.5 and add IBC (#1106)
- Upgrade cosmos-sdk to v0.44.5 from v0.39.2
- Add Legacy Tx Endpoint for backwards compatibility
- Add IBC v1.2.3 Support

Co-authored-by: DracoLi <draco@dracoli.com>
Co-authored-by: drklee3 <derrick@dlee.dev>
Co-authored-by: denalimarsh <denalimarsh@gmail.com>
Co-authored-by: Draco Li <draco@kava.io>
Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com>
Co-authored-by: Kevin Davis <karzak@users.noreply.github.com>
Co-authored-by: Denali Marsh <denali@kava.io>
2022-01-07 17:39:27 -07:00

94 lines
3.0 KiB
Go

package v0_16
import (
"encoding/json"
"io/ioutil"
"path/filepath"
"testing"
"time"
"github.com/cosmos/cosmos-sdk/client"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
"github.com/stretchr/testify/assert"
"github.com/kava-labs/kava/app"
)
// Periodic vesting account periods will change depending on the genesis time.
// This test genesis time is used to be able to change the actual genesis time
// without breaking the tests.
var TestGenesisTime = time.Date(2021, 11, 30, 15, 0, 0, 0, time.UTC)
func TestCosmosMigrate_Gov(t *testing.T) {
// The gov json contains a gov app state with 3 different proposals.
// Two of the proposals are from cosmos while the 3rd one is kavadist/CommunityPoolMultiSpendProposal.
original := getTestDataJSON("appstate-gov-v15.json")
expected := getTestDataJSON("appstate-gov-v16.json")
actual := mustMigrateCosmosAppStateJSON(original)
assert.JSONEq(t, expected, actual)
}
func TestCosmosMigrate_Bank(t *testing.T) {
// The bank json tests migrating the bank, auth, and supply modules
// The json contains the kava ValidatorVestingAccount account and tests for
// both the correct proto migration & moving account coins and supply to the bank module.
original := getTestDataJSON("appstate-bank-v15.json")
expected := getTestDataJSON("appstate-bank-v16.json")
actual := mustMigrateCosmosAppStateJSON(original)
assert.JSONEq(t, expected, actual)
}
func TestCosmosMigrate_Distribution(t *testing.T) {
original := getTestDataJSON("appstate-distribution-v15.json")
expected := getTestDataJSON("appstate-distribution-v16.json")
actual := mustMigrateCosmosAppStateJSON(original)
assert.JSONEq(t, expected, actual)
}
func TestCosmosMigrate_Staking(t *testing.T) {
original := getTestDataJSON("appstate-staking-v15.json")
expected := getTestDataJSON("appstate-staking-v16.json")
actual := mustMigrateCosmosAppStateJSON(original)
assert.JSONEq(t, expected, actual)
}
func TestCosmosMigrate_Modules(t *testing.T) {
original := getTestDataJSON("appstate-cosmos-v15.json")
expected := getTestDataJSON("appstate-cosmos-v16.json")
actual := mustMigrateCosmosAppStateJSON(original)
assert.JSONEq(t, expected, actual)
}
// mustMigrateCosmosAppStateJSON migrate v15 app state json to v16
func mustMigrateCosmosAppStateJSON(appStateJson string) string {
var appState genutiltypes.AppMap
if err := json.Unmarshal([]byte(appStateJson), &appState); err != nil {
panic(err)
}
ctx := newClientContext()
appState = migrateV040(appState, ctx, TestGenesisTime)
appState = migrateV043(appState, ctx)
actual, err := json.Marshal(appState)
if err != nil {
panic(err)
}
return string(actual)
}
func getTestDataJSON(filename string) string {
file := filepath.Join("testdata", filename)
data, err := ioutil.ReadFile(file)
if err != nil {
panic(err)
}
return string(data)
}
func newClientContext() client.Context {
config := app.MakeEncodingConfig()
return client.Context{}.
WithCodec(config.Marshaler).
WithLegacyAmino(config.Amino).
WithInterfaceRegistry(config.InterfaceRegistry)
}