Skip to content

Commit

Permalink
chg: additional checks on address hex codec
Browse files Browse the repository at this point in the history
  • Loading branch information
marcello33 committed Oct 7, 2024
1 parent 590ce87 commit f4cdfd0
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 7 deletions.
22 changes: 15 additions & 7 deletions codec/address/hex_codec.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,18 @@ func NewHexCodec() address.Codec {
}

// StringToBytes encodes text to bytes
func (bc HexCodec) StringToBytes(text string) ([]byte, error) {
if len(strings.TrimSpace(text)) == 0 {
func (bc HexCodec) StringToBytes(hexAddr string) ([]byte, error) {
if len(strings.TrimSpace(hexAddr)) == 0 {
return []byte{}, errors.New("empty address string is not allowed")
}

bz := common.FromHex(text)
hexAddr = strings.ToLower(hexAddr)

if !has0xPrefix(hexAddr) {
hexAddr = "0x" + hexAddr
}

bz := common.FromHex(hexAddr)

if err := sdk.VerifyAddressFormat(bz); err != nil {
return nil, err
Expand All @@ -44,12 +50,14 @@ func (bc HexCodec) BytesToString(bz []byte) (string, error) {
return "", err
}

text := common.Bytes2Hex(bz)
hexAddr := common.Bytes2Hex(bz)

hexAddr = strings.ToLower(hexAddr)

if has0xPrefix(text) {
return text, nil
if has0xPrefix(hexAddr) {
return hexAddr, nil
} else {
return "0x" + text, nil
return "0x" + hexAddr, nil
}

}
Expand Down
36 changes: 36 additions & 0 deletions codec/address/hex_codec_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,18 @@ func TestHexCodec_BytesToString_InvalidBytes(t *testing.T) {
require.Error(t, err)
}

func TestHexCodec_StringToBytes_BytesToString_Symmetry_0x(t *testing.T) {
codec := NewHexCodec()
originalText := "0xa316fa9fa91700d7084d377bfdc81eb9f232f5ff"

bytes, err := codec.StringToBytes(originalText)
require.NoError(t, err)

resultText, err := codec.BytesToString(bytes)
require.NoError(t, err)
require.Equal(t, originalText, resultText)
}

func TestHexCodec_StringToBytes_BytesToString_Symmetry(t *testing.T) {
codec := NewHexCodec()
originalText := "0xa316fa9fa91700d7084d377bfdc81eb9f232f5ff"
Expand All @@ -72,3 +84,27 @@ func TestHexCodec_StringToBytes_BytesToString_Symmetry(t *testing.T) {
require.NoError(t, err)
require.Equal(t, originalText, resultText)
}

func TestHexCodec_BytesToString_StringToBytes_Symmetry_0x(t *testing.T) {
codec := NewHexCodec()
originalBytes := common.FromHex("0xa316fa9fa91700d7084d377bfdc81eb9f232f5ff")

text, err := codec.BytesToString(originalBytes)
require.NoError(t, err)

resultBytes, err := codec.StringToBytes(text)
require.NoError(t, err)
require.Equal(t, originalBytes, resultBytes)
}

func TestHexCodec_BytesToString_StringToBytes_Symmetry(t *testing.T) {
codec := NewHexCodec()
originalBytes := common.FromHex("a316fa9fa91700d7084d377bfdc81eb9f232f5ff")

text, err := codec.BytesToString(originalBytes)
require.NoError(t, err)

resultBytes, err := codec.StringToBytes(text)
require.NoError(t, err)
require.Equal(t, originalBytes, resultBytes)
}

0 comments on commit f4cdfd0

Please sign in to comment.