harness: shared test environment WIP
This commit is contained in:
parent
2051aded50
commit
9be4034cc0
@ -467,6 +467,22 @@ export async function setupDb(t: GlobalTestState): Promise<DbInfo> {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make sure that the taler-integrationtest-shared database exists.
|
||||||
|
* Don't delete it if it already exists.
|
||||||
|
*/
|
||||||
|
export async function setupSharedDb(t: GlobalTestState): Promise<DbInfo> {
|
||||||
|
const dbname = "taler-integrationtest-shared";
|
||||||
|
const databases = await runCommand(t, "list-dbs", "psql", ["-Aqtl"]);
|
||||||
|
if (databases.indexOf("taler-integrationtest-shared") < 0) {
|
||||||
|
await runCommand(t, "createdb", "createdb", [dbname]);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
connStr: `postgres:///${dbname}`,
|
||||||
|
dbname,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
export interface BankConfig {
|
export interface BankConfig {
|
||||||
currency: string;
|
currency: string;
|
||||||
httpPort: number;
|
httpPort: number;
|
||||||
@ -857,6 +873,13 @@ export class FakebankService
|
|||||||
accountPassword: string;
|
accountPassword: string;
|
||||||
}[] = [];
|
}[] = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new fakebank service handle.
|
||||||
|
*
|
||||||
|
* First generates the configuration for the fakebank and
|
||||||
|
* then creates a fakebank handle, but doesn't start the fakebank
|
||||||
|
* service yet.
|
||||||
|
*/
|
||||||
static async create(
|
static async create(
|
||||||
gc: GlobalTestState,
|
gc: GlobalTestState,
|
||||||
bc: BankConfig,
|
bc: BankConfig,
|
||||||
|
@ -55,6 +55,7 @@ import {
|
|||||||
MerchantService,
|
MerchantService,
|
||||||
MerchantServiceInterface,
|
MerchantServiceInterface,
|
||||||
setupDb,
|
setupDb,
|
||||||
|
setupSharedDb,
|
||||||
WalletCli,
|
WalletCli,
|
||||||
WalletClient,
|
WalletClient,
|
||||||
WalletService,
|
WalletService,
|
||||||
@ -204,6 +205,90 @@ export async function createSimpleTestkudosEnvironment(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function useSharedTestkudosEnvironment(t: GlobalTestState) {
|
||||||
|
const coinConfig: CoinConfig[] = defaultCoinConfig.map((x) => x("TESTKUDOS"));
|
||||||
|
|
||||||
|
const db = await setupSharedDb(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,
|
||||||
|
});
|
||||||
|
|
||||||
|
const exchangeBankAccount = await bank.createExchangeAccount(
|
||||||
|
"myexchange",
|
||||||
|
"x",
|
||||||
|
);
|
||||||
|
await exchange.addBankAccount("1", exchangeBankAccount);
|
||||||
|
|
||||||
|
bank.setSuggestedExchange(exchange, exchangeBankAccount.accountPaytoUri);
|
||||||
|
|
||||||
|
await bank.start();
|
||||||
|
|
||||||
|
await bank.pingUntilAvailable();
|
||||||
|
|
||||||
|
exchange.addCoinConfigList(coinConfig);
|
||||||
|
|
||||||
|
await exchange.start();
|
||||||
|
await exchange.pingUntilAvailable();
|
||||||
|
|
||||||
|
merchant.addExchange(exchange);
|
||||||
|
|
||||||
|
await merchant.start();
|
||||||
|
await merchant.pingUntilAvailable();
|
||||||
|
|
||||||
|
await merchant.addInstance({
|
||||||
|
id: "default",
|
||||||
|
name: "Default Instance",
|
||||||
|
paytoUris: [getPayto("merchant-default")],
|
||||||
|
defaultWireTransferDelay: Duration.toTalerProtocolDuration(
|
||||||
|
Duration.fromSpec({ minutes: 1 }),
|
||||||
|
),
|
||||||
|
});
|
||||||
|
|
||||||
|
await merchant.addInstance({
|
||||||
|
id: "minst1",
|
||||||
|
name: "minst1",
|
||||||
|
paytoUris: [getPayto("minst1")],
|
||||||
|
defaultWireTransferDelay: Duration.toTalerProtocolDuration(
|
||||||
|
Duration.fromSpec({ minutes: 1 }),
|
||||||
|
),
|
||||||
|
});
|
||||||
|
|
||||||
|
const { walletClient, walletService } = await createWalletDaemonWithClient(
|
||||||
|
t,
|
||||||
|
{ name: "wallet" },
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log("setup done!");
|
||||||
|
|
||||||
|
return {
|
||||||
|
commonDb: db,
|
||||||
|
exchange,
|
||||||
|
merchant,
|
||||||
|
walletClient,
|
||||||
|
walletService,
|
||||||
|
bank,
|
||||||
|
exchangeBankAccount,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run a test case with a simple TESTKUDOS Taler environment, consisting
|
* Run a test case with a simple TESTKUDOS Taler environment, consisting
|
||||||
* of one exchange, one bank and one merchant.
|
* of one exchange, one bank and one merchant.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
This file is part of GNU Taler
|
This file is part of GNU Taler
|
||||||
(C) 2020 Taler Systems S.A.
|
(C) 2023 Taler Systems S.A.
|
||||||
|
|
||||||
GNU Taler is free software; you can redistribute it and/or modify it under the
|
GNU Taler is free software; you can redistribute it and/or modify it under the
|
||||||
terms of the GNU General Public License as published by the Free Software
|
terms of the GNU General Public License as published by the Free Software
|
||||||
@ -20,11 +20,10 @@
|
|||||||
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
|
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
|
||||||
import { GlobalTestState } from "../harness/harness.js";
|
import { GlobalTestState } from "../harness/harness.js";
|
||||||
import {
|
import {
|
||||||
createSimpleTestkudosEnvironmentV2,
|
|
||||||
withdrawViaBankV2,
|
withdrawViaBankV2,
|
||||||
makeTestPaymentV2,
|
makeTestPaymentV2,
|
||||||
|
useSharedTestkudosEnvironment,
|
||||||
} from "../harness/helpers.js";
|
} from "../harness/helpers.js";
|
||||||
import { j2s } from "@gnu-taler/taler-util";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run test for basic, bank-integrated withdrawal and payment.
|
* Run test for basic, bank-integrated withdrawal and payment.
|
||||||
@ -33,7 +32,7 @@ export async function runSimplePaymentTest(t: GlobalTestState) {
|
|||||||
// Set up test environment
|
// Set up test environment
|
||||||
|
|
||||||
const { walletClient, bank, exchange, merchant } =
|
const { walletClient, bank, exchange, merchant } =
|
||||||
await createSimpleTestkudosEnvironmentV2(t);
|
await useSharedTestkudosEnvironment(t);
|
||||||
|
|
||||||
// Withdraw digital cash into the wallet.
|
// Withdraw digital cash into the wallet.
|
||||||
|
|
||||||
|
@ -330,7 +330,7 @@ export class WireGatewayApiClient {
|
|||||||
* but it will be nice to have in utils to be used by others
|
* but it will be nice to have in utils to be used by others
|
||||||
*/
|
*/
|
||||||
export class BankAccessApiClient {
|
export class BankAccessApiClient {
|
||||||
httpLib;
|
httpLib: HttpRequestLibrary;
|
||||||
|
|
||||||
constructor(private args: BankAccessApiClientArgs) {
|
constructor(private args: BankAccessApiClientArgs) {
|
||||||
this.httpLib = createPlatformHttpLib({
|
this.httpLib = createPlatformHttpLib({
|
||||||
|
Loading…
Reference in New Issue
Block a user