summaryrefslogtreecommitdiff
path: root/packages/taler-integrationtests/src/harness.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-integrationtests/src/harness.ts')
-rw-r--r--packages/taler-integrationtests/src/harness.ts67
1 files changed, 63 insertions, 4 deletions
diff --git a/packages/taler-integrationtests/src/harness.ts b/packages/taler-integrationtests/src/harness.ts
index 620b89e76..e40798b4b 100644
--- a/packages/taler-integrationtests/src/harness.ts
+++ b/packages/taler-integrationtests/src/harness.ts
@@ -72,6 +72,10 @@ import {
CoinDumpJson,
ForceExchangeUpdateRequest,
ForceRefreshRequest,
+ PrepareTipResult,
+ PrepareTipRequest,
+ codecForPrepareTipResult,
+ AcceptTipRequest,
} from "taler-wallet-core";
import { URL } from "url";
import axios, { AxiosError } from "axios";
@@ -81,6 +85,9 @@ import {
PostOrderRequest,
PostOrderResponse,
MerchantOrderPrivateStatusResponse,
+ TippingReserveStatus,
+ TipCreateConfirmation,
+ TipCreateRequest,
} from "./merchantApiTypes";
import { ApplyRefundResponse } from "taler-wallet-core";
import { PendingOperationsResponse } from "taler-wallet-core";
@@ -1216,10 +1223,46 @@ export namespace MerchantPrivateApi {
};
}
- export async function createTippingReserve(merchantService: MerchantServiceInterface,
-
+ export async function createTippingReserve(
+ merchantService: MerchantServiceInterface,
+ instance: string,
req: CreateMerchantTippingReserveRequest,
- ): Promise<CreateMerchantTippingReserveConfirmation> {}
+ ): Promise<CreateMerchantTippingReserveConfirmation> {
+ const reqUrl = new URL(
+ `private/reserves`,
+ merchantService.makeInstanceBaseUrl(instance),
+ );
+ const resp = await axios.post(reqUrl.href, req);
+ // FIXME: validate
+ return resp.data;
+ }
+
+ export async function queryTippingReserves(
+ merchantService: MerchantServiceInterface,
+ instance: string,
+ ): Promise<TippingReserveStatus> {
+ const reqUrl = new URL(
+ `private/reserves`,
+ merchantService.makeInstanceBaseUrl(instance),
+ );
+ const resp = await axios.get(reqUrl.href);
+ // FIXME: validate
+ return resp.data;
+ }
+
+ export async function giveTip(
+ merchantService: MerchantServiceInterface,
+ instance: string,
+ req: TipCreateRequest,
+ ): Promise<TipCreateConfirmation> {
+ const reqUrl = new URL(
+ `private/tips`,
+ merchantService.makeInstanceBaseUrl(instance),
+ );
+ const resp = await axios.post(reqUrl.href, req);
+ // FIXME: validate
+ return resp.data;
+ }
}
export interface CreateMerchantTippingReserveRequest {
@@ -1238,7 +1281,7 @@ export interface CreateMerchantTippingReserveConfirmation {
reserve_pub: string;
// Wire account of the exchange where to transfer the funds
- payto_url: string;
+ payto_uri: string;
}
export class MerchantService implements MerchantServiceInterface {
@@ -1594,6 +1637,22 @@ export class WalletCli {
throw new OperationFailedError(resp.error);
}
+ async prepareTip(req: PrepareTipRequest): Promise<PrepareTipResult> {
+ const resp = await this.apiRequest("prepareTip", req);
+ if (resp.type === "response") {
+ return codecForPrepareTipResult().decode(resp.result);
+ }
+ throw new OperationFailedError(resp.error);
+ }
+
+ async acceptTip(req: AcceptTipRequest): Promise<void> {
+ const resp = await this.apiRequest("acceptTip", req);
+ if (resp.type === "response") {
+ return;
+ }
+ throw new OperationFailedError(resp.error);
+ }
+
async dumpCoins(): Promise<CoinDumpJson> {
const resp = await this.apiRequest("dumpCoins", {});
if (resp.type === "response") {