From dc5f99339c491a4f09ea7c627418cfb4b1c42990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20=C3=81valos?= Date: Wed, 5 Jun 2024 12:12:40 -0600 Subject: harness: refactor wallet-insufficient-balance + libeufin support --- packages/taler-harness/src/harness/helpers.ts | 5 +- .../test-wallet-insufficient-balance.ts | 83 ++++------------------ 2 files changed, 18 insertions(+), 70 deletions(-) diff --git a/packages/taler-harness/src/harness/helpers.ts b/packages/taler-harness/src/harness/helpers.ts index 4e3ce66b9..d194b0d36 100644 --- a/packages/taler-harness/src/harness/helpers.ts +++ b/packages/taler-harness/src/harness/helpers.ts @@ -116,6 +116,8 @@ export interface EnvOptions { mixedAgeRestriction?: boolean; + skipWireFeeCreation?: boolean; + additionalExchangeConfig?(e: ExchangeService): void; additionalMerchantConfig?(m: MerchantService): void; additionalBankConfig?(b: BankService): void; @@ -466,11 +468,12 @@ export async function createSimpleTestkudosEnvironmentV3( bank.corebankApiBaseUrl, ).href; - const exchangeBankAccount = { + const exchangeBankAccount: HarnessExchangeBankAccount = { wireGatewayApiBaseUrl, accountName: exchangeBankUsername, accountPassword: exchangeBankPassword, accountPaytoUri: exchangePaytoUri, + skipWireFeeCreation: opts.skipWireFeeCreation === true, }; await exchange.addBankAccount("1", exchangeBankAccount); diff --git a/packages/taler-harness/src/integrationtests/test-wallet-insufficient-balance.ts b/packages/taler-harness/src/integrationtests/test-wallet-insufficient-balance.ts index ac1244446..4062e186d 100644 --- a/packages/taler-harness/src/integrationtests/test-wallet-insufficient-balance.ts +++ b/packages/taler-harness/src/integrationtests/test-wallet-insufficient-balance.ts @@ -22,71 +22,32 @@ import { Duration, PaymentInsufficientBalanceDetails, TalerErrorCode, - WalletNotification, } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import { CoinConfig, defaultCoinConfig } from "../harness/denomStructures.js"; import { - ExchangeService, - FakebankService, GlobalTestState, - MerchantService, - WalletClient, - WalletService, generateRandomPayto, setupDb, } from "../harness/harness.js"; -import { withdrawViaBankV2 } from "../harness/helpers.js"; +import { createSimpleTestkudosEnvironmentV3, withdrawViaBankV3 } from "../harness/helpers.js"; export async function runWalletInsufficientBalanceTest(t: GlobalTestState) { // Set up test environment const db = await setupDb(t); - const bank = await FakebankService.create(t, { - allowRegistrations: true, - currency: "TESTKUDOS", - database: db.connStr, - httpPort: 8082, - }); - - const exchange = ExchangeService.create(t, { - name: "testexchange-1", - currency: "TESTKUDOS", - httpPort: 8081, - database: db.connStr, - }); - - const merchant = await MerchantService.create(t, { - name: "testmerchant-1", - currency: "TESTKUDOS", - httpPort: 8083, - database: db.connStr, - }); - - const exchangeBankAccount = await bank.createExchangeAccount( - "myexchange", - "x", - ); - exchangeBankAccount.skipWireFeeCreation = true; - exchange.addBankAccount("1", exchangeBankAccount); - - bank.setSuggestedExchange(exchange, exchangeBankAccount.accountPaytoUri); - - await bank.start(); - - await bank.pingUntilAvailable(); - const coinConfig: CoinConfig[] = defaultCoinConfig.map((x) => x("TESTKUDOS")); - exchange.addCoinConfigList(coinConfig); - - await exchange.start(); - await exchange.pingUntilAvailable(); - merchant.addExchange(exchange); - - await merchant.start(); - await merchant.pingUntilAvailable(); + let { + bankClient, + exchange, + merchant, + walletService, + walletClient, + } = await createSimpleTestkudosEnvironmentV3(t, coinConfig, { + skipWireFeeCreation: true, + }); await merchant.addInstanceWithWireAccount({ id: "default", @@ -106,24 +67,6 @@ export async function runWalletInsufficientBalanceTest(t: GlobalTestState) { ), }); - const walletService = new WalletService(t, { - name: "wallet", - useInMemoryDb: true, - }); - await walletService.start(); - await walletService.pingUntilAvailable(); - - const allNotifications: WalletNotification[] = []; - - const walletClient = new WalletClient({ - name: "wallet", - unixPath: walletService.socketPath, - onNotification(n) { - console.log("got notification", n); - allNotifications.push(n); - }, - }); - await walletClient.connect(); await walletClient.client.call(WalletApiOperation.InitWallet, { config: { testing: { @@ -132,9 +75,9 @@ export async function runWalletInsufficientBalanceTest(t: GlobalTestState) { }, }); - const wres = await withdrawViaBankV2(t, { + const wres = await withdrawViaBankV3(t, { amount: "TESTKUDOS:10", - bank, + bankClient, exchange, walletClient, }); @@ -146,10 +89,12 @@ export async function runWalletInsufficientBalanceTest(t: GlobalTestState) { depositPaytoUri: "payto://x-taler-bank/localhost/foobar", }); }); + t.assertDeepEqual( exc.errorDetail.code, TalerErrorCode.WALLET_DEPOSIT_GROUP_INSUFFICIENT_BALANCE, ); + const insufficientBalanceDetails: PaymentInsufficientBalanceDetails = exc.errorDetail.insufficientBalanceDetails; -- cgit v1.2.3