diff options
author | Florian Dold <florian.dold@gmail.com> | 2020-08-13 00:26:55 +0530 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2020-08-13 00:26:55 +0530 |
commit | e9ed3b18672af919efa12364b97fd2b7efe21cd9 (patch) | |
tree | 42cd7e7bdf4686f463080e0ad879d06ff624a85b /packages/taler-integrationtests/src/harness.ts | |
parent | 4891c4c7ceec46781fa2d7b7b5a3347616587681 (diff) | |
download | wallet-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.ts | 32 |
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") { |