gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] 02/02: test case for /paid API, implement fault-inje


From: gnunet
Subject: [taler-wallet-core] 02/02: test case for /paid API, implement fault-injected merchant
Date: Wed, 19 Aug 2020 17:26:50 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository wallet-core.

commit d9b73a30c1ce67f611f9d605bdf163c3e868f2c2
Author: Florian Dold <florian.dold@gmail.com>
AuthorDate: Wed Aug 19 20:56:10 2020 +0530

    test case for /paid API, implement fault-injected merchant
---
 .../taler-integrationtests/src/faultInjection.ts   |  41 ++++++++
 packages/taler-integrationtests/src/harness.ts     | 112 +++++++++++---------
 packages/taler-integrationtests/src/helpers.ts     |  93 +++++++++++++++++
 .../src/scenario-prompt-payment.ts                 |   6 +-
 .../src/scenario-rerun-payment-multiple.ts         |   7 +-
 .../src/test-merchant-longpolling.ts               |   6 +-
 .../src/{test-paywall-flow.ts => test-pay-paid.ts} | 114 ++++++---------------
 .../src/test-payment-fault.ts                      |   7 +-
 .../src/test-payment-idempotency.ts                |   8 +-
 .../src/test-payment-multiple.ts                   |   7 +-
 .../taler-integrationtests/src/test-payment.ts     |   8 +-
 .../src/test-paywall-flow.ts                       |  16 +--
 .../src/test-refund-incremental.ts                 |  14 +--
 packages/taler-integrationtests/src/test-refund.ts |  10 +-
 14 files changed, 273 insertions(+), 176 deletions(-)

diff --git a/packages/taler-integrationtests/src/faultInjection.ts 
b/packages/taler-integrationtests/src/faultInjection.ts
index 46ab1c5f..a85b1dd7 100644
--- a/packages/taler-integrationtests/src/faultInjection.ts
+++ b/packages/taler-integrationtests/src/faultInjection.ts
@@ -30,7 +30,15 @@ import {
   ExchangeService,
   BankService,
   ExchangeServiceInterface,
+  MerchantServiceInterface,
+  MerchantService,
+  PrivateOrderStatusQuery,
 } from "./harness";
+import {
+  PostOrderRequest,
+  PostOrderResponse,
+  MerchantOrderPrivateStatusResponse,
+} from "./merchantApiTypes";
 
 export interface FaultProxyConfig {
   inboundPort: number;
@@ -220,3 +228,36 @@ export class FaultInjectedExchangeService implements 
ExchangeServiceInterface {
     this.port = proxyInboundPort;
   }
 }
+
+export class FaultInjectedMerchantService implements MerchantServiceInterface {
+  baseUrl: string;
+  port: number;
+  faultProxy: FaultProxy;
+
+  get name(): string {
+    return this.innerMerchant.name;
+  }
+
+  private innerMerchant: MerchantService;
+  private inboundPort: number;
+
+  constructor(
+    t: GlobalTestState,
+    m: MerchantService,
+    proxyInboundPort: number,
+  ) {
+    this.innerMerchant = m;
+    this.faultProxy = new FaultProxy(t, {
+      inboundPort: proxyInboundPort,
+      targetPort: m.port,
+    });
+    this.faultProxy.start();
+    this.inboundPort = proxyInboundPort;
+  }
+
+  makeInstanceBaseUrl(instanceName?: string | undefined): string {
+    const url = new URL(this.innerMerchant.makeInstanceBaseUrl(instanceName));
+    url.port = `${this.inboundPort}`;
+    return url.href;
+  }
+}
diff --git a/packages/taler-integrationtests/src/harness.ts 
b/packages/taler-integrationtests/src/harness.ts
index df2d9f2e..77914af6 100644
--- a/packages/taler-integrationtests/src/harness.ts
+++ b/packages/taler-integrationtests/src/harness.ts
@@ -909,7 +909,62 @@ export interface PrivateOrderStatusQuery {
   sessionId?: string;
 }
 
-export class MerchantService {
+export interface MerchantServiceInterface {
+  makeInstanceBaseUrl(instanceName?: string): string;
+  readonly port: number;
+  readonly name: string;
+}
+
+export namespace MerchantPrivateApi {
+  export async function createOrder(
+    merchantService: MerchantServiceInterface,
+    instanceName: string,
+    req: PostOrderRequest,
+  ): Promise<PostOrderResponse> {
+    const baseUrl = merchantService.makeInstanceBaseUrl(instanceName);
+    let url = new URL("private/orders", baseUrl);
+    const resp = await axios.post(url.href, req);
+    return codecForPostOrderResponse().decode(resp.data);
+  }
+
+  export async function queryPrivateOrderStatus(
+    merchantService: MerchantServiceInterface,
+    query: PrivateOrderStatusQuery,
+  ): Promise<MerchantOrderPrivateStatusResponse> {
+    const reqUrl = new URL(
+      `private/orders/${query.orderId}`,
+      merchantService.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);
+  }
+
+  export async function giveRefund(
+    merchantService: MerchantServiceInterface,
+    r: {
+    instance: string;
+    orderId: string;
+    amount: string;
+    justification: string;
+  }): Promise<{ talerRefundUri: string }> {
+    const reqUrl = new URL(
+      `private/orders/${r.orderId}/refund`,
+      merchantService.makeInstanceBaseUrl(r.instance),
+    );
+    const resp = await axios.post(reqUrl.href, {
+      refund: r.amount,
+      reason: r.justification,
+    });
+    return {
+      talerRefundUri: resp.data.taler_refund_uri,
+    };
+  }
+}
+
+export class MerchantService implements MerchantServiceInterface {
   static fromExistingConfig(gc: GlobalTestState, name: string) {
     const cfgFilename = gc.testDir + `/merchant-${name}.conf`;
     const config = Configuration.load(cfgFilename);
@@ -930,6 +985,14 @@ export class MerchantService {
     private configFilename: string,
   ) {}
 
+  get port(): number {
+    return this.merchantConfig.httpPort;
+  }
+
+  get name(): string {
+    return this.merchantConfig.name;
+  }
+
   async start(): Promise<void> {
     await exec(`taler-merchant-dbinit -c "${this.configFilename}"`);
 
@@ -1005,20 +1068,6 @@ export class MerchantService {
     });
   }
 
-  async queryPrivateOrderStatus(
-    query: PrivateOrderStatusQuery,
-  ): Promise<MerchantOrderPrivateStatusResponse> {
-    const reqUrl = new URL(
-      `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 === undefined || instanceName === "default") {
       return `http://localhost:${this.merchantConfig.httpPort}/`;
@@ -1027,39 +1076,6 @@ export class MerchantService {
     }
   }
 
-  async giveRefund(r: {
-    instance: string;
-    orderId: string;
-    amount: string;
-    justification: string;
-  }): Promise<{ talerRefundUri: string }> {
-    const reqUrl = new URL(
-      `private/orders/${r.orderId}/refund`,
-      this.makeInstanceBaseUrl(r.instance),
-    );
-    const resp = await axios.post(reqUrl.href, {
-      refund: r.amount,
-      reason: r.justification,
-    });
-    return {
-      talerRefundUri: resp.data.taler_refund_uri,
-    };
-  }
-
-  async createOrder(
-    instanceName: string,
-    req: PostOrderRequest,
-  ): Promise<PostOrderResponse> {
-    let url;
-    if (instanceName === "default") {
-      url = `http://localhost:${this.merchantConfig.httpPort}/private/orders`;
-    } else {
-      url = 
`http://localhost:${this.merchantConfig.httpPort}/instances/${instanceName}/private/orders`;
-    }
-    const resp = await axios.post(url, req);
-    return codecForPostOrderResponse().decode(resp.data);
-  }
-
   async pingUntilAvailable(): Promise<void> {
     const url = `http://localhost:${this.merchantConfig.httpPort}/config`;
     await pingProc(this.proc, url, `merchant (${this.merchantConfig.name})`);
diff --git a/packages/taler-integrationtests/src/helpers.ts 
b/packages/taler-integrationtests/src/helpers.ts
index b37b6b96..86f530e0 100644
--- a/packages/taler-integrationtests/src/helpers.ts
+++ b/packages/taler-integrationtests/src/helpers.ts
@@ -33,8 +33,10 @@ import {
   BankService,
   defaultCoinConfig,
   ExchangeBankAccount,
+  MerchantServiceInterface,
 } from "./harness";
 import { AmountString } from "taler-wallet-core/lib/types/talerTypes";
+import { FaultInjectedMerchantService } from "./faultInjection";
 
 export interface SimpleTestEnvironment {
   commonDb: DbInfo;
@@ -123,6 +125,97 @@ export async function createSimpleTestkudosEnvironment(
   };
 }
 
+export interface FaultyMerchantTestEnvironment {
+  commonDb: DbInfo;
+  bank: BankService;
+  exchange: ExchangeService;
+  exchangeBankAccount: ExchangeBankAccount;
+  merchant: MerchantService;
+  faultyMerchant: FaultInjectedMerchantService;
+  wallet: WalletCli;
+}
+
+/**
+ * Run a test case with a simple TESTKUDOS Taler environment, consisting
+ * of one exchange, one bank and one merchant.
+ */
+export async function createFaultInjectedMerchantTestkudosEnvironment(
+  t: GlobalTestState,
+): Promise<FaultyMerchantTestEnvironment> {
+  const db = await setupDb(t);
+
+  const bank = await BankService.create(t, {
+    allowRegistrations: true,
+    currency: "TESTKUDOS",
+    database: db.connStr,
+    httpPort: 8082,
+  });
+
+  const exchange = ExchangeService.create(t, {
+    name: "testexchange-1",
+    currency: "TESTKUDOS",
+    httpPort: 8081,
+    database: db.connStr,
+  });
+
+  const merchant = await MerchantService.create(t, {
+    name: "testmerchant-1",
+    currency: "TESTKUDOS",
+    httpPort: 8083,
+    database: db.connStr,
+  });
+
+  const faultyMerchant = new FaultInjectedMerchantService(t, merchant, 9083);
+
+  const exchangeBankAccount = await bank.createExchangeAccount(
+    "MyExchange",
+    "x",
+  );
+  exchange.addBankAccount("1", exchangeBankAccount);
+
+  bank.setSuggestedExchange(exchange, exchangeBankAccount.accountPaytoUri);
+
+  await bank.start();
+
+  await bank.pingUntilAvailable();
+
+  exchange.addOfferedCoins(defaultCoinConfig);
+
+  await exchange.start();
+  await exchange.pingUntilAvailable();
+
+  merchant.addExchange(exchange);
+
+  await merchant.start();
+  await merchant.pingUntilAvailable();
+
+  await merchant.addInstance({
+    id: "minst1",
+    name: "minst1",
+    paytoUris: ["payto://x-taler-bank/minst1"],
+  });
+
+  await merchant.addInstance({
+    id: "default",
+    name: "Default Instance",
+    paytoUris: [`payto://x-taler-bank/merchant-default`],
+  });
+
+  console.log("setup done!");
+
+  const wallet = new WalletCli(t);
+
+  return {
+    commonDb: db,
+    exchange,
+    merchant,
+    wallet,
+    bank,
+    exchangeBankAccount,
+    faultyMerchant,
+  };
+}
+
 /**
  * Withdraw balance.
  */
diff --git a/packages/taler-integrationtests/src/scenario-prompt-payment.ts 
b/packages/taler-integrationtests/src/scenario-prompt-payment.ts
index 3e4bfc6c..3c34075d 100644
--- a/packages/taler-integrationtests/src/scenario-prompt-payment.ts
+++ b/packages/taler-integrationtests/src/scenario-prompt-payment.ts
@@ -17,7 +17,7 @@
 /**
  * Imports.
  */
-import { runTest, GlobalTestState } from "./harness";
+import { runTest, GlobalTestState, MerchantPrivateApi } from "./harness";
 import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
 
 /**
@@ -39,7 +39,7 @@ runTest(async (t: GlobalTestState) => {
 
   // Set up order.
 
-  const orderResp = await merchant.createOrder("default", {
+  const orderResp = await MerchantPrivateApi.createOrder(merchant, "default", {
     order: {
       summary: "Buy me!",
       amount: "TESTKUDOS:5",
@@ -47,7 +47,7 @@ runTest(async (t: GlobalTestState) => {
     },
   });
 
-  let orderStatus = await merchant.queryPrivateOrderStatus({
+  let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
     orderId: orderResp.order_id,
   });
 
diff --git 
a/packages/taler-integrationtests/src/scenario-rerun-payment-multiple.ts 
b/packages/taler-integrationtests/src/scenario-rerun-payment-multiple.ts
index 525ba9a2..3a98987b 100644
--- a/packages/taler-integrationtests/src/scenario-rerun-payment-multiple.ts
+++ b/packages/taler-integrationtests/src/scenario-rerun-payment-multiple.ts
@@ -24,6 +24,7 @@ import {
   MerchantService,
   WalletCli,
   runTestWithState,
+  MerchantPrivateApi,
 } from "./harness";
 import { withdrawViaBank } from "./helpers";
 import fs from "fs";
@@ -52,7 +53,7 @@ async function withdrawAndPay(
 
   // Set up order.
 
-  const orderResp = await merchant.createOrder("default", {
+  const orderResp = await MerchantPrivateApi.createOrder(merchant, "default", {
     order: {
       summary: "Buy me!",
       amount: "TESTKUDOS:80",
@@ -60,7 +61,7 @@ async function withdrawAndPay(
     },
   });
 
-  let orderStatus = await merchant.queryPrivateOrderStatus({
+  let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
     orderId: orderResp.order_id,
   });
 
@@ -81,7 +82,7 @@ async function withdrawAndPay(
 
   // Check if payment was successful.
 
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: orderResp.order_id,
   });
 
diff --git a/packages/taler-integrationtests/src/test-merchant-longpolling.ts 
b/packages/taler-integrationtests/src/test-merchant-longpolling.ts
index 664926c0..1470cadf 100644
--- a/packages/taler-integrationtests/src/test-merchant-longpolling.ts
+++ b/packages/taler-integrationtests/src/test-merchant-longpolling.ts
@@ -17,7 +17,7 @@
 /**
  * Imports.
  */
-import { runTest, GlobalTestState } from "./harness";
+import { runTest, GlobalTestState, MerchantPrivateApi } from "./harness";
 import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
 import {
   PreparePayResultType,
@@ -53,7 +53,7 @@ runTest(async (t: GlobalTestState) => {
    * =========================================================================
    */
 
-  let orderResp = await merchant.createOrder("default", {
+  let orderResp = await MerchantPrivateApi.createOrder(merchant, "default", {
     order: {
       summary: "Buy me!",
       amount: "TESTKUDOS:5",
@@ -63,7 +63,7 @@ runTest(async (t: GlobalTestState) => {
 
   const firstOrderId = orderResp.order_id;
 
-  let orderStatus = await merchant.queryPrivateOrderStatus({
+  let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
     orderId: orderResp.order_id,
     sessionId: "mysession-one",
   });
diff --git a/packages/taler-integrationtests/src/test-paywall-flow.ts 
b/packages/taler-integrationtests/src/test-pay-paid.ts
similarity index 59%
copy from packages/taler-integrationtests/src/test-paywall-flow.ts
copy to packages/taler-integrationtests/src/test-pay-paid.ts
index 74be96c8..eb58fce3 100644
--- a/packages/taler-integrationtests/src/test-paywall-flow.ts
+++ b/packages/taler-integrationtests/src/test-pay-paid.ts
@@ -17,14 +17,16 @@
 /**
  * Imports.
  */
-import { runTest, GlobalTestState } from "./harness";
-import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
+import { runTest, GlobalTestState, MerchantPrivateApi } from "./harness";
+import { createSimpleTestkudosEnvironment, withdrawViaBank, 
createFaultInjectedMerchantTestkudosEnvironment } from "./helpers";
 import {
   PreparePayResultType,
   codecForMerchantOrderStatusUnpaid,
   ConfirmPayResultType,
+  URL,
 } from "taler-wallet-core";
 import axios from "axios";
+import { FaultInjectionRequestContext } from "./faultInjection";
 
 /**
  * Run test for basic, bank-integrated withdrawal.
@@ -36,8 +38,8 @@ runTest(async (t: GlobalTestState) => {
     wallet,
     bank,
     exchange,
-    merchant,
-  } = await createSimpleTestkudosEnvironment(t);
+    faultyMerchant,
+  } = await createFaultInjectedMerchantTestkudosEnvironment(t);
 
   // Withdraw digital cash into the wallet.
 
@@ -52,7 +54,9 @@ runTest(async (t: GlobalTestState) => {
    * =========================================================================
    */
 
-  let orderResp = await merchant.createOrder("default", {
+  const merchant = faultyMerchant;
+
+  let orderResp = await MerchantPrivateApi.createOrder(merchant, "default", {
     order: {
       summary: "Buy me!",
       amount: "TESTKUDOS:5",
@@ -60,9 +64,8 @@ runTest(async (t: GlobalTestState) => {
     },
   });
 
-  const firstOrderId = orderResp.order_id;
 
-  let orderStatus = await merchant.queryPrivateOrderStatus({
+  let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
     orderId: orderResp.order_id,
     sessionId: "mysession-one",
   });
@@ -131,11 +134,11 @@ runTest(async (t: GlobalTestState) => {
 
   /**
    * =========================================================================
-   * Now change up the session ID!
+   * Now change up the session ID and do payment re-play!
    * =========================================================================
    */
 
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: orderResp.order_id,
     sessionId: "mysession-two",
   });
@@ -145,6 +148,20 @@ runTest(async (t: GlobalTestState) => {
 
   publicOrderStatusUrl = orderStatus.order_status_url;
 
+  let numPayRequested = 0;
+  let numPaidRequested = 0;
+
+  faultyMerchant.faultProxy.addFault({
+    modifyRequest(ctx: FaultInjectionRequestContext) {
+      const url = new URL(ctx.requestUrl);
+      if (url.pathname.endsWith("/pay")) {
+        numPayRequested++;
+      } else if (url.pathname.endsWith("/paid")) {
+        numPaidRequested++;
+      }
+    }
+  });
+
   // Pay with new taler://pay URI, which should
   // have the new session ID!
   // Wallet should now automatically re-play payment.
@@ -155,81 +172,8 @@ runTest(async (t: GlobalTestState) => {
   t.assertTrue(preparePayResp.status === 
PreparePayResultType.AlreadyConfirmed);
   t.assertTrue(preparePayResp.paid);
 
-  /**
-   * =========================================================================
-   * Now we test re-purchase detection.
-   * =========================================================================
-   */
-
-  orderResp = await merchant.createOrder("default", {
-    order: {
-      summary: "Buy me!",
-      amount: "TESTKUDOS:5",
-      // Same fulfillment URL as previously!
-      fulfillment_url: "https://example.com/article42";,
-    },
-  });
-
-  const secondOrderId = orderResp.order_id;
-
-  orderStatus = await merchant.queryPrivateOrderStatus({
-    orderId: secondOrderId,
-    sessionId: "mysession-three",
-  });
-
-  t.assertTrue(orderStatus.order_status === "unpaid");
-
-  t.assertTrue(orderStatus.already_paid_order_id === undefined);
-  publicOrderStatusUrl = orderStatus.order_status_url;
-
-  // Here the re-purchase detection should kick in,
-  // and the wallet should re-pay for the old order
-  // under the new session ID (mysession-three).
-  preparePayResp = await wallet.preparePay({
-    talerPayUri: orderStatus.taler_pay_uri,
-  });
-
-  t.assertTrue(preparePayResp.status === 
PreparePayResultType.AlreadyConfirmed);
-  t.assertTrue(preparePayResp.paid);
-
-  // The first order should now be paid under "mysession-three",
-  // as the wallet did re-purchase detection
-  orderStatus = await merchant.queryPrivateOrderStatus({
-    orderId: firstOrderId,
-    sessionId: "mysession-three",
-  });
-
-  t.assertTrue(orderStatus.order_status === "paid");
-
-  // Check that with a completely new session ID, the status would NOT
-  // be paid.
-  orderStatus = await merchant.queryPrivateOrderStatus({
-    orderId: firstOrderId,
-    sessionId: "mysession-four",
-  });
-
-  t.assertTrue(orderStatus.order_status === "unpaid");
-
-  // Now check if the public status of the new order is correct.
-
-  console.log("requesting public status", publicOrderStatusUrl);
-
-  // Ask the order status of the claimed-but-unpaid order
-  publicOrderStatusResp = await axios.get(publicOrderStatusUrl, {
-    validateStatus: () => true,
-  });
-
-  if (publicOrderStatusResp.status != 402) {
-    throw Error(
-      `expected status 402, but got ${publicOrderStatusResp.status}`,
-    );
-  }
-
-  pubUnpaidStatus = codecForMerchantOrderStatusUnpaid().decode(
-    publicOrderStatusResp.data,
-  );
-
-  console.log(publicOrderStatusResp.data);
+  // Make sure the wallet is actually doing the replay properly.
+  t.assertTrue(numPaidRequested == 1);
+  t.assertTrue(numPayRequested == 0);
 
-  t.assertTrue(pubUnpaidStatus.already_paid_order_id === firstOrderId);
 });
diff --git a/packages/taler-integrationtests/src/test-payment-fault.ts 
b/packages/taler-integrationtests/src/test-payment-fault.ts
index 4babdc50..8065b430 100644
--- a/packages/taler-integrationtests/src/test-payment-fault.ts
+++ b/packages/taler-integrationtests/src/test-payment-fault.ts
@@ -30,6 +30,7 @@ import {
   BankService,
   WalletCli,
   defaultCoinConfig,
+  MerchantPrivateApi,
 } from "./harness";
 import {
   FaultInjectedExchangeService,
@@ -145,7 +146,7 @@ runTest(async (t: GlobalTestState) => {
 
   // Set up order.
 
-  const orderResp = await merchant.createOrder("default", {
+  const orderResp = await MerchantPrivateApi.createOrder(merchant, "default", {
     order: {
       summary: "Buy me!",
       amount: "TESTKUDOS:5",
@@ -153,7 +154,7 @@ runTest(async (t: GlobalTestState) => {
     },
   });
 
-  let orderStatus = await merchant.queryPrivateOrderStatus({
+  let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
     orderId: orderResp.order_id,
   });
 
@@ -195,7 +196,7 @@ runTest(async (t: GlobalTestState) => {
 
   // Check if payment was successful.
 
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: orderResp.order_id,
   });
 
diff --git a/packages/taler-integrationtests/src/test-payment-idempotency.ts 
b/packages/taler-integrationtests/src/test-payment-idempotency.ts
index bc641a35..6c75de6b 100644
--- a/packages/taler-integrationtests/src/test-payment-idempotency.ts
+++ b/packages/taler-integrationtests/src/test-payment-idempotency.ts
@@ -17,7 +17,7 @@
 /**
  * Imports.
  */
-import { runTest, GlobalTestState } from "./harness";
+import { runTest, GlobalTestState, MerchantPrivateApi } from "./harness";
 import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
 import { PreparePayResultType } from "taler-wallet-core";
 
@@ -41,7 +41,7 @@ runTest(async (t: GlobalTestState) => {
 
   // Set up order.
 
-  const orderResp = await merchant.createOrder("default", {
+  const orderResp = await MerchantPrivateApi.createOrder(merchant, "default", {
     order: {
       summary: "Buy me!",
       amount: "TESTKUDOS:5",
@@ -49,7 +49,7 @@ runTest(async (t: GlobalTestState) => {
     },
   });
 
-  let orderStatus = await merchant.queryPrivateOrderStatus({
+  let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
     orderId: orderResp.order_id,
   });
 
@@ -84,7 +84,7 @@ runTest(async (t: GlobalTestState) => {
 
   // Check if payment was successful.
 
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: orderResp.order_id,
   });
 
diff --git a/packages/taler-integrationtests/src/test-payment-multiple.ts 
b/packages/taler-integrationtests/src/test-payment-multiple.ts
index 00b3c0b6..8be8a90f 100644
--- a/packages/taler-integrationtests/src/test-payment-multiple.ts
+++ b/packages/taler-integrationtests/src/test-payment-multiple.ts
@@ -27,6 +27,7 @@ import {
   WalletCli,
   coin_ct10,
   coin_u1,
+  MerchantPrivateApi,
 } from "./harness";
 import { withdrawViaBank } from "./helpers";
 
@@ -122,7 +123,7 @@ runTest(async (t: GlobalTestState) => {
 
   // Set up order.
 
-  const orderResp = await merchant.createOrder("default", {
+  const orderResp = await MerchantPrivateApi.createOrder(merchant, "default", {
     order: {
       summary: "Buy me!",
       amount: "TESTKUDOS:80",
@@ -130,7 +131,7 @@ runTest(async (t: GlobalTestState) => {
     },
   });
 
-  let orderStatus = await merchant.queryPrivateOrderStatus({
+  let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
     orderId: orderResp.order_id,
   });
 
@@ -151,7 +152,7 @@ runTest(async (t: GlobalTestState) => {
 
   // Check if payment was successful.
 
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: orderResp.order_id,
   });
 
diff --git a/packages/taler-integrationtests/src/test-payment.ts 
b/packages/taler-integrationtests/src/test-payment.ts
index 12b4267b..d2cbb10f 100644
--- a/packages/taler-integrationtests/src/test-payment.ts
+++ b/packages/taler-integrationtests/src/test-payment.ts
@@ -17,7 +17,7 @@
 /**
  * Imports.
  */
-import { runTest, GlobalTestState } from "./harness";
+import { runTest, GlobalTestState, MerchantPrivateApi } from "./harness";
 import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
 import { PreparePayResultType } from "taler-wallet-core";
 
@@ -40,7 +40,7 @@ runTest(async (t: GlobalTestState) => {
 
   // Set up order.
 
-  const orderResp = await merchant.createOrder("default", {
+  const orderResp = await MerchantPrivateApi.createOrder(merchant, "default", {
     order: {
       summary: "Buy me!",
       amount: "TESTKUDOS:5",
@@ -48,7 +48,7 @@ runTest(async (t: GlobalTestState) => {
     },
   });
 
-  let orderStatus = await merchant.queryPrivateOrderStatus({
+  let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
     orderId: orderResp.order_id,
   });
 
@@ -70,7 +70,7 @@ runTest(async (t: GlobalTestState) => {
 
   // Check if payment was successful.
 
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: orderResp.order_id,
   });
 
diff --git a/packages/taler-integrationtests/src/test-paywall-flow.ts 
b/packages/taler-integrationtests/src/test-paywall-flow.ts
index 74be96c8..c4c5784e 100644
--- a/packages/taler-integrationtests/src/test-paywall-flow.ts
+++ b/packages/taler-integrationtests/src/test-paywall-flow.ts
@@ -17,7 +17,7 @@
 /**
  * Imports.
  */
-import { runTest, GlobalTestState } from "./harness";
+import { runTest, GlobalTestState, MerchantPrivateApi } from "./harness";
 import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
 import {
   PreparePayResultType,
@@ -52,7 +52,7 @@ runTest(async (t: GlobalTestState) => {
    * =========================================================================
    */
 
-  let orderResp = await merchant.createOrder("default", {
+  let orderResp = await MerchantPrivateApi.createOrder(merchant, "default", {
     order: {
       summary: "Buy me!",
       amount: "TESTKUDOS:5",
@@ -62,7 +62,7 @@ runTest(async (t: GlobalTestState) => {
 
   const firstOrderId = orderResp.order_id;
 
-  let orderStatus = await merchant.queryPrivateOrderStatus({
+  let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
     orderId: orderResp.order_id,
     sessionId: "mysession-one",
   });
@@ -135,7 +135,7 @@ runTest(async (t: GlobalTestState) => {
    * =========================================================================
    */
 
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: orderResp.order_id,
     sessionId: "mysession-two",
   });
@@ -161,7 +161,7 @@ runTest(async (t: GlobalTestState) => {
    * =========================================================================
    */
 
-  orderResp = await merchant.createOrder("default", {
+  orderResp = await MerchantPrivateApi.createOrder(merchant, "default", {
     order: {
       summary: "Buy me!",
       amount: "TESTKUDOS:5",
@@ -172,7 +172,7 @@ runTest(async (t: GlobalTestState) => {
 
   const secondOrderId = orderResp.order_id;
 
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: secondOrderId,
     sessionId: "mysession-three",
   });
@@ -194,7 +194,7 @@ runTest(async (t: GlobalTestState) => {
 
   // The first order should now be paid under "mysession-three",
   // as the wallet did re-purchase detection
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: firstOrderId,
     sessionId: "mysession-three",
   });
@@ -203,7 +203,7 @@ runTest(async (t: GlobalTestState) => {
 
   // Check that with a completely new session ID, the status would NOT
   // be paid.
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: firstOrderId,
     sessionId: "mysession-four",
   });
diff --git a/packages/taler-integrationtests/src/test-refund-incremental.ts 
b/packages/taler-integrationtests/src/test-refund-incremental.ts
index 59a36b94..c3d2b783 100644
--- a/packages/taler-integrationtests/src/test-refund-incremental.ts
+++ b/packages/taler-integrationtests/src/test-refund-incremental.ts
@@ -17,7 +17,7 @@
 /**
  * Imports.
  */
-import { runTest, GlobalTestState, delayMs } from "./harness";
+import { runTest, GlobalTestState, delayMs, MerchantPrivateApi } from 
"./harness";
 import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
 
 /**
@@ -39,7 +39,7 @@ runTest(async (t: GlobalTestState) => {
 
   // Set up order.
 
-  const orderResp = await merchant.createOrder("default", {
+  const orderResp = await MerchantPrivateApi.createOrder(merchant, "default", {
     order: {
       summary: "Buy me!",
       amount: "TESTKUDOS:5",
@@ -47,7 +47,7 @@ runTest(async (t: GlobalTestState) => {
     },
   });
 
-  let orderStatus = await merchant.queryPrivateOrderStatus({
+  let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
     orderId: orderResp.order_id,
   });
 
@@ -68,13 +68,13 @@ runTest(async (t: GlobalTestState) => {
 
   // Check if payment was successful.
 
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: orderResp.order_id,
   });
 
   t.assertTrue(orderStatus.order_status === "paid");
 
-  let ref = await merchant.giveRefund({
+  let ref = await MerchantPrivateApi.giveRefund(merchant, {
     amount: "TESTKUDOS:2.5",
     instance: "default",
     justification: "foo",
@@ -87,7 +87,7 @@ runTest(async (t: GlobalTestState) => {
   // refund will be grouped with the previous one.
   await delayMs(1.2);
 
-  ref = await merchant.giveRefund({
+  ref = await MerchantPrivateApi.giveRefund(merchant, {
     amount: "TESTKUDOS:5",
     instance: "default",
     justification: "bar",
@@ -101,7 +101,7 @@ runTest(async (t: GlobalTestState) => {
   });
   console.log(r);
 
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: orderResp.order_id,
   });
 
diff --git a/packages/taler-integrationtests/src/test-refund.ts 
b/packages/taler-integrationtests/src/test-refund.ts
index d0d0a0a0..f88a399b 100644
--- a/packages/taler-integrationtests/src/test-refund.ts
+++ b/packages/taler-integrationtests/src/test-refund.ts
@@ -17,7 +17,7 @@
 /**
  * Imports.
  */
-import { runTest, GlobalTestState } from "./harness";
+import { runTest, GlobalTestState, MerchantPrivateApi } from "./harness";
 import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
 
 /**
@@ -39,7 +39,7 @@ runTest(async (t: GlobalTestState) => {
 
   // Set up order.
 
-  const orderResp = await merchant.createOrder("default", {
+  const orderResp = await MerchantPrivateApi.createOrder(merchant, "default", {
     order: {
       summary: "Buy me!",
       amount: "TESTKUDOS:5",
@@ -47,7 +47,7 @@ runTest(async (t: GlobalTestState) => {
     },
   });
 
-  let orderStatus = await merchant.queryPrivateOrderStatus({
+  let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
     orderId: orderResp.order_id,
   });
 
@@ -68,13 +68,13 @@ runTest(async (t: GlobalTestState) => {
 
   // Check if payment was successful.
 
-  orderStatus = await merchant.queryPrivateOrderStatus({
+  orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: orderResp.order_id,
   });
 
   t.assertTrue(orderStatus.order_status === "paid");
 
-  const ref = await merchant.giveRefund({
+  const ref = await MerchantPrivateApi.giveRefund(merchant, {
     amount: "TESTKUDOS:5",
     instance: "default",
     justification: "foo",

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]