From d89a7271baaeaf1ef28f995a03bc37ad0ae6d99f Mon Sep 17 00:00:00 2001 From: 0xPatrick Date: Wed, 27 Nov 2024 22:52:06 -0500 Subject: [PATCH] test(fast-usdc): support pfm transfers --- .../fast-usdc/test/fast-usdc.contract.test.ts | 31 ++++++++++++------ .../snapshots/fast-usdc.contract.test.ts.md | 3 ++ .../snapshots/fast-usdc.contract.test.ts.snap | Bin 5637 -> 5661 bytes packages/fast-usdc/test/supports.ts | 3 +- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/packages/fast-usdc/test/fast-usdc.contract.test.ts b/packages/fast-usdc/test/fast-usdc.contract.test.ts index 38e80e76e71..4648332272f 100644 --- a/packages/fast-usdc/test/fast-usdc.contract.test.ts +++ b/packages/fast-usdc/test/fast-usdc.contract.test.ts @@ -633,10 +633,14 @@ const makeCustomer = ( const myMsg = local.find(lm => { if (lm.type !== 'VLOCALCHAIN_EXECUTE_TX') return false; const [ibcTransferMsg] = lm.messages; + // support advances to noble + other chains + const receiver = + ibcTransferMsg.receiver === 'pfm' + ? JSON.parse(ibcTransferMsg.memo).forward.receiver + : ibcTransferMsg.receiver; return ( ibcTransferMsg['@type'] === - '/ibc.applications.transfer.v1.MsgTransfer' && - ibcTransferMsg.receiver === EUD + '/ibc.applications.transfer.v1.MsgTransfer' && receiver === EUD ); }); if (!myMsg) { @@ -652,17 +656,24 @@ const makeCustomer = ( { amount: String(toReceive.value), denom: uusdcOnAgoric }, 'C4', ); - - t.log(who, 'sees', ibcTransferMsg.token, 'sent to', EUD); - // TODO #10445 expect PFM memo - t.is(ibcTransferMsg.memo, '', 'TODO expecting PFM memo'); - - // TODO #10445 expect routing through noble, not osmosis + if (!EUD.startsWith('noble')) { + t.like( + JSON.parse(ibcTransferMsg.memo), + { + forward: { + receiver: EUD, + }, + }, + 'PFM receiver is EUD', + ); + } else { + t.like(ibcTransferMsg, { receiver: EUD }); + } t.is( ibcTransferMsg.sourceChannel, - fetchedChainInfo.agoric.connections['osmosis-1'].transferChannel + fetchedChainInfo.agoric.connections['noble-1'].transferChannel .channelId, - 'TODO expecting routing through Noble', + 'expect routing through Noble', ); }, }); diff --git a/packages/fast-usdc/test/snapshots/fast-usdc.contract.test.ts.md b/packages/fast-usdc/test/snapshots/fast-usdc.contract.test.ts.md index ece2a6e83cd..72890a09ece 100644 --- a/packages/fast-usdc/test/snapshots/fast-usdc.contract.test.ts.md +++ b/packages/fast-usdc/test/snapshots/fast-usdc.contract.test.ts.md @@ -43,6 +43,7 @@ Generated by [AVA](https://avajs.dev). bech32Prefix: 'agoric', chainId: 'agoric-3', icqEnabled: false, + pfmEnabled: true, stakingTokens: [ { denom: 'ubld', @@ -53,11 +54,13 @@ Generated by [AVA](https://avajs.dev). bech32Prefix: 'noble', chainId: 'noble-1', icqEnabled: false, + pfmEnabled: true, }, osmosis: { bech32Prefix: 'osmo', chainId: 'osmosis-1', icqEnabled: true, + pfmEnabled: true, stakingTokens: [ { denom: 'uosmo', diff --git a/packages/fast-usdc/test/snapshots/fast-usdc.contract.test.ts.snap b/packages/fast-usdc/test/snapshots/fast-usdc.contract.test.ts.snap index b4f6db225e5d35f97fc59405cd299d04a75b129f..c289cbdd0bb7e35e0f224dfca6d4478ef07e313f 100644 GIT binary patch literal 5661 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 diff --git a/packages/fast-usdc/test/supports.ts b/packages/fast-usdc/test/supports.ts index 2c9154ab227..7a64bcf2ff2 100644 --- a/packages/fast-usdc/test/supports.ts +++ b/packages/fast-usdc/test/supports.ts @@ -4,6 +4,7 @@ import { makeFakeStorageKit } from '@agoric/internal/src/storage-test-utils.js'; import { eventLoopIteration } from '@agoric/internal/src/testing-utils.js'; import { denomHash, + withChainCapabilities, type CosmosChainInfo, type Denom, } from '@agoric/orchestration'; @@ -196,7 +197,7 @@ export const commonSetup = async (t: ExecutionContext) => { ); const chainInfo = harden(() => { - const { agoric, osmosis, noble } = fetchedChainInfo; + const { agoric, osmosis, noble } = withChainCapabilities(fetchedChainInfo); return { agoric, osmosis, noble }; })();