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 TestNewL1Tx(t *testing.T) {
15	toForge := new(int64)
16	*toForge = 123456
17	fromIdx := new(Idx)
18	*fromIdx = 300
19	l1Tx := &L1Tx{
20		ToForgeL1TxsNum: toForge,
21		Position:        71,
22		ToIdx:           301,
23		TokenID:         5,
24		Amount:          big.NewInt(1),
25		LoadAmount:      big.NewInt(2),
26		FromIdx:         fromIdx,
27	}
28	l1Tx, err := NewL1Tx(l1Tx)
29	assert.Nil(t, err)
30	assert.Equal(t, "0x01000000000001e240004700", l1Tx.TxID.String())
31}
32
33func TestL1TxByteParsers(t *testing.T) {
34	var pkComp babyjub.PublicKeyComp
35	err := pkComp.UnmarshalText([]byte("0x56ca90f80d7c374ae7485e9bcc47d4ac399460948da6aeeb899311097925a72c"))
36	require.Nil(t, err)
37
38	pk, err := pkComp.Decompress()
39	require.Nil(t, err)
40
41	fromIdx := new(Idx)
42	*fromIdx = 2
43	l1Tx := &L1Tx{
44		ToIdx:       3,
45		TokenID:     5,
46		Amount:      big.NewInt(1),
47		LoadAmount:  big.NewInt(2),
48		FromIdx:     fromIdx,
49		FromBJJ:     pk,
50		FromEthAddr: ethCommon.HexToAddress("0xc58d29fA6e86E4FAe04DDcEd660d45BCf3Cb2370"),
51	}
52
53	expected, err := utils.HexDecode("c58d29fa6e86e4fae04ddced660d45bcf3cb237056ca90f80d7c374ae7485e9bcc47d4ac399460948da6aeeb899311097925a72c0000000000020002000100000005000000000003")
54	require.Nil(t, err)
55
56	encodedData, err := l1Tx.Bytes(32)
57	require.Nil(t, err)
58	assert.Equal(t, expected, encodedData)
59
60	decodedData, err := L1TxFromBytes(encodedData)
61	require.Nil(t, err)
62	assert.Equal(t, l1Tx, decodedData)
63
64	encodedData2, err := decodedData.Bytes(32)
65	require.Nil(t, err)
66	assert.Equal(t, encodedData, encodedData2)
67
68	// expect error if length!=68
69	_, err = L1TxFromBytes(encodedData[:66])
70	require.NotNil(t, err)
71	_, err = L1TxFromBytes([]byte{})
72	require.NotNil(t, err)
73	_, err = L1TxFromBytes(nil)
74	require.NotNil(t, err)
75}