summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-cli/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-cli/src')
-rw-r--r--packages/taler-wallet-cli/src/harness/harness.ts86
-rw-r--r--packages/taler-wallet-cli/src/harness/libeufin.ts43
-rw-r--r--packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-bankaccount.ts3
-rw-r--r--packages/taler-wallet-cli/src/integrationtests/test-libeufin-basic.ts9
-rw-r--r--packages/taler-wallet-cli/src/integrationtests/test-peer-to-peer.ts8
5 files changed, 62 insertions, 87 deletions
diff --git a/packages/taler-wallet-cli/src/harness/harness.ts b/packages/taler-wallet-cli/src/harness/harness.ts
index 3b58219bb..c735c9956 100644
--- a/packages/taler-wallet-cli/src/harness/harness.ts
+++ b/packages/taler-wallet-cli/src/harness/harness.ts
@@ -70,7 +70,7 @@ import {
TipCreateConfirmation,
TipCreateRequest,
TippingReserveStatus,
-} from "./merchantApiTypes";
+} from "./merchantApiTypes.js";
const exec = util.promisify(require("child_process").exec);
@@ -478,14 +478,14 @@ class BankServiceBase {
protected globalTestState: GlobalTestState,
protected bankConfig: BankConfig,
protected configFile: string,
- ) { }
+ ) {}
}
/**
* Work in progress. The key point is that both Sandbox and Nexus
* will be configured and started by this class.
*/
-class EufinBankService extends BankServiceBase implements BankServiceHandle {
+class LibEuFinBankService extends BankServiceBase implements BankServiceHandle {
sandboxProc: ProcessWrapper | undefined;
nexusProc: ProcessWrapper | undefined;
@@ -494,8 +494,8 @@ class EufinBankService extends BankServiceBase implements BankServiceHandle {
static async create(
gc: GlobalTestState,
bc: BankConfig,
- ): Promise<EufinBankService> {
- return new EufinBankService(gc, bc, "foo");
+ ): Promise<LibEuFinBankService> {
+ return new LibEuFinBankService(gc, bc, "foo");
}
get port() {
@@ -761,7 +761,10 @@ class EufinBankService extends BankServiceBase implements BankServiceHandle {
}
}
-class PybankService extends BankServiceBase implements BankServiceHandle {
+/**
+ * Implementation of the bank service using the "taler-fakebank-run" tool.
+ */
+class FakebankService extends BankServiceBase implements BankServiceHandle {
proc: ProcessWrapper | undefined;
http = new NodeHttpLib();
@@ -769,41 +772,23 @@ class PybankService extends BankServiceBase implements BankServiceHandle {
static async create(
gc: GlobalTestState,
bc: BankConfig,
- ): Promise<PybankService> {
+ ): Promise<FakebankService> {
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 PybankService(gc, bc, cfgFilename);
+ return new FakebankService(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);
config.write(this.configFile);
}
@@ -815,21 +800,6 @@ class PybankService extends BankServiceBase implements BankServiceHandle {
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,
@@ -844,8 +814,8 @@ class PybankService extends BankServiceBase implements BankServiceHandle {
async start(): Promise<void> {
this.proc = this.globalTestState.spawnService(
- "taler-bank-manage",
- ["-c", this.configFile, "serve"],
+ "taler-fakebank-run",
+ ["-c", this.configFile],
"bank",
);
}
@@ -857,7 +827,7 @@ class PybankService extends BankServiceBase implements BankServiceHandle {
}
// Use libeufin bank instead of pybank.
-const useLibeufinBank = process.env.WALLET_HARNESS_WITH_EUFIN;
+const useLibeufinBank = true;
/**
* Return a euFin or a pyBank implementation of
@@ -866,21 +836,21 @@ const useLibeufinBank = process.env.WALLET_HARNESS_WITH_EUFIN;
* on a particular env variable.
*/
function getBankServiceImpl(): {
- prototype: typeof PybankService.prototype;
- create: typeof PybankService.create;
+ prototype: typeof FakebankService.prototype;
+ create: typeof FakebankService.create;
} {
if (useLibeufinBank)
return {
- prototype: EufinBankService.prototype,
- create: EufinBankService.create,
+ prototype: LibEuFinBankService.prototype,
+ create: LibEuFinBankService.create,
};
return {
- prototype: PybankService.prototype,
- create: PybankService.create,
+ prototype: FakebankService.prototype,
+ create: FakebankService.create,
};
}
-export type BankService = PybankService;
+export type BankService = FakebankService;
export const BankService = getBankServiceImpl();
export class FakeBankService {
@@ -923,7 +893,7 @@ export class FakeBankService {
private globalTestState: GlobalTestState,
private bankConfig: FakeBankConfig,
private configFile: string,
- ) { }
+ ) {}
async start(): Promise<void> {
this.proc = this.globalTestState.spawnService(
@@ -1189,7 +1159,7 @@ export class ExchangeService implements ExchangeServiceInterface {
private exchangeConfig: ExchangeConfig,
private configFilename: string,
private keyPair: EddsaKeyPair,
- ) { }
+ ) {}
get name() {
return this.exchangeConfig.name;
@@ -1442,7 +1412,7 @@ export class MerchantApiClient {
constructor(
private baseUrl: string,
public readonly auth: MerchantAuthConfiguration,
- ) { }
+ ) {}
async changeAuth(auth: MerchantAuthConfiguration): Promise<void> {
const url = new URL("private/auth", this.baseUrl);
@@ -1635,7 +1605,7 @@ export class MerchantService implements MerchantServiceInterface {
private globalState: GlobalTestState,
private merchantConfig: MerchantConfig,
private configFilename: string,
- ) { }
+ ) {}
private currentTimetravel: Duration | undefined;
@@ -1947,8 +1917,10 @@ export class WalletCli {
const resp = await sh(
self.globalTestState,
`wallet-${self.name}`,
- `taler-wallet-cli ${self.timetravelArg ?? ""
- } --no-throttle -LTRACE --wallet-db '${self.dbfile
+ `taler-wallet-cli ${
+ self.timetravelArg ?? ""
+ } --no-throttle -LTRACE --wallet-db '${
+ self.dbfile
}' api '${op}' ${shellWrap(JSON.stringify(payload))}`,
);
console.log("--- wallet core response ---");
diff --git a/packages/taler-wallet-cli/src/harness/libeufin.ts b/packages/taler-wallet-cli/src/harness/libeufin.ts
index 0107d5a8b..7356a6273 100644
--- a/packages/taler-wallet-cli/src/harness/libeufin.ts
+++ b/packages/taler-wallet-cli/src/harness/libeufin.ts
@@ -36,7 +36,7 @@ import {
runCommand,
setupDb,
sh,
- getRandomIban
+ getRandomIban,
} from "../harness/harness.js";
import {
LibeufinSandboxApi,
@@ -53,13 +53,10 @@ import {
CreateAnastasisFacadeRequest,
PostNexusTaskRequest,
PostNexusPermissionRequest,
- CreateNexusUserRequest
+ CreateNexusUserRequest,
} from "../harness/libeufin-apis.js";
-export {
- LibeufinSandboxApi,
- LibeufinNexusApi
-}
+export { LibeufinSandboxApi, LibeufinNexusApi };
export interface LibeufinServices {
libeufinSandbox: LibeufinSandboxService;
@@ -206,6 +203,16 @@ export class LibeufinSandboxService implements LibeufinSandboxServiceInterface {
}
async start(): Promise<void> {
+ await sh(
+ this.globalTestState,
+ "libeufin-sandbox-config",
+ "libeufin-sandbox config default",
+ {
+ ...process.env,
+ LIBEUFIN_SANDBOX_DB_CONNECTION: this.sandboxConfig.databaseJdbcUri,
+ },
+ );
+
this.sandboxProc = this.globalTestState.spawnService(
"libeufin-sandbox",
["serve", "--port", `${this.sandboxConfig.httpPort}`],
@@ -235,7 +242,8 @@ export class LibeufinSandboxService implements LibeufinSandboxServiceInterface {
debit: string,
credit: string,
amount: string, // $currency:x.y
- subject: string,): Promise<string> {
+ subject: string,
+ ): Promise<string> {
const stdout = await sh(
this.globalTestState,
"libeufin-sandbox-maketransfer",
@@ -428,7 +436,7 @@ export class LibeufinCli {
LIBEUFIN_SANDBOX_URL: this.cliDetails.sandboxUrl,
LIBEUFIN_SANDBOX_USERNAME: "admin",
LIBEUFIN_SANDBOX_PASSWORD: "secret",
- }
+ };
}
async checkSandbox(): Promise<void> {
@@ -436,7 +444,7 @@ export class LibeufinCli {
this.globalTestState,
"libeufin-cli-checksandbox",
"libeufin-cli sandbox check",
- this.env()
+ this.env(),
);
}
@@ -445,7 +453,7 @@ export class LibeufinCli {
this.globalTestState,
"libeufin-cli-createebicshost",
`libeufin-cli sandbox ebicshost create --host-id=${hostId}`,
- this.env()
+ this.env(),
);
console.log(stdout);
}
@@ -460,7 +468,7 @@ export class LibeufinCli {
` --host-id=${details.hostId}` +
` --partner-id=${details.partnerId}` +
` --user-id=${details.userId}`,
- this.env()
+ this.env(),
);
console.log(stdout);
}
@@ -480,7 +488,7 @@ export class LibeufinCli {
` --ebics-host-id=${sd.hostId}` +
` --ebics-partner-id=${sd.partnerId}` +
` --ebics-user-id=${sd.userId}`,
- this.env()
+ this.env(),
);
console.log(stdout);
}
@@ -490,7 +498,7 @@ export class LibeufinCli {
this.globalTestState,
"libeufin-cli-generatetransactions",
`libeufin-cli sandbox bankaccount generate-transactions ${accountName}`,
- this.env()
+ this.env(),
);
console.log(stdout);
}
@@ -500,7 +508,7 @@ export class LibeufinCli {
this.globalTestState,
"libeufin-cli-showsandboxtransactions",
`libeufin-cli sandbox bankaccount transactions ${accountName}`,
- this.env()
+ this.env(),
);
console.log(stdout);
}
@@ -834,9 +842,12 @@ export async function launchLibeufinServices(
libeufinNexus,
nb.twgHistoryPermission,
);
- break;
+ break;
case "anastasis":
- await LibeufinNexusApi.createAnastasisFacade(libeufinNexus, nb.anastasisReq);
+ await LibeufinNexusApi.createAnastasisFacade(
+ libeufinNexus,
+ nb.anastasisReq,
+ );
}
}
}
diff --git a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-bankaccount.ts b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-bankaccount.ts
index 84b401119..cb57c7d0a 100644
--- a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-bankaccount.ts
+++ b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-bankaccount.ts
@@ -96,7 +96,7 @@ export async function runLibeufinApiBankaccountTest(t: GlobalTestState) {
debtorName: "mock2",
amount: "1",
subject: "mock subject",
- }
+ },
);
await LibeufinNexusApi.fetchTransactions(nexus, "local-mock");
let transactions = await LibeufinNexusApi.getAccountTransactions(
@@ -106,4 +106,5 @@ export async function runLibeufinApiBankaccountTest(t: GlobalTestState) {
let el = findNexusPayment("mock subject", transactions.data);
t.assertTrue(el instanceof Object);
}
+
runLibeufinApiBankaccountTest.suites = ["libeufin"];
diff --git a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-basic.ts b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-basic.ts
index aa5d4c9c0..ca7dc33d8 100644
--- a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-basic.ts
+++ b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-basic.ts
@@ -17,12 +17,7 @@
/**
* Imports.
*/
-import {
- AbsoluteTime,
- ContractTerms,
- Duration,
- durationFromSpec,
-} from "@gnu-taler/taler-util";
+import { AbsoluteTime, ContractTerms, Duration } from "@gnu-taler/taler-util";
import {
WalletApiOperation,
HarnessExchangeBankAccount,
@@ -42,7 +37,7 @@ import {
LibeufinNexusService,
LibeufinSandboxApi,
LibeufinSandboxService,
-} from "../harness/libeufin";
+} from "../harness/libeufin.js";
const exchangeIban = "DE71500105179674997361";
const customerIban = "DE84500105176881385584";
diff --git a/packages/taler-wallet-cli/src/integrationtests/test-peer-to-peer.ts b/packages/taler-wallet-cli/src/integrationtests/test-peer-to-peer.ts
index 5c716dc54..c22258bc8 100644
--- a/packages/taler-wallet-cli/src/integrationtests/test-peer-to-peer.ts
+++ b/packages/taler-wallet-cli/src/integrationtests/test-peer-to-peer.ts
@@ -22,7 +22,6 @@ import { GlobalTestState } from "../harness/harness.js";
import {
createSimpleTestkudosEnvironment,
withdrawViaBank,
- makeTestPayment,
} from "../harness/helpers.js";
/**
@@ -55,9 +54,7 @@ export async function runPeerToPeerTest(t: GlobalTestState) {
const checkResp = await wallet.client.call(
WalletApiOperation.CheckPeerPushPayment,
{
- contractPriv: resp.contractPriv,
- exchangeBaseUrl: resp.exchangeBaseUrl,
- pursePub: resp.pursePub,
+ talerUri: resp.talerUri,
},
);
@@ -66,8 +63,7 @@ export async function runPeerToPeerTest(t: GlobalTestState) {
const acceptResp = await wallet.client.call(
WalletApiOperation.AcceptPeerPushPayment,
{
- exchangeBaseUrl: resp.exchangeBaseUrl,
- pursePub: resp.pursePub,
+ peerPushPaymentIncomingId: checkResp.peerPushPaymentIncomingId,
},
);