@@ -33,6 +33,7 @@ type AcrossMessageHandlerTestSuite struct {
3333 mockHost * mock_host.MockHost
3434 mockFetcher * mock_tss.MockSaveDataFetcher
3535 mockPricer * mock_message.MockTokenPricer
36+ mockMatcher * mock_message.MockTokenMatcher
3637
3738 handler * message.AcrossMessageHandler
3839 sigChn chan interface {}
@@ -60,6 +61,7 @@ func (s *AcrossMessageHandlerTestSuite) SetupTest() {
6061 s .mockFetcher .EXPECT ().GetKeyshare ().AnyTimes ().Return (keyshare.ECDSAKeyshare {}, nil )
6162
6263 s .mockPricer = mock_message .NewMockTokenPricer (ctrl )
64+ s .mockMatcher = mock_message .NewMockTokenMatcher (ctrl )
6365
6466 pools := make (map [uint64 ]common.Address )
6567 pools [2 ] = common .HexToAddress ("0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5" )
@@ -74,8 +76,13 @@ func (s *AcrossMessageHandlerTestSuite) SetupTest() {
7476 Address : common .HexToAddress ("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" ),
7577 Decimals : 18 ,
7678 }
79+ tokens ["USDC" ] = evm.TokenConfig {
80+ Address : common .HexToAddress ("0x3355df6d4c9c3035724fd0e3914de96a5a83aaf4" ),
81+ Decimals : 6 ,
82+ }
7783 confirmations := make (map [uint64 ]uint64 )
7884 confirmations [1000 ] = 100
85+ confirmations [2000 ] = 200
7986
8087 s .handler = message .NewAcrossMessageHandler (
8188 1 ,
@@ -86,6 +93,7 @@ func (s *AcrossMessageHandlerTestSuite) SetupTest() {
8693 s .mockCommunication ,
8794 s .mockFetcher ,
8895 s .mockPricer ,
96+ s .mockMatcher ,
8997 s .sigChn ,
9098 tokens ,
9199 confirmations ,
@@ -259,3 +267,62 @@ func (s *AcrossMessageHandlerTestSuite) Test_HandleMessage_ValidLog() {
259267 err = <- errChn
260268 s .Nil (err )
261269}
270+
271+ func (s * AcrossMessageHandlerTestSuite ) Test_HandleMessage_ZeroOutputToken () {
272+ s .mockCommunication .EXPECT ().Broadcast (
273+ gomock .Any (),
274+ gomock .Any (),
275+ comm .AcrossMsg ,
276+ fmt .Sprintf ("%d-%s" , 1 , comm .AcrossSessionID ),
277+ ).Return (nil )
278+ p , _ := pstoremem .NewPeerstore ()
279+ s .mockHost .EXPECT ().Peerstore ().Return (p )
280+
281+ s .mockEventFilterer .EXPECT ().TransactionReceipt (
282+ gomock .Any (),
283+ gomock .Any (),
284+ ).Return (& types.Receipt {}, fmt .Errorf ("missing transaction receipt" ))
285+ s .mockEventFilterer .EXPECT ().TransactionReceipt (gomock .Any (), gomock .Any ()).Return (& types.Receipt {
286+ BlockNumber : big .NewInt (200 ),
287+ }, nil )
288+
289+ log , _ := hex .DecodeString ("0000000000000000000000003355df6d4c9c3035724fd0e3914de96a5a83aaf40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006d7cbe22000000000000000000000000000000000000000000000000000000006d789ac90000000000000000000000000000000000000000000000000000000067ce09230000000000000000000000000000000000000000000000000000000067ce5ea7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051d55999c7cd91b17af7276cbecd647dbc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000" )
290+ s .mockEventFilterer .EXPECT ().LatestBlock ().Return (big .NewInt (400 ), nil ).AnyTimes ()
291+ s .mockEventFilterer .EXPECT ().FilterLogs (gomock .Any (), gomock .Any ()).Return ([]types.Log {
292+ {
293+ Removed : false ,
294+ Data : log ,
295+ Topics : []common.Hash {
296+ {},
297+ {},
298+ {},
299+ {},
300+ },
301+ },
302+ }, nil )
303+ s .mockCoordinator .EXPECT ().Execute (gomock .Any (), gomock .Any (), gomock .Any (), gomock .Any ()).Return (nil )
304+ s .mockPricer .EXPECT ().TokenPrice ("USDC" ).Return (0.99 , nil )
305+ s .mockMatcher .EXPECT ().DestinationToken (gomock .Any (), "USDC" ).Return (common.Address {}, nil )
306+
307+ errChn := make (chan error , 1 )
308+ ad := message.AcrossData {
309+ ErrChn : errChn ,
310+ DepositId : big .NewInt (100 ),
311+ Nonce : big .NewInt (101 ),
312+ LiquidityPool : common .HexToAddress ("0xbe526bA5d1ad94cC59D7A79d99A59F607d31A657" ),
313+ Caller : common .HexToAddress ("0x5ECF7351930e4A251193aA022Ef06249C6cBfa27" ),
314+ }
315+ m := & coreMessage.Message {
316+ Data : ad ,
317+ Source : 1 ,
318+ Destination : 2 ,
319+ }
320+
321+ prop , err := s .handler .HandleMessage (m )
322+
323+ s .Nil (prop )
324+ s .Nil (err )
325+
326+ err = <- errChn
327+ s .Nil (err )
328+ }
0 commit comments