diff options
author | Florian Dold <florian@dold.me> | 2022-08-25 23:35:29 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2022-08-25 23:35:29 +0200 |
commit | 70d0199572ee6a95c68dd0b960d80e4ae93c4b0a (patch) | |
tree | 56b81ba6056a91fb45cf53b5bca6626c0e007ad3 /packages/taler-wallet-cli | |
parent | 499e003ff8bfcb75a20619c65c4a03a73cb7a850 (diff) | |
download | wallet-core-70d0199572ee6a95c68dd0b960d80e4ae93c4b0a.tar.xz |
integration tests: various fixes
Diffstat (limited to 'packages/taler-wallet-cli')
7 files changed, 49 insertions, 105 deletions
diff --git a/packages/taler-wallet-cli/src/env1.ts b/packages/taler-wallet-cli/src/env1.ts index eb7da352c..aec0b7b8f 100644 --- a/packages/taler-wallet-cli/src/env1.ts +++ b/packages/taler-wallet-cli/src/env1.ts @@ -22,8 +22,8 @@ import { CoinConfig, defaultCoinConfig } from "./harness/denomStructures.js"; import { GlobalTestState, setupDb, - FakeBankService, ExchangeService, + FakebankService, } from "./harness/harness.js"; /** @@ -35,9 +35,11 @@ import { export async function runEnv1(t: GlobalTestState): Promise<void> { const db = await setupDb(t); - const bank = await FakeBankService.create(t, { + const bank = await FakebankService.create(t, { currency: "TESTKUDOS", httpPort: 8082, + allowRegistrations: true, + database: db.connStr, }); const exchange = ExchangeService.create(t, { diff --git a/packages/taler-wallet-cli/src/harness/harness.ts b/packages/taler-wallet-cli/src/harness/harness.ts index 0e7238b9a..ca0ea1f2f 100644 --- a/packages/taler-wallet-cli/src/harness/harness.ts +++ b/packages/taler-wallet-cli/src/harness/harness.ts @@ -775,11 +775,21 @@ class LibEuFinBankService extends BankServiceBase implements BankServiceHandle { /** * Implementation of the bank service using the "taler-fakebank-run" tool. */ -class FakebankService extends BankServiceBase implements BankServiceHandle { +export class FakebankService + extends BankServiceBase + implements BankServiceHandle +{ proc: ProcessWrapper | undefined; http = new NodeHttpLib(); + // We store "created" accounts during setup and + // register them after startup. + private accounts: { + accountName: string; + accountPassword: string; + }[] = []; + static async create( gc: GlobalTestState, bc: BankConfig, @@ -791,6 +801,7 @@ class FakebankService extends BankServiceBase implements BankServiceHandle { config.setString("bank", "serve", "http"); config.setString("bank", "max_debt_bank", `${bc.currency}:999999`); config.setString("bank", "max_debt", bc.maxDebt ?? `${bc.currency}:100`); + config.setString("bank", "ram_limit", `${1024}`); const cfgFilename = gc.testDir + "/bank.conf"; config.write(cfgFilename); @@ -798,6 +809,9 @@ class FakebankService extends BankServiceBase implements BankServiceHandle { } setSuggestedExchange(e: ExchangeServiceInterface, exchangePayto: string) { + if (!!this.proc) { + throw Error("Can't set suggested exchange while bank is running."); + } const config = Configuration.load(this.configFile); config.setString("bank", "suggested_exchange", e.baseUrl); config.write(this.configFile); @@ -816,10 +830,10 @@ class FakebankService extends BankServiceBase implements BankServiceHandle { accountName: string, password: string, ): Promise<HarnessExchangeBankAccount> { - // FIXME: Is there a better place to do this initialization? - await this.start(); - await this.pingUntilAvailable(); - await BankApi.registerAccount(this, accountName, password); + this.accounts.push({ + accountName, + accountPassword: password, + }); return { accountName: accountName, accountPassword: password, @@ -833,15 +847,25 @@ class FakebankService extends BankServiceBase implements BankServiceHandle { } async start(): Promise<void> { + logger.info("starting fakebank"); if (this.proc) { logger.info("fakebank already running, not starting again"); return; } this.proc = this.globalTestState.spawnService( "taler-fakebank-run", - ["-c", this.configFile], + [ + "-c", + this.configFile, + "--signup-bonus", + `${this.bankConfig.currency}:100`, + ], "bank", ); + await this.pingUntilAvailable(); + for (const acc of this.accounts) { + await BankApi.registerAccount(this, acc.accountName, acc.accountPassword); + } } async pingUntilAvailable(): Promise<void> { @@ -853,86 +877,8 @@ class FakebankService extends BankServiceBase implements BankServiceHandle { // Use libeufin bank instead of pybank. const useLibeufinBank = false; -/** - * Return a euFin or a pyBank implementation of - * the exported BankService class. This allows - * to "dynamically export" such class depending - * on a particular env variable. - */ -function getBankServiceImpl(): { - prototype: typeof FakebankService.prototype; - create: typeof FakebankService.create; -} { - if (useLibeufinBank) - return { - prototype: LibEuFinBankService.prototype, - create: LibEuFinBankService.create, - }; - return { - prototype: FakebankService.prototype, - create: FakebankService.create, - }; -} - -export type BankService = FakebankService; -export const BankService = getBankServiceImpl(); - -export class FakeBankService { - proc: ProcessWrapper | undefined; - - static fromExistingConfig(gc: GlobalTestState): FakeBankService { - const cfgFilename = gc.testDir + "/bank.conf"; - logger.info("reading fakebank config from", cfgFilename); - const config = Configuration.load(cfgFilename); - const bc: FakeBankConfig = { - currency: config.getString("taler", "currency").required(), - httpPort: config.getNumber("bank", "http_port").required(), - }; - return new FakeBankService(gc, bc, cfgFilename); - } - - static async create( - gc: GlobalTestState, - bc: FakeBankConfig, - ): Promise<FakeBankService> { - const config = new Configuration(); - setTalerPaths(config, gc.testDir + "/talerhome"); - config.setString("taler", "currency", bc.currency); - config.setString("bank", "http_port", `${bc.httpPort}`); - config.setString("bank", "ram_limit", `${1024}`); - const cfgFilename = gc.testDir + "/bank.conf"; - config.write(cfgFilename); - return new FakeBankService(gc, bc, cfgFilename); - } - - get baseUrl(): string { - return `http://localhost:${this.bankConfig.httpPort}/`; - } - - get port() { - return this.bankConfig.httpPort; - } - - private constructor( - private globalTestState: GlobalTestState, - private bankConfig: FakeBankConfig, - private configFile: string, - ) {} - - async start(): Promise<void> { - this.proc = this.globalTestState.spawnService( - "taler-fakebank-run", - ["-c", this.configFile], - "fakebank", - ); - } - - async pingUntilAvailable(): Promise<void> { - // Fakebank doesn't have "/config", so we ping just "/". - const url = `http://localhost:${this.bankConfig.httpPort}/`; - await pingProc(this.proc, url, "bank"); - } -} +export type BankService = BankServiceHandle; +export const BankService = FakebankService; export interface ExchangeConfig { name: string; diff --git a/packages/taler-wallet-cli/src/harness/libeufin.ts b/packages/taler-wallet-cli/src/harness/libeufin.ts index 7356a6273..bc210d132 100644 --- a/packages/taler-wallet-cli/src/harness/libeufin.ts +++ b/packages/taler-wallet-cli/src/harness/libeufin.ts @@ -691,8 +691,8 @@ export class LibeufinCli { ): Promise<void> { const stdout = await sh( this.globalTestState, - "libeufin-cli-submitpayment", - `libeufin-cli accounts submit-payment` + + "libeufin-cli-submitpayments", + `libeufin-cli accounts submit-payments` + ` --payment-uuid=${paymentUuid}` + ` ${details.nexusBankAccountName}`, { diff --git a/packages/taler-wallet-cli/src/integrationtests/test-bank-api.ts b/packages/taler-wallet-cli/src/integrationtests/test-bank-api.ts index 31113aa1f..ab7ea1132 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-bank-api.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-bank-api.ts @@ -43,10 +43,10 @@ export async function runBankApiTest(t: GlobalTestState) { const db = await setupDb(t); const bank = await BankService.create(t, { - allowRegistrations: true, currency: "TESTKUDOS", - database: db.connStr, httpPort: 8082, + database: db.connStr, + allowRegistrations: true, }); const exchange = ExchangeService.create(t, { diff --git a/packages/taler-wallet-cli/src/integrationtests/test-forced-selection.ts b/packages/taler-wallet-cli/src/integrationtests/test-forced-selection.ts index 302e3364a..91be11a82 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-forced-selection.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-forced-selection.ts @@ -17,17 +17,9 @@ /** * Imports. */ -import { - ConfirmPayResultType, - j2s, - PreparePayResultType, -} from "@gnu-taler/taler-util"; -import { Wallet, WalletApiOperation } from "@gnu-taler/taler-wallet-core"; -import { - GlobalTestState, - MerchantPrivateApi, - WithAuthorization, -} from "../harness/harness.js"; +import { j2s } from "@gnu-taler/taler-util"; +import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; +import { GlobalTestState } from "../harness/harness.js"; import { createSimpleTestkudosEnvironment } from "../harness/helpers.js"; /** diff --git a/packages/taler-wallet-cli/src/integrationtests/test-withdrawal-abort-bank.ts b/packages/taler-wallet-cli/src/integrationtests/test-withdrawal-abort-bank.ts index 0125b3b41..bf2dc0133 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-withdrawal-abort-bank.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-withdrawal-abort-bank.ts @@ -54,6 +54,7 @@ export async function runWithdrawalAbortBankTest(t: GlobalTestState) { // Abort it await BankApi.abortWithdrawalOperation(bank, user, wop); + //await BankApi.confirmWithdrawalOperation(bank, user, wop); // Withdraw diff --git a/packages/taler-wallet-cli/src/integrationtests/test-withdrawal-fakebank.ts b/packages/taler-wallet-cli/src/integrationtests/test-withdrawal-fakebank.ts index 5860aaf88..ec6e54e6c 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-withdrawal-fakebank.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-withdrawal-fakebank.ts @@ -22,7 +22,7 @@ import { WalletCli, setupDb, ExchangeService, - FakeBankService, + FakebankService, } from "../harness/harness.js"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import { CoinConfig, defaultCoinConfig } from "../harness/denomStructures.js"; @@ -36,9 +36,12 @@ export async function runWithdrawalFakebankTest(t: GlobalTestState) { const db = await setupDb(t); - const bank = await FakeBankService.create(t, { + const bank = await FakebankService.create(t, { currency: "TESTKUDOS", httpPort: 8082, + allowRegistrations: true, + // Not used by fakebank + database: db.connStr, }); const exchange = ExchangeService.create(t, { |