From 12178b524f8ea92cf30b2d6542402674bc2310e6 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Wed, 31 Mar 2021 15:48:16 +0200 Subject: [PATCH] stargate: Add tests for IBC transfer conversion --- packages/stargate/src/aminotypes.spec.ts | 73 ++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/packages/stargate/src/aminotypes.spec.ts b/packages/stargate/src/aminotypes.spec.ts index f4067fc1..ed036d85 100644 --- a/packages/stargate/src/aminotypes.spec.ts +++ b/packages/stargate/src/aminotypes.spec.ts @@ -2,6 +2,7 @@ import { encodeBech32Pubkey } from "@cosmjs/amino"; import { fromBase64 } from "@cosmjs/encoding"; import { coin, coins } from "@cosmjs/proto-signing"; +import Long from "long"; import { AminoMsgBeginRedelegate, @@ -12,6 +13,7 @@ import { AminoMsgMultiSend, AminoMsgSend, AminoMsgSetWithdrawAddress, + AminoMsgTransfer, AminoMsgUndelegate, AminoMsgWithdrawDelegatorReward, AminoMsgWithdrawValidatorCommission, @@ -31,6 +33,7 @@ import { MsgEditValidator, MsgUndelegate, } from "./codec/cosmos/staking/v1beta1/tx"; +import { MsgTransfer } from "./codec/ibc/applications/transfer/v1/tx"; describe("AminoTypes", () => { describe("toAmino", () => { @@ -315,6 +318,41 @@ describe("AminoTypes", () => { expect(aminoMsg).toEqual(expected); }); + it("works for MsgTransfer", () => { + const msg: MsgTransfer = { + sourcePort: "testport", + sourceChannel: "testchannel", + token: coin(1234, "utest"), + sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6", + receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5", + timeoutHeight: { + revisionHeight: Long.fromNumber(123, true), + revisionNumber: Long.fromNumber(456, true), + }, + timeoutTimestamp: Long.fromNumber(789, true), + }; + const aminoMsg = new AminoTypes().toAmino({ + typeUrl: "/ibc.applications.transfer.v1.MsgTransfer", + value: msg, + }); + const expected: AminoMsgTransfer = { + type: "cosmos-sdk/MsgTransfer", + value: { + source_port: "testport", + source_channel: "testchannel", + token: coin(1234, "utest"), + sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6", + receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5", + timeout_height: { + revision_height: 123, + revision_number: 456, + }, + timeout_timestamp: 789, + }, + }; + expect(aminoMsg).toEqual(expected); + }); + it("works with custom type url", () => { const msg = { foo: "bar", @@ -588,6 +626,41 @@ describe("AminoTypes", () => { }); }); + it("works for MsgTransfer", () => { + const aminoMsg: AminoMsgTransfer = { + type: "cosmos-sdk/MsgTransfer", + value: { + source_port: "testport", + source_channel: "testchannel", + token: coin(1234, "utest"), + sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6", + receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5", + timeout_height: { + revision_height: 123, + revision_number: 456, + }, + timeout_timestamp: 789, + }, + }; + const msg = new AminoTypes().fromAmino(aminoMsg); + const expectedValue: MsgTransfer = { + sourcePort: "testport", + sourceChannel: "testchannel", + token: coin(1234, "utest"), + sender: "cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6", + receiver: "cosmos10dyr9899g6t0pelew4nvf4j5c3jcgv0r73qga5", + timeoutHeight: { + revisionHeight: Long.fromNumber(123, true), + revisionNumber: Long.fromNumber(456, true), + }, + timeoutTimestamp: Long.fromNumber(789, true), + }; + expect(msg).toEqual({ + typeUrl: "/ibc.applications.transfer.v1.MsgTransfer", + value: expectedValue, + }); + }); + it("works for custom type url", () => { const aminoMsg = { type: "my-sdk/CustomType",