github.com/Finschia/finschia-sdk@v0.48.1/x/bank/types/key_test.go (about) 1 package types_test 2 3 import ( 4 "errors" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 10 sdk "github.com/Finschia/finschia-sdk/types" 11 "github.com/Finschia/finschia-sdk/types/address" 12 "github.com/Finschia/finschia-sdk/x/bank/types" 13 ) 14 15 func cloneAppend(bz []byte, tail []byte) (res []byte) { 16 res = make([]byte, len(bz)+len(tail)) 17 copy(res, bz) 18 copy(res[len(bz):], tail) 19 return 20 } 21 22 func TestAddressFromBalancesStore(t *testing.T) { 23 addr, err := sdk.AccAddressFromBech32("link19tzp7e489drh9qfs9m84k2qe5a5yyknzen48tz") 24 require.NoError(t, err) 25 addrLen := len(addr) 26 require.Equal(t, 20, addrLen) 27 key := cloneAppend(address.MustLengthPrefix(addr), []byte("stake")) 28 29 tests := []struct { 30 name string 31 key []byte 32 wantErr bool 33 expectedKey sdk.AccAddress 34 }{ 35 {"valid", key, false, addr}, 36 {"#9111", []byte("\xff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), false, nil}, 37 {"empty", []byte(""), true, nil}, 38 {"invalid", []byte("3AA"), true, nil}, 39 } 40 41 for _, tc := range tests { 42 tc := tc 43 t.Run(tc.name, func(t *testing.T) { 44 t.Parallel() 45 addr, err := types.AddressFromBalancesStore(tc.key) 46 if tc.wantErr { 47 assert.Error(t, err) 48 assert.True(t, errors.Is(types.ErrInvalidKey, err)) 49 } else { 50 assert.NoError(t, err) 51 } 52 if len(tc.expectedKey) > 0 { 53 assert.Equal(t, tc.expectedKey, addr) 54 } 55 }) 56 } 57 }