|
1 | 1 | package transfer_test
|
2 | 2 |
|
3 | 3 | import (
|
| 4 | + "fmt" |
4 | 5 | "math"
|
5 | 6 |
|
| 7 | + "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" |
| 8 | + sdk "github.com/cosmos/cosmos-sdk/types" |
6 | 9 | capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types"
|
7 | 10 |
|
8 | 11 | "github.com/cosmos/ibc-go/v7/modules/apps/transfer"
|
9 | 12 | "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types"
|
10 | 13 | channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
|
11 | 14 | host "github.com/cosmos/ibc-go/v7/modules/core/24-host"
|
| 15 | + ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported" |
12 | 16 | ibctesting "github.com/cosmos/ibc-go/v7/testing"
|
13 | 17 | )
|
14 | 18 |
|
@@ -239,3 +243,34 @@ func (suite *TransferTestSuite) TestOnChanOpenAck() {
|
239 | 243 | })
|
240 | 244 | }
|
241 | 245 | }
|
| 246 | + |
| 247 | +func (suite *TransferTestSuite) TestUnmarshalPacketData() { |
| 248 | + var ( |
| 249 | + sender = sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address()).String() |
| 250 | + receiver = sdk.AccAddress(secp256k1.GenPrivKey().PubKey().Address()).String() |
| 251 | + denom = "transfer/channel-0/atom" |
| 252 | + amount = "100" |
| 253 | + ) |
| 254 | + |
| 255 | + expPacketData := types.FungibleTokenPacketData{ |
| 256 | + Denom: denom, |
| 257 | + Amount: amount, |
| 258 | + Sender: sender, |
| 259 | + Receiver: receiver, |
| 260 | + Memo: fmt.Sprintf(`{"callbacks": {"src_callback_address": "%s", "dest_callback_address": "%s"}}`, sender, receiver), |
| 261 | + } |
| 262 | + |
| 263 | + packetData, err := transfer.IBCModule{}.UnmarshalPacketData(expPacketData.GetBytes()) |
| 264 | + suite.Require().NoError(err) |
| 265 | + suite.Require().Equal(expPacketData, packetData) |
| 266 | + |
| 267 | + callbackPacketData, ok := packetData.(ibcexported.CallbackPacketData) |
| 268 | + suite.Require().True(ok) |
| 269 | + suite.Require().Equal(sender, callbackPacketData.GetSourceCallbackAddress(), "incorrect source callback address") |
| 270 | + suite.Require().Equal(receiver, callbackPacketData.GetDestCallbackAddress(), "incorrect destination callback address") |
| 271 | + |
| 272 | + invalidPacketData := []byte("invalid packet data") |
| 273 | + packetData, err = transfer.IBCModule{}.UnmarshalPacketData(invalidPacketData) |
| 274 | + suite.Require().Error(err) |
| 275 | + suite.Require().Nil(packetData) |
| 276 | +} |
0 commit comments