Files
ark/common/encoding_test.go
Louis Singer b536a9e652 New address encoding (#356)
* [common] rework address encoding

* new address encoding

* replace offchain address by vtxo output key in DB

* merge migrations files into init one

* fix txbuilder fixtures

* fix transaction events
2024-10-18 16:50:07 +02:00

69 lines
1.6 KiB
Go

package common_test
import (
"encoding/hex"
"encoding/json"
"log"
"os"
"testing"
common "github.com/ark-network/ark/common"
"github.com/stretchr/testify/require"
)
var f []byte
func init() {
var err error
f, err = os.ReadFile("fixtures/encoding.json")
if err != nil {
log.Fatal(err)
}
}
func TestAddressEncoding(t *testing.T) {
fixtures := struct {
Address struct {
Valid []struct {
Addr string `json:"addr"`
ExpectedUserKey string `json:"expectedUserKey"`
ExpectedAspKey string `json:"expectedAspKey"`
} `json:"valid"`
Invalid []struct {
Addr string `json:"addr"`
ExpectedError string `json:"expectedError"`
} `json:"invalid"`
} `json:"address"`
}{}
err := json.Unmarshal(f, &fixtures)
require.NoError(t, err)
t.Run("valid", func(t *testing.T) {
for _, f := range fixtures.Address.Valid {
addr, err := common.DecodeAddress(f.Addr)
require.NoError(t, err)
require.NotEmpty(t, addr.HRP)
require.NotNil(t, addr.Asp)
require.NotNil(t, addr.VtxoTapKey)
require.NoError(t, err)
require.Equal(t, f.ExpectedUserKey, hex.EncodeToString(addr.VtxoTapKey.SerializeCompressed()))
require.NoError(t, err)
require.Equal(t, f.ExpectedAspKey, hex.EncodeToString(addr.Asp.SerializeCompressed()))
encoded, err := addr.Encode()
require.NoError(t, err)
require.Equal(t, f.Addr, encoded)
}
})
t.Run("invalid", func(t *testing.T) {
for _, f := range fixtures.Address.Invalid {
addr, err := common.DecodeAddress(f.Addr)
require.EqualError(t, err, f.ExpectedError)
require.Nil(t, addr)
}
})
}