summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorms <ms@taler.net>2021-11-01 14:25:43 +0100
committerms <ms@taler.net>2021-11-01 14:48:49 +0100
commitea2acd1d3caa21f23127687214045a49d8fea0ad (patch)
treef8db5fca822b752e30b93306e7d207868d4cd915 /packages
parent404c8c8a73c53a8f5432db9838326753864b7136 (diff)
downloadwallet-core-ea2acd1d3caa21f23127687214045a49d8fea0ad.tar.gz
wallet-core-ea2acd1d3caa21f23127687214045a49d8fea0ad.tar.bz2
wallet-core-ea2acd1d3caa21f23127687214045a49d8fea0ad.zip
Testing harness.
No need to import modules dynamically, in order to provide the euFin implementation of the BankServiceInterface.
Diffstat (limited to 'packages')
-rw-r--r--packages/taler-wallet-cli/src/harness/harness.ts224
-rw-r--r--packages/taler-wallet-cli/src/harness/helpers.ts2
2 files changed, 107 insertions, 119 deletions
diff --git a/packages/taler-wallet-cli/src/harness/harness.ts b/packages/taler-wallet-cli/src/harness/harness.ts
index c607144e0..3faaa4895 100644
--- a/packages/taler-wallet-cli/src/harness/harness.ts
+++ b/packages/taler-wallet-cli/src/harness/harness.ts
@@ -607,126 +607,114 @@ export namespace BankApi {
}
}
-/**
- * Method explained here:
- * https://github.com/microsoft/TypeScript/issues/2552
- */
-module BankServices {
- export class PybankService implements BankServiceInterface {
- proc: ProcessWrapper | undefined;
-
- static fromExistingConfig(gc: GlobalTestState): BankService {
- const cfgFilename = gc.testDir + "/bank.conf";
- console.log("reading bank config from", cfgFilename);
- const config = Configuration.load(cfgFilename);
- const bc: BankConfig = {
- allowRegistrations: config
- .getYesNo("bank", "allow_registrations")
- .required(),
- currency: config.getString("taler", "currency").required(),
- database: config.getString("bank", "database").required(),
- httpPort: config.getNumber("bank", "http_port").required(),
- };
- return new BankService(gc, bc, cfgFilename);
- }
-
- static async create(
- gc: GlobalTestState,
- bc: BankConfig,
- ): Promise<BankService> {
- const config = new Configuration();
- setTalerPaths(config, gc.testDir + "/talerhome");
- config.setString("taler", "currency", bc.currency);
- config.setString("bank", "database", bc.database);
- config.setString("bank", "http_port", `${bc.httpPort}`);
- 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",
- "allow_registrations",
- bc.allowRegistrations ? "yes" : "no",
- );
- const cfgFilename = gc.testDir + "/bank.conf";
- config.write(cfgFilename);
-
- await sh(
- gc,
- "taler-bank-manage_django",
- `taler-bank-manage -c '${cfgFilename}' django migrate`,
- );
- await sh(
- gc,
- "taler-bank-manage_django",
- `taler-bank-manage -c '${cfgFilename}' django provide_accounts`,
- );
-
- return new BankService(gc, bc, cfgFilename);
- }
-
- setSuggestedExchange(e: ExchangeServiceInterface, exchangePayto: string) {
- const config = Configuration.load(this.configFile);
- config.setString("bank", "suggested_exchange", e.baseUrl);
- config.setString("bank", "suggested_exchange_payto", exchangePayto);
- }
-
- get baseUrl(): string {
- return `http://localhost:${this.bankConfig.httpPort}/`;
- }
-
- async createExchangeAccount(
- accountName: string,
- password: string,
- ): Promise<HarnessExchangeBankAccount> {
- await sh(
- this.globalTestState,
- "taler-bank-manage_django",
- `taler-bank-manage -c '${this.configFile}' django add_bank_account ${accountName}`,
- );
- await sh(
- this.globalTestState,
- "taler-bank-manage_django",
- `taler-bank-manage -c '${this.configFile}' django changepassword_unsafe ${accountName} ${password}`,
- );
- await sh(
- this.globalTestState,
- "taler-bank-manage_django",
- `taler-bank-manage -c '${this.configFile}' django top_up ${accountName} ${this.bankConfig.currency}:100000`,
- );
- return {
- accountName: accountName,
- accountPassword: password,
- accountPaytoUri: `payto://x-taler-bank/${accountName}`,
- wireGatewayApiBaseUrl: `http://localhost:${this.bankConfig.httpPort}/taler-wire-gateway/${accountName}/`,
- };
- }
-
- get port() {
- return this.bankConfig.httpPort;
- }
-
- private constructor(
- private globalTestState: GlobalTestState,
- private bankConfig: BankConfig,
- private configFile: string,
- ) {}
-
- async start(): Promise<void> {
- this.proc = this.globalTestState.spawnService(
- "taler-bank-manage",
- ["-c", this.configFile, "serve"],
- "bank",
- );
- }
-
- async pingUntilAvailable(): Promise<void> {
- const url = `http://localhost:${this.bankConfig.httpPort}/config`;
- await pingProc(this.proc, url, "bank");
- }
+export class BankService implements BankServiceInterface {
+ proc: ProcessWrapper | undefined;
+
+ static async create(
+ gc: GlobalTestState,
+ bc: BankConfig,
+ ): Promise<BankService> {
+ const config = new Configuration();
+ setTalerPaths(config, gc.testDir + "/talerhome");
+ config.setString("taler", "currency", bc.currency);
+ config.setString("bank", "database", bc.database);
+ config.setString("bank", "http_port", `${bc.httpPort}`);
+ 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",
+ "allow_registrations",
+ bc.allowRegistrations ? "yes" : "no",
+ );
+ const cfgFilename = gc.testDir + "/bank.conf";
+ config.write(cfgFilename);
+
+ await sh(
+ gc,
+ "taler-bank-manage_django",
+ `taler-bank-manage -c '${cfgFilename}' django migrate`,
+ );
+ await sh(
+ gc,
+ "taler-bank-manage_django",
+ `taler-bank-manage -c '${cfgFilename}' django provide_accounts`,
+ );
+
+ return new BankService(gc, bc, cfgFilename);
+ }
+
+ setSuggestedExchange(e: ExchangeServiceInterface, exchangePayto: string) {
+ const config = Configuration.load(this.configFile);
+ config.setString("bank", "suggested_exchange", e.baseUrl);
+ config.setString("bank", "suggested_exchange_payto", exchangePayto);
+ }
+
+ get baseUrl(): string {
+ return `http://localhost:${this.bankConfig.httpPort}/`;
+ }
+
+ async createExchangeAccount(
+ accountName: string,
+ password: string,
+ ): Promise<HarnessExchangeBankAccount> {
+ await sh(
+ this.globalTestState,
+ "taler-bank-manage_django",
+ `taler-bank-manage -c '${this.configFile}' django add_bank_account ${accountName}`,
+ );
+ await sh(
+ this.globalTestState,
+ "taler-bank-manage_django",
+ `taler-bank-manage -c '${this.configFile}' django changepassword_unsafe ${accountName} ${password}`,
+ );
+ await sh(
+ this.globalTestState,
+ "taler-bank-manage_django",
+ `taler-bank-manage -c '${this.configFile}' django top_up ${accountName} ${this.bankConfig.currency}:100000`,
+ );
+ return {
+ accountName: accountName,
+ accountPassword: password,
+ accountPaytoUri: `payto://x-taler-bank/${accountName}`,
+ wireGatewayApiBaseUrl: `http://localhost:${this.bankConfig.httpPort}/taler-wire-gateway/${accountName}/`,
+ };
+ }
+
+ get port() {
+ return this.bankConfig.httpPort;
+ }
+
+ private constructor(
+ private globalTestState: GlobalTestState,
+ private bankConfig: BankConfig,
+ private configFile: string,
+ ) {}
+
+ async start(): Promise<void> {
+ this.proc = this.globalTestState.spawnService(
+ "taler-bank-manage",
+ ["-c", this.configFile, "serve"],
+ "bank",
+ );
+ }
+
+ async pingUntilAvailable(): Promise<void> {
+ const url = `http://localhost:${this.bankConfig.httpPort}/config`;
+ await pingProc(this.proc, url, "bank");
}
}
-import BankService = BankServices.PybankService;
-export { BankService };
+
+/**
+ * euFin migration:
+ *
+ * if (process.env.WALLET_HARNESS_WITH_EUFIN) {
+ * BankService.prototype = {
+ * // methods from euFin ..
+ * };
+ * }
+ *
+ */
export class FakeBankService {
proc: ProcessWrapper | undefined;
diff --git a/packages/taler-wallet-cli/src/harness/helpers.ts b/packages/taler-wallet-cli/src/harness/helpers.ts
index 1dc38f0ff..59e41d1ad 100644
--- a/packages/taler-wallet-cli/src/harness/helpers.ts
+++ b/packages/taler-wallet-cli/src/harness/helpers.ts
@@ -63,7 +63,7 @@ export interface SimpleTestEnvironment {
}
export function getRandomIban(countryCode: string): string {
- return `${countryCode}715001051796${Math.floor(Math.random() * 1000000)}`;
+ return `${countryCode}715001051796${(Math.random().toString().substring(2, 8))}`
}
export function getRandomString(): string {