From f09f31f296c174f99ecb8c8b7a2f284123d6cae2 Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Mon, 9 Aug 2021 12:32:43 -0600 Subject: [PATCH] test(vats): add a regression test for issue #3621 --- packages/SwingSet/src/vats/network/router.js | 5 +-- packages/vats/test/test-network.js | 33 ++++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 packages/vats/test/test-network.js diff --git a/packages/SwingSet/src/vats/network/router.js b/packages/SwingSet/src/vats/network/router.js index 16c4d6236eaa..75ab8a34f414 100644 --- a/packages/SwingSet/src/vats/network/router.js +++ b/packages/SwingSet/src/vats/network/router.js @@ -65,8 +65,9 @@ export default function makeRouter() { }); } /** - * @typedef {Protocol} RouterProtocol - * @property {(prefix: string, protocolHandler: ProtocolHandler) => void} registerProtocolHandler + * @typedef {Object} RouterProtocol + * @property {(prefix: string) => Promise} bind + * @property {(paths: string[], protocolHandler: ProtocolHandler) => void} registerProtocolHandler * @property {(prefix: string, protocolHandler: ProtocolHandler) => void} unregisterProtocolHandler */ diff --git a/packages/vats/test/test-network.js b/packages/vats/test/test-network.js new file mode 100644 index 000000000000..f5c97d0a4755 --- /dev/null +++ b/packages/vats/test/test-network.js @@ -0,0 +1,33 @@ +// @ts-check +// eslint-disable-next-line import/no-extraneous-dependencies +import { test } from '@agoric/swingset-vat/tools/prepare-test-env-ava'; + +import { E } from '@agoric/eventual-send'; +import { Far } from '@agoric/marshal'; + +import { buildRootObject as ibcBuildRootObject } from '../src/vat-ibc.js'; +import { buildRootObject as networkBuildRootObject } from '../src/vat-network.js'; + +test('network - ibc', async t => { + t.plan(2); + + const networkVat = E(networkBuildRootObject)(); + const ibcVat = E(ibcBuildRootObject)(); + + const callbacks = Far('ibcCallbacks', { + downcall: (method, params) => { + t.is(method, 'bindPort'); + t.deepEqual(params, { packet: { source_port: 'port-1' } }); + }, + }); + + const ibcHandler = await E(ibcVat).createInstance(callbacks); + await E(networkVat).registerProtocolHandler( + ['/ibc-port', '/ibc-hop'], + ibcHandler, + ); + + // Actually test the ibc port binding. + // TODO: Do more tests on the returned Port object. + await E(networkVat).bind('/ibc-port/'); +});