Skip to content

Commit

Permalink
add migration for authorization list
Browse files Browse the repository at this point in the history
  • Loading branch information
kingpinXD committed Jun 7, 2024
1 parent 3f02526 commit dfd111d
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 1 deletion.
23 changes: 23 additions & 0 deletions x/authority/keeper/migrator.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package keeper

import (
sdk "github.com/cosmos/cosmos-sdk/types"
v2 "github.com/zeta-chain/zetacore/x/authority/migrations/v2"
)

// Migrator is a struct for handling in-place store migrations.
type Migrator struct {
authorityKeeper Keeper
}

// NewMigrator returns a new Migrator for the authority module.
func NewMigrator(keeper Keeper) Migrator {
return Migrator{
authorityKeeper: keeper,
}
}

// Migrate1to2 migrates the authority store from consensus version 1 to 2
func (m Migrator) Migrate1to2(ctx sdk.Context) error {
return v2.MigrateStore(ctx, m.authorityKeeper)
}
20 changes: 20 additions & 0 deletions x/authority/migrations/v2/migrate.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package v2

import (
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/zeta-chain/zetacore/x/authority/types"
)

type authorityKeeper interface {
SetAuthorizationList(ctx sdk.Context, list types.AuthorizationList)
}

// MigrateStore migrates the authority module state from the consensus version 1 to 2
func MigrateStore(
ctx sdk.Context,
keeper authorityKeeper,
) error {
ctx.Logger().Info("Migrating authority store from version 1 to 2")
keeper.SetAuthorizationList(ctx, types.DefaultAuthorizationsList())
return nil
}
27 changes: 27 additions & 0 deletions x/authority/migrations/v2/migrate_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package v2_test

import (
"testing"

"github.com/stretchr/testify/require"
keepertest "github.com/zeta-chain/zetacore/testutil/keeper"
v2 "github.com/zeta-chain/zetacore/x/authority/migrations/v2"
"github.com/zeta-chain/zetacore/x/authority/types"
)

func TestMigrateStore(t *testing.T) {
t.Run("Set authorization list", func(t *testing.T) {
k, ctx := keepertest.AuthorityKeeper(t)

list, found := k.GetAuthorizationList(ctx)
require.False(t, found)
require.Equal(t, types.AuthorizationList{}, list)

err := v2.MigrateStore(ctx, *k)
require.NoError(t, err)

list, found = k.GetAuthorizationList(ctx)
require.True(t, found)
require.Equal(t, types.DefaultAuthorizationsList(), list)
})
}
6 changes: 5 additions & 1 deletion x/authority/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,10 @@ func (am AppModule) Name() string {
func (am AppModule) RegisterServices(cfg module.Configurator) {
types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper))
types.RegisterQueryServer(cfg.QueryServer(), am.keeper)
m := keeper.NewMigrator(am.keeper)
if err := cfg.RegisterMigration(types.ModuleName, 1, m.Migrate1to2); err != nil {
panic(err)
}
}

// RegisterInvariants registers the authority module's invariants.
Expand All @@ -146,7 +150,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw
}

// ConsensusVersion implements AppModule/ConsensusVersion.
func (AppModule) ConsensusVersion() uint64 { return 1 }
func (AppModule) ConsensusVersion() uint64 { return 2 }

// BeginBlock executes all ABCI BeginBlock logic respective to the authority module.
func (am AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) {}
Expand Down
5 changes: 5 additions & 0 deletions x/authority/types/authorization_list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,11 @@ func TestAuthorizationList_Validate(t *testing.T) {
authorizations types.AuthorizationList
expectedError error
}{
{
name: "validate default authorizations list",
authorizations: types.DefaultAuthorizationsList(),
expectedError: nil,
},
{
name: "validate successfully",
authorizations: types.AuthorizationList{Authorizations: []types.Authorization{
Expand Down

0 comments on commit dfd111d

Please sign in to comment.