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}