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  }