diff options
-rw-r--r-- | packages/taler-wallet-cli/src/integrationtests/harness.ts | 11 | ||||
-rw-r--r-- | packages/taler-wallet-cli/src/integrationtests/test-revocation.ts | 107 |
2 files changed, 99 insertions, 19 deletions
diff --git a/packages/taler-wallet-cli/src/integrationtests/harness.ts b/packages/taler-wallet-cli/src/integrationtests/harness.ts index 6a9d694e9..b294fd154 100644 --- a/packages/taler-wallet-cli/src/integrationtests/harness.ts +++ b/packages/taler-wallet-cli/src/integrationtests/harness.ts @@ -27,7 +27,6 @@ import * as util from "util"; import * as fs from "fs"; import * as path from "path"; -import * as os from "os"; import * as http from "http"; import { deepStrictEqual } from "assert"; import { ChildProcess, spawn } from "child_process"; @@ -817,6 +816,12 @@ export class ExchangeService implements ExchangeServiceInterface { ); } + changeConfig(f: (config: Configuration) => void) { + const config = Configuration.load(this.configFilename); + f(config); + config.write(this.configFilename); + } + static create(gc: GlobalTestState, e: ExchangeConfig) { const config = new Configuration(); config.setString("taler", "currency", e.currency); @@ -846,10 +851,6 @@ export class ExchangeService implements ExchangeServiceInterface { ); config.setString("exchange", "serve", "tcp"); config.setString("exchange", "port", `${e.httpPort}`); - config.setString("exchange", "signkey_duration", "4 weeks"); - config.setString("exchange", "legal_duraction", "2 years"); - config.setString("exchange", "lookahead_sign", "32 weeks 1 day"); - config.setString("exchange", "lookahead_provide", "4 weeks 1 day"); config.setString("exchangedb-postgres", "config", e.database); diff --git a/packages/taler-wallet-cli/src/integrationtests/test-revocation.ts b/packages/taler-wallet-cli/src/integrationtests/test-revocation.ts index bb0c59210..6e3a8f7a2 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-revocation.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-revocation.ts @@ -23,11 +23,14 @@ import { ExchangeService, MerchantService, WalletCli, + setupDb, + BankService, + delayMs, } from "./harness"; import { - createSimpleTestkudosEnvironment, withdrawViaBank, makeTestPayment, + SimpleTestEnvironment, } from "./helpers"; async function revokeAllWalletCoins(req: { @@ -45,21 +48,58 @@ async function revokeAllWalletCoins(req: { for (const x of usedDenomHashes.values()) { await exchange.revokeDenomination(x); } - await exchange.stop(); - await exchange.start(); - await exchange.pingUntilAvailable(); + console.log("waiting 30 seconds after revocation"); + await delayMs(30000); await exchange.keyup(); - await exchange.pingUntilAvailable(); + console.log("waiting 30 seconds after keyup"); + await delayMs(30000); await merchant.stop(); await merchant.start(); await merchant.pingUntilAvailable(); } -/** - * Basic time travel test. - */ -export async function runRevocationTest(t: GlobalTestState) { - // Set up test environment +async function createTestEnvironment( + t: GlobalTestState, +): Promise<SimpleTestEnvironment> { + 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, + }); + + exchange.changeConfig((config) => { + config.setString("taler-helper-crypto-eddsa", "lookahead_sign", "20 s"); + config.setString("taler-helper-crypto-rsa", "lookahead_sign", "20 s"); + }); + + const exchangeBankAccount = await bank.createExchangeAccount( + "MyExchange", + "x", + ); + exchange.addBankAccount("1", exchangeBankAccount); + + bank.setSuggestedExchange(exchange, exchangeBankAccount.accountPaytoUri); + + await bank.start(); + + await bank.pingUntilAvailable(); const coin_u1: CoinConfig = { durationLegal: "3 years", @@ -74,17 +114,55 @@ export async function runRevocationTest(t: GlobalTestState) { feeWithdraw: `TESTKUDOS:0`, }; - const { - wallet, - bank, + exchange.addCoinConfigList([coin_u1]); + + await exchange.start(); + await exchange.pingUntilAvailable(); + + merchant.addExchange(exchange); + + await merchant.start(); + await merchant.pingUntilAvailable(); + + await merchant.addInstance({ + id: "minst1", + name: "minst1", + paytoUris: ["payto://x-taler-bank/minst1"], + }); + + await merchant.addInstance({ + id: "default", + name: "Default Instance", + paytoUris: [`payto://x-taler-bank/merchant-default`], + }); + + console.log("setup done!"); + + const wallet = new WalletCli(t); + + return { + commonDb: db, exchange, merchant, - } = await createSimpleTestkudosEnvironment(t, [coin_u1]); + wallet, + bank, + exchangeBankAccount, + }; +} + +/** + * Basic time travel test. + */ +export async function runRevocationTest(t: GlobalTestState) { + // Set up test environment + + const { wallet, bank, exchange, merchant } = await createTestEnvironment(t); // Withdraw digital cash into the wallet. await withdrawViaBank(t, { wallet, bank, exchange, amount: "TESTKUDOS:15" }); + console.log("revoking first time"); await revokeAllWalletCoins({ wallet, exchange, merchant }); // FIXME: this shouldn't be necessary once https://bugs.taler.net/n/6565 @@ -114,6 +192,7 @@ export async function runRevocationTest(t: GlobalTestState) { }); await wallet.runUntilDone(); + console.log("revoking second time"); await revokeAllWalletCoins({ wallet, exchange, merchant }); // FIXME: this shouldn't be necessary once https://bugs.taler.net/n/6565 |