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 TestL1TxCodec(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("c58d29fa6e86e4fae04ddced660d45bcf3cb237056ca90f80d7c374ae7485e9bcc47d4ac399460948da6aeeb899311097925a72c00000002000200010000000500000003")
33 require.Nil(t, err)
34
35 encodedData := l1Tx.Bytes(32)
36 assert.Equal(t, expected, encodedData)
37
38 decodedData, err := L1TxFromBytes(encodedData)
39 require.Nil(t, err)
40
41 encodedData2 := decodedData.Bytes(32)
42 assert.Equal(t, encodedData, encodedData2)
43}