arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
hermez-node/common/l1tx_test.go
common/l1tx_test.goRaw
 1package common
 2
 3import (
 4	"math/big"
 5	"testing"
 6
 7	ethCommon "github.com/ethereum/go-ethereum/common"
 8	"github.com/iden3/go-iden3-crypto/babyjub"
 9	"github.com/iden3/go-iden3-crypto/utils"
10	"github.com/stretchr/testify/assert"
11	"github.com/stretchr/testify/require"
12)
13
14func TestL1TxByteParsers(t *testing.T) {
15	var pkComp babyjub.PublicKeyComp
16	err := pkComp.UnmarshalText([]byte("0x56ca90f80d7c374ae7485e9bcc47d4ac399460948da6aeeb899311097925a72c"))
17	require.Nil(t, err)
18
19	pk, err := pkComp.Decompress()
20	require.Nil(t, err)
21
22	l1Tx := &L1Tx{
23		ToIdx:       3,
24		TokenID:     5,
25		Amount:      big.NewInt(1),
26		LoadAmount:  big.NewInt(2),
27		FromIdx:     2,
28		FromBJJ:     pk,
29		FromEthAddr: ethCommon.HexToAddress("0xc58d29fA6e86E4FAe04DDcEd660d45BCf3Cb2370"),
30	}
31
32	expected, err := utils.HexDecode("c58d29fa6e86e4fae04ddced660d45bcf3cb237056ca90f80d7c374ae7485e9bcc47d4ac399460948da6aeeb899311097925a72c0000000000020002000100000005000000000003")
33	require.Nil(t, err)
34
35	encodedData, err := l1Tx.Bytes(32)
36	require.Nil(t, err)
37	assert.Equal(t, expected, encodedData)
38
39	decodedData, err := L1TxFromBytes(encodedData)
40	require.Nil(t, err)
41	assert.Equal(t, l1Tx, decodedData)
42
43	encodedData2, err := decodedData.Bytes(32)
44	require.Nil(t, err)
45	assert.Equal(t, encodedData, encodedData2)
46
47	// expect error if length!=68
48	_, err = L1TxFromBytes(encodedData[:66])
49	require.NotNil(t, err)
50	_, err = L1TxFromBytes([]byte{})
51	require.NotNil(t, err)
52	_, err = L1TxFromBytes(nil)
53	require.NotNil(t, err)
54}