From 699f2b1e3bd50cb0cc217a8be8d81e029023889a Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Fri, 21 Jun 2024 08:28:28 -0700 Subject: [PATCH] fixup! test: revise chain info --- .../test/bootstrapTests/orchestration.test.ts | 12 ++--- .../scripts/testing/append-chain-info.js | 50 +++++++++++++++++++ .../src/proposals/revise-chain-info.js | 5 +- 3 files changed, 57 insertions(+), 10 deletions(-) create mode 100644 packages/builders/scripts/testing/append-chain-info.js diff --git a/packages/boot/test/bootstrapTests/orchestration.test.ts b/packages/boot/test/bootstrapTests/orchestration.test.ts index 9ded17b8f809..5deaca784a1a 100644 --- a/packages/boot/test/bootstrapTests/orchestration.test.ts +++ b/packages/boot/test/bootstrapTests/orchestration.test.ts @@ -242,23 +242,17 @@ test.serial('revise chain info', async t => { const agoricNames = await EV.vat('bootstrap').consumeItem('agoricNames'); - const agoricBefore = await EV(agoricNames).lookup('chain', 'agoric'); - t.like(agoricBefore, { chainId: 'agoric-3' }); - await t.throwsAsync(EV(agoricNames).lookup('chain', 'hot'), { message: '"nameKey" not found: "hot"', }); // Revise chain info in agoricNames with the fixture in this script await evalProposal( - buildProposal('@agoric/builders/scripts/testing/tweak-chain-info.js'), + buildProposal('@agoric/builders/scripts/testing/append-chain-info.js'), ); - const hotAfter = await EV(agoricNames).lookup('chain', 'hot'); - t.deepEqual(hotAfter, { allegedName: 'Hot New Chain', chainId: 'hot-1' }); - - const agoricAfter = await EV(agoricNames).lookup('chain', 'agoric'); - t.like(agoricAfter, { chainId: 'agoric-4' }); + const hotchain = await EV(agoricNames).lookup('chain', 'hot'); + t.deepEqual(hotchain, { allegedName: 'Hot New Chain', chainId: 'hot-1' }); const connection = await EV(agoricNames).lookup( 'chainConnection', diff --git a/packages/builders/scripts/testing/append-chain-info.js b/packages/builders/scripts/testing/append-chain-info.js new file mode 100644 index 000000000000..f141fe490748 --- /dev/null +++ b/packages/builders/scripts/testing/append-chain-info.js @@ -0,0 +1,50 @@ +/// +import { makeHelpers } from '@agoric/deploy-script-support'; + +/** @type {Record} */ +const chainInfo = { + hot: { + allegedName: 'Hot New Chain', + chainId: 'hot-1', + connections: { + 'cosmoshub-4': { + id: 'connection-99', + client_id: '07-tendermint-3', + counterparty: { + client_id: '07-tendermint-2', + connection_id: 'connection-1', + prefix: { + key_prefix: '', + }, + }, + state: 3 /* IBCConnectionState.STATE_OPEN */, + transferChannel: { + portId: 'transfer', + channelId: 'channel-1', + counterPartyChannelId: 'channel-1', + counterPartyPortId: 'transfer', + ordering: 1 /* Order.ORDER_UNORDERED */, + state: 3 /* IBCConnectionState.STATE_OPEN */, + version: 'ics20-1', + }, + }, + }, + }, +}; + +/** @type {import('@agoric/deploy-script-support/src/externalTypes.js').CoreEvalBuilder} */ +export const defaultProposalBuilder = async () => + harden({ + sourceSpec: '@agoric/orchestration/src/proposals/revise-chain-info.js', + getManifestCall: [ + 'getManifestForReviseChains', + { + chainInfo, + }, + ], + }); + +export default async (homeP, endowments) => { + const { writeCoreEval } = await makeHelpers(homeP, endowments); + await writeCoreEval('revise-chain-info', defaultProposalBuilder); +}; diff --git a/packages/orchestration/src/proposals/revise-chain-info.js b/packages/orchestration/src/proposals/revise-chain-info.js index 90b8e9765fd4..b864bfedfc15 100644 --- a/packages/orchestration/src/proposals/revise-chain-info.js +++ b/packages/orchestration/src/proposals/revise-chain-info.js @@ -5,8 +5,11 @@ const trace = makeTracer('ReviseChainInfo', true); /** @import {CosmosChainInfo} from '../types.js'; */ -// ??? what other keys does the second param ever have? /** + * This will add news values AND overwrite any existing values. Voters on a + * proposal of core-eval must be careful not to overwrite any values operating + * in production. + * * @param {BootstrapPowers} powers * @param {{ options: { chainInfo: Record } }} opt */