@@ -11,6 +11,7 @@ import (
1111 coreTypes "github.com/bcp-innovations/hyperlane-cosmos/x/core/types"
1212 "github.com/bcp-innovations/hyperlane-cosmos/x/warp/types"
1313 sdk "github.com/cosmos/cosmos-sdk/types"
14+ "github.com/cosmos/cosmos-sdk/types/address"
1415 . "github.com/onsi/ginkgo/v2"
1516 . "github.com/onsi/gomega"
1617)
@@ -29,6 +30,7 @@ TEST CASES - logic_collateral.go
2930* MsgRemoteTransfer (invalid) insufficient funds (Collateral)
3031* MsgRemoteTransfer & MsgRemoteReceiveCollateral (invalid) not enough collateral (Collateral)
3132* MsgRemoteTransfer && MsgRemoteReceiveCollateral (valid) (Collateral)
33+ * MsgRemoteTransfer && MsgRemoteReceiveCollateral (valid) 32-byte address (Collateral)
3234
3335*/
3436
@@ -366,4 +368,67 @@ var _ = Describe("logic_collateral.go", Ordered, func() {
366368 Expect (err ).To (BeNil ())
367369 Expect (s .App ().BankKeeper .GetBalance (s .Ctx (), sender .AccAddress , denom ).Amount ).To (Equal (senderBalance .Amount .Add (amount )))
368370 })
371+
372+ It ("MsgRemoteTransfer && MsgRemoteReceiveCollateral (valid) 32-byte address (Collateral)" , func () {
373+ // Arrange
374+ receiverAddress , _ := util .DecodeHexAddress ("0xd7194459d45619d04a5a0f9e78dc9594a0f37fd6da8382fe12ddda6f2f46d647" )
375+ remoteRouter := types.RemoteRouter {
376+ ReceiverDomain : 1 ,
377+ ReceiverContract : "0x934b867052ca9c65e33362112f35fb548f8732c2fe45f07b9c591958e865def0" ,
378+ Gas : math .NewInt (50000 ),
379+ }
380+
381+ amount := math .NewInt (100 )
382+ maxFee := sdk .NewCoin (denom , math .NewInt (250000 ))
383+
384+ tokenId , mailboxId , igpId , _ := createToken (s , & remoteRouter , owner .Address , sender .Address , types .HYP_TOKEN_TYPE_COLLATERAL )
385+ err := s .MintBaseCoins (sender .Address , 1_000_000 )
386+ Expect (err ).To (BeNil ())
387+
388+ // Act
389+ _ , err = s .RunTx (& types.MsgRemoteTransfer {
390+ Sender : sender .Address ,
391+ TokenId : tokenId ,
392+ DestinationDomain : remoteRouter .ReceiverDomain ,
393+ Recipient : receiverAddress ,
394+ Amount : amount ,
395+ CustomHookId : & igpId ,
396+ GasLimit : math .ZeroInt (),
397+ MaxFee : maxFee ,
398+ })
399+ Expect (err ).To (BeNil ())
400+
401+ receiverContract , err := util .DecodeHexAddress (remoteRouter .ReceiverContract )
402+ Expect (err ).To (BeNil ())
403+
404+ warpRecipient := address .Module (types .ModuleName , []byte ("collateral-receiver" ))
405+ Expect (len (warpRecipient )).To (Equal (address .Len ))
406+
407+ warpPayload , err := types .NewWarpPayload (warpRecipient , * big .NewInt (amount .Int64 ()))
408+ Expect (err ).To (BeNil ())
409+
410+ message := util.HyperlaneMessage {
411+ Version : 3 ,
412+ Nonce : 1 ,
413+ Origin : remoteRouter .ReceiverDomain ,
414+ Sender : receiverContract ,
415+ Destination : 0 ,
416+ Recipient : tokenId ,
417+ Body : warpPayload .Bytes (),
418+ }
419+
420+ receiverAcc := sdk .AccAddress (warpRecipient )
421+ receiverBalance := s .App ().BankKeeper .GetBalance (s .Ctx (), receiverAcc , denom )
422+
423+ _ , err = s .RunTx (& coreTypes.MsgProcessMessage {
424+ MailboxId : mailboxId ,
425+ Relayer : sender .Address ,
426+ Metadata : "" ,
427+ Message : message .String (),
428+ })
429+
430+ // Assert
431+ Expect (err ).To (BeNil ())
432+ Expect (s .App ().BankKeeper .GetBalance (s .Ctx (), receiverAcc , denom ).Amount ).To (Equal (receiverBalance .Amount .Add (amount )))
433+ })
369434})
0 commit comments