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}