diff options
Diffstat (limited to 'packages/taler-integrationtests/src/harness.ts')
-rw-r--r-- | packages/taler-integrationtests/src/harness.ts | 67 |
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") { |