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