github.com/Finschia/finschia-sdk@v0.49.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, 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 t.Run(tc.name, func(t *testing.T) { 43 t.Parallel() 44 addr, err := types.AddressFromBalancesStore(tc.key) 45 if tc.wantErr { 46 assert.Error(t, err) 47 assert.True(t, errors.Is(types.ErrInvalidKey, err)) 48 } else { 49 assert.NoError(t, err) 50 } 51 if len(tc.expectedKey) > 0 { 52 assert.Equal(t, tc.expectedKey, addr) 53 } 54 }) 55 } 56 }