github.com/status-im/status-go@v1.1.0/services/wallet/common/log_paser_test.go (about)

     1  package common
     2  
     3  import (
     4  	"encoding/hex"
     5  	"encoding/json"
     6  	"testing"
     7  
     8  	"github.com/ethereum/go-ethereum/common"
     9  	"github.com/ethereum/go-ethereum/core/types"
    10  
    11  	"github.com/stretchr/testify/require"
    12  )
    13  
    14  func TestLegacyTxDataContainsAddress(t *testing.T) {
    15  	txDataString := "deace8f5000000000000000000000000000000000000000000000000000000000000000a00000000000000000" +
    16  		"0000000d6255ae13ac335b347aa846802ad6ac39dd2543a000000000000000000000000000000000000000000000000002c68af0bb" +
    17  		"14000000000000000000000000000000000000000000000000000002c29ddae0698830000000000000000000000000000000000000" +
    18  		"0000000000000000000649a33b3000000000000000000000000710bda329b2a6224e4b44833de30f38e7f81d564000000000000000" +
    19  		"0000000000000000000000000000000000000000000000000"
    20  
    21  	txData, err := hex.DecodeString(txDataString)
    22  	require.NoError(t, err)
    23  
    24  	containedAddress := common.HexToAddress("0xd6255aE13aC335b347aa846802aD6aC39dd2543a")
    25  	randomAddress := common.HexToAddress("0xb8901acB165ed027E32754E0FFe830802919727f")
    26  
    27  	require.True(t, TxDataContainsAddress(types.LegacyTxType, txData, containedAddress))
    28  	require.False(t, TxDataContainsAddress(types.LegacyTxType, txData, randomAddress))
    29  }
    30  
    31  func TestOptDepositTxDataContainsAddress(t *testing.T) {
    32  	txDataString := "d764ad0b00010000000000000000000000000000000000000000000000000000000019b7000000000000000000000000a45df1a388049fb8d76e72d350d24e2c3f7aebd100000000000000000000000083f6244bd87662118d96d9a6d44f09dfff14b30e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000249f000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000c4cc29a306000000000000000000000000e813d34c0525e0fbb1e6478b86d40b83603c200800000000000000000000000000000000000000000000000000470de4df8200000000000000000000000000000000000000000000000000000046a8e2b55dea2100000000000000000000000000000000000000000000000000000000649d6931000000000000000000000000710bda329b2a6224e4b44833de30f38e7f81d564000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    33  
    34  	txData, err := hex.DecodeString(txDataString)
    35  	require.NoError(t, err)
    36  
    37  	containedAddress := common.HexToAddress("0xE813d34C0525E0fBb1e6478B86D40B83603C2008")
    38  	randomAddress := common.HexToAddress("0xb8901acB165ed027E32754E0FFe830802919727f")
    39  
    40  	require.True(t, TxDataContainsAddress(types.OptimismDepositTxType, txData, containedAddress))
    41  	require.False(t, TxDataContainsAddress(types.OptimismDepositTxType, txData, randomAddress))
    42  }
    43  
    44  func TestLogHopBridgeTransferSentToL2(t *testing.T) {
    45  	eventLogTestData := `{"address":"0xb8901acb165ed027e32754e0ffe830802919727f","topics":["0x0a0607688c86ec1775abcdbab7b33a3a35a6c9cde677c9be880150c231cc6b0b","0x000000000000000000000000000000000000000000000000000000000000000a","0x000000000000000000000000d6255ae13ac335b347aa846802ad6ac39dd2543a","0x000000000000000000000000710bda329b2a6224e4b44833de30f38e7f81d564"],"data":"0x000000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000000000002c29ddae06988300000000000000000000000000000000000000000000000000000000649a33b30000000000000000000000000000000000000000000000000000000000000000","blockNumber":"0x10b4baf","transactionHash":"0xfc4687f8d985ef0cc86d79a0c7abc582552b8bae0e13a90c59eeadf7e64ed569","transactionIndex":"0x48","blockHash":"0xea7f003d02a43be4dfec836803a033c0ce22ecf9a48d4a3ed3700db9c722d994","logIndex":"0xfa","removed":false}`
    46  	var eventLog types.Log
    47  	err := json.Unmarshal([]byte(eventLogTestData), &eventLog)
    48  	require.NoError(t, err)
    49  
    50  	eventType := GetEventType(&eventLog)
    51  	require.Equal(t, HopBridgeTransferSentToL2EventType, eventType)
    52  }
    53  
    54  func TestLogHopBridgeTransferFromL1Completed(t *testing.T) {
    55  	eventLogTestData := `{"address":"0x83f6244Bd87662118d96D9a6D44f09dffF14b30E","topics":["0x320958176930804eb66c2343c7343fc0367dc16249590c0f195783bee199d094","0x000000000000000000000000d6255ae13ac335b347aa846802ad6ac39dd2543a","0x000000000000000000000000710bda329b2a6224e4b44833de30f38e7f81d564"],"data":"0x000000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000000000002c29ddae06988300000000000000000000000000000000000000000000000000000000649a33b30000000000000000000000000000000000000000000000000000000000000000","blockNumber":"0x64E8FF0","transactionHash":"0x67a6f407824be389e6a960ebb1ddbe7e2f24a809a86b50452ee3dc70cc708d00","transactionIndex":"0x48","blockHash":"0xea7f003d02a43be4dfec836803a033c0ce22ecf9a48d4a3ed3700db9c722d994","logIndex":"0xfa","removed":false}`
    56  	var eventLog types.Log
    57  	err := json.Unmarshal([]byte(eventLogTestData), &eventLog)
    58  	require.NoError(t, err)
    59  
    60  	eventType := GetEventType(&eventLog)
    61  	require.Equal(t, HopBridgeTransferFromL1CompletedEventType, eventType)
    62  }