github.com/cosmos/cosmos-sdk@v0.50.10/x/group/migrations/v2/gen_state_test.go (about)

     1  package v2_test
     2  
     3  import (
     4  	"encoding/binary"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  
     9  	authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
    10  	"github.com/cosmos/cosmos-sdk/x/group"
    11  	v2 "github.com/cosmos/cosmos-sdk/x/group/migrations/v2"
    12  )
    13  
    14  func TestMigrateGenState(t *testing.T) {
    15  	tests := []struct {
    16  		name     string
    17  		oldState *authtypes.GenesisState
    18  		newState *authtypes.GenesisState
    19  	}{
    20  		{
    21  			name: "group policy accounts are replaced by base accounts",
    22  			oldState: authtypes.NewGenesisState(authtypes.DefaultParams(), authtypes.GenesisAccounts{
    23  				&authtypes.ModuleAccount{
    24  					BaseAccount: &authtypes.BaseAccount{
    25  						Address:       "cosmos1jv65s3grqf6v6jl3dp4t6c9t9rk99cd88lyufl",
    26  						AccountNumber: 3,
    27  					},
    28  					Name:        "distribution",
    29  					Permissions: []string{},
    30  				},
    31  				&authtypes.ModuleAccount{
    32  					BaseAccount: &authtypes.BaseAccount{
    33  						Address:       "cosmos1q32tjg5qm3n9fj8wjgpd7gl98prefntrckjkyvh8tntp7q33zj0s5tkjrk",
    34  						AccountNumber: 8,
    35  					},
    36  					Name:        "cosmos1q32tjg5qm3n9fj8wjgpd7gl98prefntrckjkyvh8tntp7q33zj0s5tkjrk",
    37  					Permissions: []string{},
    38  				},
    39  			}),
    40  			newState: authtypes.NewGenesisState(authtypes.DefaultParams(), authtypes.GenesisAccounts{
    41  				&authtypes.ModuleAccount{
    42  					BaseAccount: &authtypes.BaseAccount{
    43  						Address:       "cosmos1jv65s3grqf6v6jl3dp4t6c9t9rk99cd88lyufl",
    44  						AccountNumber: 3,
    45  					},
    46  					Name:        "distribution",
    47  					Permissions: []string{},
    48  				},
    49  				func() *authtypes.BaseAccount {
    50  					baseAccount := &authtypes.BaseAccount{
    51  						Address:       "cosmos1q32tjg5qm3n9fj8wjgpd7gl98prefntrckjkyvh8tntp7q33zj0s5tkjrk",
    52  						AccountNumber: 8,
    53  					}
    54  
    55  					k := make([]byte, 8)
    56  					binary.BigEndian.PutUint64(k, 0)
    57  					c, err := authtypes.NewModuleCredential(group.ModuleName, []byte{v2.GroupPolicyTablePrefix}, k)
    58  					if err != nil {
    59  						panic(err)
    60  					}
    61  					err = baseAccount.SetPubKey(c)
    62  					if err != nil {
    63  						panic(err)
    64  					}
    65  
    66  					return baseAccount
    67  				}(),
    68  			},
    69  			),
    70  		},
    71  	}
    72  
    73  	for _, tc := range tests {
    74  		t.Run(tc.name, func(t *testing.T) {
    75  			require.Error(t, authtypes.ValidateGenesis(*tc.oldState))
    76  			actualState := v2.MigrateGenState(tc.oldState)
    77  			require.Equal(t, tc.newState, actualState)
    78  			require.NoError(t, authtypes.ValidateGenesis(*actualState))
    79  		})
    80  	}
    81  }