From 59b4e069c8f26bee6e6f9918a63cfb7051c5f529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20=C3=81valos?= Date: Wed, 5 Jun 2024 13:38:42 -0600 Subject: harness: refactor and add libeufin support to more tests --- .../src/integrationtests/test-multiexchange.ts | 69 +++++++++++---- .../integrationtests/test-wallet-denom-expire.ts | 98 ++-------------------- .../test-wallet-exchange-update.ts | 43 ++++++++-- .../integrationtests/test-withdrawal-conversion.ts | 50 +++++++---- 4 files changed, 131 insertions(+), 129 deletions(-) (limited to 'packages') diff --git a/packages/taler-harness/src/integrationtests/test-multiexchange.ts b/packages/taler-harness/src/integrationtests/test-multiexchange.ts index b5cf0770f..26e843073 100644 --- a/packages/taler-harness/src/integrationtests/test-multiexchange.ts +++ b/packages/taler-harness/src/integrationtests/test-multiexchange.ts @@ -17,13 +17,14 @@ /** * Imports. */ -import { Duration, TalerMerchantApi } from "@gnu-taler/taler-util"; +import { Duration, TalerCorebankApiClient, TalerMerchantApi } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import { defaultCoinConfig } from "../harness/denomStructures.js"; import { + BankService, ExchangeService, - FakebankService, GlobalTestState, + HarnessExchangeBankAccount, MerchantService, generateRandomPayto, setupDb, @@ -32,6 +33,7 @@ import { createWalletDaemonWithClient, makeTestPaymentV2, withdrawViaBankV2, + withdrawViaBankV3, } from "../harness/helpers.js"; /** @@ -45,7 +47,7 @@ export async function runMultiExchangeTest(t: GlobalTestState) { nameSuffix: "exchange2", }); - const bank = await FakebankService.create(t, { + const bank = await BankService.create(t, { allowRegistrations: true, currency: "TESTKUDOS", database: dbDefault.connStr, @@ -73,17 +75,25 @@ export async function runMultiExchangeTest(t: GlobalTestState) { database: dbDefault.connStr, }); - const exchangeOneBankAccount = await bank.createExchangeAccount( - "myexchange", - "x", - ); - await exchangeOne.addBankAccount("1", exchangeOneBankAccount); + let exchangeOneBankAccount: HarnessExchangeBankAccount = { + wireGatewayApiBaseUrl: new URL( + "accounts/myexchange/taler-wire-gateway/", + bank.corebankApiBaseUrl, + ).href, + accountName: "myexchange", + accountPassword: "x", + accountPaytoUri: generateRandomPayto("myexchange"), + }; - const exchangeTwoBankAccount = await bank.createExchangeAccount( - "myexchange2", - "x", - ); - await exchangeTwo.addBankAccount("1", exchangeTwoBankAccount); + let exchangeTwoBankAccount: HarnessExchangeBankAccount = { + wireGatewayApiBaseUrl: new URL( + "accounts/myexchange2/taler-wire-gateway/", + bank.corebankApiBaseUrl, + ).href, + accountName: "myexchange2", + accountPassword: "x", + accountPaytoUri: generateRandomPayto("myexchange2"), + }; bank.setSuggestedExchange( exchangeOne, @@ -94,6 +104,31 @@ export async function runMultiExchangeTest(t: GlobalTestState) { await bank.pingUntilAvailable(); + const bankClient = new TalerCorebankApiClient(bank.corebankApiBaseUrl, { + auth: { + username: "admin", + password: "adminpw", + }, + }); + + await bankClient.registerAccountExtended({ + name: exchangeOneBankAccount.accountName, + username: exchangeOneBankAccount.accountName, + password: exchangeOneBankAccount.accountPassword, + is_taler_exchange: true, + payto_uri: exchangeOneBankAccount.accountPaytoUri, + }); + await exchangeOne.addBankAccount("1", exchangeOneBankAccount); + + await bankClient.registerAccountExtended({ + name: exchangeTwoBankAccount.accountName, + username: exchangeTwoBankAccount.accountName, + password: exchangeTwoBankAccount.accountPassword, + is_taler_exchange: true, + payto_uri: exchangeTwoBankAccount.accountPaytoUri, + }); + await exchangeTwo.addBankAccount("1", exchangeTwoBankAccount); + // Set up the first exchange exchangeOne.addOfferedCoins(defaultCoinConfig); @@ -141,16 +176,16 @@ export async function runMultiExchangeTest(t: GlobalTestState) { // Withdraw digital cash into the wallet. - await withdrawViaBankV2(t, { + await withdrawViaBankV3(t, { walletClient, - bank, + bankClient, exchange: exchangeOne, amount: "TESTKUDOS:6", }); - await withdrawViaBankV2(t, { + await withdrawViaBankV3(t, { walletClient, - bank, + bankClient, exchange: exchangeTwo, amount: "TESTKUDOS:6", }); diff --git a/packages/taler-harness/src/integrationtests/test-wallet-denom-expire.ts b/packages/taler-harness/src/integrationtests/test-wallet-denom-expire.ts index b9d028efd..a2573eda1 100644 --- a/packages/taler-harness/src/integrationtests/test-wallet-denom-expire.ts +++ b/packages/taler-harness/src/integrationtests/test-wallet-denom-expire.ts @@ -17,21 +17,16 @@ /** * Imports. */ -import { Duration, Logger, NotificationType, TalerCorebankApiClient, j2s } from "@gnu-taler/taler-util"; +import { Duration, Logger, NotificationType, j2s } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import { makeNoFeeCoinConfig } from "../harness/denomStructures.js"; import { - BankService, - ExchangeService, - FakebankService, GlobalTestState, - MerchantService, - generateRandomPayto, setupDb, } from "../harness/harness.js"; import { applyTimeTravelV2, - createWalletDaemonWithClient, + createSimpleTestkudosEnvironmentV3, withdrawViaBankV3, } from "../harness/helpers.js"; @@ -45,89 +40,14 @@ export async function runWalletDenomExpireTest(t: GlobalTestState) { const db = await setupDb(t); - const bank = await BankService.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, - }); - - let receiverName = "Exchange"; - let exchangeBankUsername = "exchange"; - let exchangeBankPassword = "mypw"; - let exchangePaytoUri = generateRandomPayto(exchangeBankUsername); - - await exchange.addBankAccount("1", { - accountName: exchangeBankUsername, - accountPassword: exchangeBankPassword, - wireGatewayApiBaseUrl: new URL("accounts/exchange/taler-wire-gateway/", bank.baseUrl).href, - accountPaytoUri: exchangePaytoUri, - }); - - bank.setSuggestedExchange(exchange, exchangePaytoUri); - - await bank.start(); - - await bank.pingUntilAvailable(); - - const bankClient = new TalerCorebankApiClient(bank.corebankApiBaseUrl, { - auth: { - username: "admin", - password: "adminpw", - }, - }); - - await bankClient.registerAccountExtended({ - name: receiverName, - password: exchangeBankPassword, - username: exchangeBankUsername, - is_taler_exchange: true, - payto_uri: exchangePaytoUri, - }); - - exchange.addCoinConfigList(makeNoFeeCoinConfig("TESTKUDOS")); - - await exchange.start(); - await exchange.pingUntilAvailable(); - - merchant.addExchange(exchange); - - await merchant.start(); - await merchant.pingUntilAvailable(); - - console.log("merchant started, configuring instances"); - - await merchant.addInstanceWithWireAccount({ - id: "default", - name: "Default Instance", - paytoUris: [generateRandomPayto("merchant-default")], - }); + const coinConfig = makeNoFeeCoinConfig("TESTKUDOS"); - await merchant.addInstanceWithWireAccount({ - id: "minst1", - name: "minst1", - paytoUris: [generateRandomPayto("minst1")], - }); - - console.log("setup done!"); - - const { walletClient } = await createWalletDaemonWithClient(t, { - name: "default", - }); + const { + walletClient, + bankClient, + exchange, + merchant, + } = await createSimpleTestkudosEnvironmentV3(t, coinConfig, {}); // Withdraw digital cash into the wallet. diff --git a/packages/taler-harness/src/integrationtests/test-wallet-exchange-update.ts b/packages/taler-harness/src/integrationtests/test-wallet-exchange-update.ts index b36e6ef61..3a1b467c3 100644 --- a/packages/taler-harness/src/integrationtests/test-wallet-exchange-update.ts +++ b/packages/taler-harness/src/integrationtests/test-wallet-exchange-update.ts @@ -21,6 +21,7 @@ import { AmountString, ExchangeUpdateStatus, NotificationType, + TalerCorebankApiClient, j2s, } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; @@ -30,11 +31,14 @@ import { ExchangeService, FakebankService, GlobalTestState, + HarnessExchangeBankAccount, + generateRandomPayto, setupDb, } from "../harness/harness.js"; import { createWalletDaemonWithClient, withdrawViaBankV2, + withdrawViaBankV3, } from "../harness/helpers.js"; /** @@ -51,7 +55,7 @@ export async function runWalletExchangeUpdateTest( nameSuffix: "two", }); - const bank = await FakebankService.create(t, { + const bank = await BankService.create(t, { allowRegistrations: true, currency: "TESTKUDOS", database: db.connStr, @@ -75,10 +79,27 @@ export async function runWalletExchangeUpdateTest( database: db2.connStr, }); - const exchangeBankAccount = await bank.createExchangeAccount( - "myexchange", - "x", - ); + const bankClient = new TalerCorebankApiClient(bank.corebankApiBaseUrl, { + auth: { + username: "admin", + password: "adminpw", + }, + }); + + // const exchangeBankAccount = await bank.createExchangeAccount( + // "myexchange", + // "x", + // ); + + let exchangeBankAccount: HarnessExchangeBankAccount = { + wireGatewayApiBaseUrl: new URL( + "accounts/myexchange/taler-wire-gateway/", + bank.corebankApiBaseUrl, + ).href, + accountName: "myexchange", + accountPassword: "x", + accountPaytoUri: generateRandomPayto("myexchange"), + }; await exchangeOne.addBankAccount("1", exchangeBankAccount); await exchangeTwo.addBankAccount("1", exchangeBankAccount); @@ -88,6 +109,14 @@ export async function runWalletExchangeUpdateTest( await bank.start(); + bankClient.registerAccountExtended({ + name: exchangeBankAccount.accountName, + username: exchangeBankAccount.accountName, + password: exchangeBankAccount.accountPassword, + is_taler_exchange: true, + payto_uri: exchangeBankAccount.accountPaytoUri, + }); + exchangeOne.addCoinConfigList(defaultCoinConfig.map((x) => x("TESTKUDOS"))); exchangeTwo.addCoinConfigList(defaultCoinConfig.map((x) => x("TESTKUDOS"))); @@ -108,9 +137,9 @@ export async function runWalletExchangeUpdateTest( t.assertDeepEqual(exchangesListResult.exchanges.length, 0); - const wres = await withdrawViaBankV2(t, { + const wres = await withdrawViaBankV3(t, { walletClient, - bank, + bankClient, exchange: exchangeOne, amount: "TESTKUDOS:10", }); diff --git a/packages/taler-harness/src/integrationtests/test-withdrawal-conversion.ts b/packages/taler-harness/src/integrationtests/test-withdrawal-conversion.ts index 615feafa7..c55e1faf0 100644 --- a/packages/taler-harness/src/integrationtests/test-withdrawal-conversion.ts +++ b/packages/taler-harness/src/integrationtests/test-withdrawal-conversion.ts @@ -33,9 +33,11 @@ import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import * as http from "node:http"; import { defaultCoinConfig } from "../harness/denomStructures.js"; import { + BankService, ExchangeService, FakebankService, GlobalTestState, + HarnessExchangeBankAccount, MerchantService, generateRandomPayto, setupDb, @@ -135,7 +137,7 @@ export async function runWithdrawalConversionTest(t: GlobalTestState) { const db = await setupDb(t); - const bank = await FakebankService.create(t, { + const bank = await BankService.create(t, { allowRegistrations: true, currency: "TESTKUDOS", database: db.connStr, @@ -156,17 +158,40 @@ export async function runWithdrawalConversionTest(t: GlobalTestState) { database: db.connStr, }); - const exchangeBankAccount = await bank.createExchangeAccount( - "myexchange", - "x", - ); - exchangeBankAccount.conversionUrl = "http://localhost:8071/"; + let exchangeBankAccount: HarnessExchangeBankAccount = { + wireGatewayApiBaseUrl: new URL( + "accounts/myexchange/taler-wire-gateway/", + bank.corebankApiBaseUrl, + ).href, + accountName: "myexchange", + accountPassword: "x", + accountPaytoUri: generateRandomPayto("myexchange"), + conversionUrl: "http://localhost:8071/", + }; + await exchange.addBankAccount("1", exchangeBankAccount); await bank.start(); await bank.pingUntilAvailable(); + const bankClientAuth = { + username: "admin", + password: "adminpw", + }; + + const bankClient = new TalerCorebankApiClient(bank.corebankApiBaseUrl, { + auth: bankClientAuth, + }); + + await bankClient.registerAccountExtended({ + name: exchangeBankAccount.accountName, + username: exchangeBankAccount.accountName, + password: exchangeBankAccount.accountPassword, + is_taler_exchange: true, + payto_uri: exchangeBankAccount.accountPaytoUri, + }); + exchange.addOfferedCoins(defaultCoinConfig); await exchange.start(); @@ -194,7 +219,7 @@ export async function runWithdrawalConversionTest(t: GlobalTestState) { ), }); - const { walletClient, walletService } = await createWalletDaemonWithClient( + const { walletClient } = await createWalletDaemonWithClient( t, { name: "wallet" }, ); @@ -203,11 +228,7 @@ export async function runWithdrawalConversionTest(t: GlobalTestState) { // Create a withdrawal operation - const bankAccessApiClient = new TalerCorebankApiClient( - bank.corebankApiBaseUrl, - ); - - const user = await bankAccessApiClient.createRandomBankUser(); + const user = await bankClient.createRandomBankUser(); await walletClient.call(WalletApiOperation.AddExchange, { exchangeBaseUrl: exchange.baseUrl, @@ -277,10 +298,7 @@ export async function runWithdrawalConversionTest(t: GlobalTestState) { const wireGatewayApiClient = new WireGatewayApiClient( exchangeBankAccount.wireGatewayApiBaseUrl, { - auth: { - username: exchangeBankAccount.accountName, - password: exchangeBankAccount.accountPassword, - }, + auth: bankClientAuth, }, ); -- cgit v1.2.3