diff --git a/multichain-testing/config.yaml b/multichain-testing/config.yaml index 320274650552..79c24cbf2642 100644 --- a/multichain-testing/config.yaml +++ b/multichain-testing/config.yaml @@ -18,12 +18,14 @@ chains: updateConfig: file: scripts/update-config.sh faucet: - enabled: false + enabled: true + type: starship ports: rest: 1317 rpc: 26657 exposer: 38087 grpc: 9090 + faucet: 8085 resources: cpu: 1 memory: 4Gi diff --git a/multichain-testing/test/tools/wallet.test.ts b/multichain-testing/test/tools/wallet.test.ts index 8667d5cbcfc3..7fcf24e168f5 100644 --- a/multichain-testing/test/tools/wallet.test.ts +++ b/multichain-testing/test/tools/wallet.test.ts @@ -1,5 +1,6 @@ import anyTest from '@endo/ses-ava/prepare-endo.js'; import type { TestFn } from 'ava'; +import type { Denom } from '@agoric/orchestration'; import { makeQueryClient } from '../../tools/query.js'; import { createWallet } from '../../tools/wallet.js'; import { sleep } from '../../tools/sleep.js'; @@ -7,41 +8,41 @@ import { commonSetup } from '../support.js'; const test = anyTest as TestFn>; -const walletScenario = test.macro(async (t, scenario: string) => { - const { useChain } = await commonSetup(t); - - const prefix = useChain(scenario).chain.bech32_prefix; - const wallet = await createWallet(prefix); - const addr = (await wallet.getAccounts())[0].address; - t.regex(addr, new RegExp(`^${prefix}1`)); - t.log('Made temp wallet:', addr); - - const apiUrl = await useChain(scenario).getRestEndpoint(); - const queryClient = makeQueryClient(apiUrl); - t.log('Made query client'); - - const { balances } = await queryClient.queryBalances(addr); - t.log('Beginning balances:', balances); - t.deepEqual(balances, []); - - const { creditFromFaucet } = useChain(scenario); - t.log('Requesting faucet funds'); - - await creditFromFaucet(addr); - // XXX needed to avoid race condition between faucet POST and LCD Query - // see https://github.com/cosmology-tech/starship/issues/417 - await sleep(1000, t.log); - - const { balances: updatedBalances } = await queryClient.queryBalances(addr); - const expectedDenom = scenario === 'osmosis' ? 'uosmo' : 'uatom'; - t.like(updatedBalances, [{ denom: expectedDenom, amount: '10000000000' }]); - t.log('Updated balances:', updatedBalances); - - const bondDenom = useChain(scenario).chain.staking?.staking_tokens?.[0].denom; - t.truthy(bondDenom, 'bond denom found'); - const { balance } = await queryClient.queryBalance(addr, bondDenom!); - t.deepEqual(balance, { denom: bondDenom, amount: '10000000000' }); +const walletScenario = test.macro({ + title: (_, chainName: string, denom: Denom) => + `create a wallet and get ${denom} on ${chainName}`, + exec: async (t, chainName: string, denom: Denom) => { + const { useChain } = await commonSetup(t); + + const prefix = useChain(chainName).chain.bech32_prefix; + const wallet = await createWallet(prefix); + const addr = (await wallet.getAccounts())[0].address; + t.regex(addr, new RegExp(`^${prefix}1`)); + t.log('Made temp wallet:', addr); + + const apiUrl = await useChain(chainName).getRestEndpoint(); + const queryClient = makeQueryClient(apiUrl); + t.log('Made query client'); + + const { balances } = await queryClient.queryBalances(addr); + t.log('Beginning balances:', balances); + t.deepEqual(balances, []); + + const { creditFromFaucet } = useChain(chainName); + t.log('Requesting faucet funds'); + await creditFromFaucet(addr, denom); + // XXX needed to avoid race condition between faucet POST and LCD Query + // see https://github.com/cosmology-tech/starship/issues/417 + await sleep(1000, t.log); + + const { balance } = await queryClient.queryBalance(addr, denom); + t.log('Ending balance:', balance); + t.deepEqual(balance, { denom, amount: '10000000000' }); + }, }); -test('create a wallet and get tokens (osmosis)', walletScenario, 'osmosis'); -test('create a wallet and get tokens (cosmoshub)', walletScenario, 'cosmoshub'); +test(walletScenario, 'osmosis', 'uosmo'); +test(walletScenario, 'cosmoshub', 'uatom'); +test(walletScenario, 'agoric', 'ubld'); +test(walletScenario, 'agoric', 'uist'); +test(walletScenario, 'osmosis', 'uion');