summaryrefslogtreecommitdiff
path: root/packages/taler-integrationtests/src/harness.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2020-08-13 00:26:55 +0530
committerFlorian Dold <florian.dold@gmail.com>2020-08-13 00:26:55 +0530
commite9ed3b18672af919efa12364b97fd2b7efe21cd9 (patch)
tree42cd7e7bdf4686f463080e0ad879d06ff624a85b /packages/taler-integrationtests/src/harness.ts
parent4891c4c7ceec46781fa2d7b7b5a3347616587681 (diff)
downloadwallet-core-e9ed3b18672af919efa12364b97fd2b7efe21cd9.tar.gz
wallet-core-e9ed3b18672af919efa12364b97fd2b7efe21cd9.tar.bz2
wallet-core-e9ed3b18672af919efa12364b97fd2b7efe21cd9.zip
integration test for paywall flow
Diffstat (limited to 'packages/taler-integrationtests/src/harness.ts')
-rw-r--r--packages/taler-integrationtests/src/harness.ts32
1 files changed, 27 insertions, 5 deletions
diff --git a/packages/taler-integrationtests/src/harness.ts b/packages/taler-integrationtests/src/harness.ts
index 0cf769163..8f9c540f6 100644
--- a/packages/taler-integrationtests/src/harness.ts
+++ b/packages/taler-integrationtests/src/harness.ts
@@ -50,6 +50,9 @@ import {
GetWithdrawalDetailsForUriRequest,
WithdrawUriInfoResponse,
codecForWithdrawUriInfoResponse,
+ ConfirmPayRequest,
+ ConfirmPayResult,
+ codecForConfirmPayResult,
} from "taler-wallet-core";
import { URL } from "url";
import axios from "axios";
@@ -58,6 +61,7 @@ import {
codecForPostOrderResponse,
PostOrderRequest,
PostOrderResponse,
+ MerchantOrderPrivateStatusResponse,
} from "./merchantApiTypes";
import {
EddsaKeyPair,
@@ -886,6 +890,13 @@ export interface MerchantConfig {
database: string;
}
+
+export interface PrivateOrderStatusQuery {
+ instance?: string,
+ orderId: string,
+ sessionId?: string,
+}
+
export class MerchantService {
static fromExistingConfig(gc: GlobalTestState, name: string) {
const cfgFilename = gc.testDir + `/merchant-${name}.conf`;
@@ -982,17 +993,20 @@ export class MerchantService {
});
}
- async queryPrivateOrderStatus(instanceName: string, orderId: string) {
+ async queryPrivateOrderStatus(query: PrivateOrderStatusQuery): Promise<MerchantOrderPrivateStatusResponse> {
const reqUrl = new URL(
- `private/orders/${orderId}`,
- this.makeInstanceBaseUrl(instanceName),
+ `private/orders/${query.orderId}`,
+ this.makeInstanceBaseUrl(query.instance),
);
+ if (query.sessionId) {
+ reqUrl.searchParams.set("session_id", query.sessionId);
+ }
const resp = await axios.get(reqUrl.href);
return codecForMerchantOrderPrivateStatusResponse().decode(resp.data);
}
- makeInstanceBaseUrl(instanceName: string): string {
- if (instanceName === "default") {
+ makeInstanceBaseUrl(instanceName?: string): string {
+ if (instanceName === undefined || instanceName === "default") {
return `http://localhost:${this.merchantConfig.httpPort}/`;
} else {
return `http://localhost:${this.merchantConfig.httpPort}/instances/${instanceName}/`;
@@ -1177,6 +1191,14 @@ export class WalletCli {
throw new OperationFailedError(resp.error);
}
+ async confirmPay(req: ConfirmPayRequest): Promise<ConfirmPayResult> {
+ const resp = await this.apiRequest("confirmPay", req);
+ if (resp.type === "response") {
+ return codecForConfirmPayResult().decode(resp.result);
+ }
+ throw new OperationFailedError(resp.error);
+ }
+
async addExchange(req: AddExchangeRequest): Promise<void> {
const resp = await this.apiRequest("addExchange", req);
if (resp.type === "response") {