gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated: fix broken integration tests


From: gnunet
Subject: [taler-wallet-core] branch master updated: fix broken integration tests due to merchant API changes
Date: Tue, 03 Nov 2020 15:56:52 +0100

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

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

The following commit(s) were added to refs/heads/master by this push:
     new ca343e4e fix broken integration tests due to merchant API changes
ca343e4e is described below

commit ca343e4e0037cd986b3115079d370e61fc5897ce
Author: Florian Dold <florian@dold.me>
AuthorDate: Tue Nov 3 15:56:02 2020 +0100

    fix broken integration tests due to merchant API changes
---
 .../taler-integrationtests/src/merchantApiTypes.ts | 18 +++++++++++-
 .../taler-integrationtests/src/test-claim-loop.ts  | 19 ++++---------
 .../src/test-merchant-refund-api.ts                |  4 ++-
 .../taler-integrationtests/src/test-pay-paid.ts    | 32 ++++++++++++++++++----
 .../src/test-paywall-flow.ts                       | 12 ++++----
 .../taler-integrationtests/src/test-refund-auto.ts |  3 +-
 .../src/test-refund-incremental.ts                 |  3 +-
 packages/taler-integrationtests/src/test-refund.ts |  2 ++
 8 files changed, 64 insertions(+), 29 deletions(-)

diff --git a/packages/taler-integrationtests/src/merchantApiTypes.ts 
b/packages/taler-integrationtests/src/merchantApiTypes.ts
index 1cfc72db..a7d0ea2c 100644
--- a/packages/taler-integrationtests/src/merchantApiTypes.ts
+++ b/packages/taler-integrationtests/src/merchantApiTypes.ts
@@ -107,6 +107,12 @@ export const codecForCheckPaymentUnpaidResponse = (): 
Codec<
     .property("already_paid_order_id", codecOptional(codecForString()))
     .build("CheckPaymentPaidResponse");
 
+export const codecForCheckPaymentClaimedResponse = (): 
Codec<CheckPaymentClaimedResponse> =>
+  buildCodecForObject<CheckPaymentClaimedResponse>()
+  .property("order_status", codecForConstString("claimed"))
+  .property("contract_terms", codecForContractTerms())
+  .build("CheckPaymentClaimedResponse");
+
 export const codecForMerchantOrderPrivateStatusResponse = (): Codec<
   MerchantOrderPrivateStatusResponse
 > =>
@@ -114,11 +120,20 @@ export const codecForMerchantOrderPrivateStatusResponse = 
(): Codec<
     .discriminateOn("order_status")
     .alternative("paid", codecForCheckPaymentPaidResponse())
     .alternative("unpaid", codecForCheckPaymentUnpaidResponse())
+    .alternative("claimed", codecForCheckPaymentClaimedResponse())
     .build("MerchantOrderPrivateStatusResponse");
 
 export type MerchantOrderPrivateStatusResponse =
   | CheckPaymentPaidResponse
-  | CheckPaymentUnpaidResponse;
+  | CheckPaymentUnpaidResponse
+  | CheckPaymentClaimedResponse;
+
+export interface CheckPaymentClaimedResponse {
+  // Wallet claimed the order, but didn't pay yet.
+  order_status: "claimed";
+
+  contract_terms: ContractTerms;
+}  
 
 export interface CheckPaymentPaidResponse {
   // did the customer pay for this contract
@@ -164,6 +179,7 @@ export interface CheckPaymentPaidResponse {
   order_status_url: string;
 }
 
+
 export interface CheckPaymentUnpaidResponse {
   order_status: "unpaid";
 
diff --git a/packages/taler-integrationtests/src/test-claim-loop.ts 
b/packages/taler-integrationtests/src/test-claim-loop.ts
index 22a04b7d..da8f7d45 100644
--- a/packages/taler-integrationtests/src/test-claim-loop.ts
+++ b/packages/taler-integrationtests/src/test-claim-loop.ts
@@ -24,11 +24,13 @@ import {
   WalletCli,
 } from "./harness";
 import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
-import { PreparePayResultType, TalerErrorCode } from "taler-wallet-core";
 import { URL } from "url"
 
 /**
- * Run test for basic, bank-integrated withdrawal.
+ * Run test for the merchant's order lifecycle.
+ * 
+ * FIXME: Is this test still necessary?  We initially wrote if to 
confirm/document
+ * assumptions about how the merchant should work.
  */
 runTest(async (t: GlobalTestState) => {
   // Set up test environment
@@ -55,6 +57,7 @@ runTest(async (t: GlobalTestState) => {
   let orderStatusBefore = await 
MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: orderResp.order_id,
   });
+  t.assertTrue(orderStatusBefore.order_status === "unpaid");
   let statusUrlBefore = new URL(orderStatusBefore.order_status_url);
 
   // Make wallet claim the unpaid order.
@@ -68,17 +71,7 @@ runTest(async (t: GlobalTestState) => {
   let orderStatusAfter = await 
MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
     orderId: orderResp.order_id,
   });
-  let statusUrlAfter = new URL(orderStatusAfter.order_status_url)
-
-  let tokenBefore = statusUrlBefore.searchParams.get("token")
-  let tokenAfter = statusUrlAfter.searchParams.get("token")
-  let hashContractAfter = statusUrlAfter.searchParams.get("h_contract")
-
-  // after claiming the contract, we either want its hash in the
-  // status url, or at least see again its token in the status url.
-  t.assertTrue(
-    (hashContractAfter !== null) || (tokenBefore === tokenAfter)
-  )
+  t.assertTrue(orderStatusAfter.order_status === "claimed");
 
   await t.shutdown();
 });
diff --git a/packages/taler-integrationtests/src/test-merchant-refund-api.ts 
b/packages/taler-integrationtests/src/test-merchant-refund-api.ts
index af7000c9..121c571d 100644
--- a/packages/taler-integrationtests/src/test-merchant-refund-api.ts
+++ b/packages/taler-integrationtests/src/test-merchant-refund-api.ts
@@ -32,7 +32,7 @@ import {
   withdrawViaBank,
   SimpleTestEnvironment,
 } from "./helpers";
-import { PreparePayResultType, URL } from "taler-wallet-core";
+import { durationFromSpec, PreparePayResultType, URL } from 
"taler-wallet-core";
 import axios from "axios";
 
 async function testRefundApiWithFulfillmentUrl(
@@ -53,6 +53,7 @@ async function testRefundApiWithFulfillmentUrl(
       amount: "TESTKUDOS:5",
       fulfillment_url: "https://example.com/fulfillment";,
     },
+    refund_delay: durationFromSpec({ minutes: 5 }),
   });
 
   let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
@@ -162,6 +163,7 @@ async function testRefundApiWithFulfillmentMessage(
       amount: "TESTKUDOS:5",
       fulfillment_message: "Thank you for buying foobar",
     },
+    refund_delay: durationFromSpec({ minutes: 5 }),
   });
 
   let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
diff --git a/packages/taler-integrationtests/src/test-pay-paid.ts 
b/packages/taler-integrationtests/src/test-pay-paid.ts
index 61e8ce80..b5dd6bd7 100644
--- a/packages/taler-integrationtests/src/test-pay-paid.ts
+++ b/packages/taler-integrationtests/src/test-pay-paid.ts
@@ -19,7 +19,6 @@
  */
 import { runTest, GlobalTestState, MerchantPrivateApi } from "./harness";
 import {
-  createSimpleTestkudosEnvironment,
   withdrawViaBank,
   createFaultInjectedMerchantTestkudosEnvironment,
 } from "./helpers";
@@ -33,7 +32,12 @@ import axios from "axios";
 import { FaultInjectionRequestContext } from "./faultInjection";
 
 /**
- * Run test for basic, bank-integrated withdrawal.
+ * Run test for the wallets repurchase detection mechanism
+ * based on the fulfillment URL.
+ * 
+ * FIXME: This test is now almost the same as test-paywall-flow,
+ * since we can't initiate payment via a "claimed" private order status
+ * response.
  */
 runTest(async (t: GlobalTestState) => {
   // Set up test environment
@@ -146,10 +150,10 @@ runTest(async (t: GlobalTestState) => {
     sessionId: "mysession-two",
   });
 
-  // Should be unpaid because of a new session ID
-  t.assertTrue(orderStatus.order_status === "unpaid");
+  console.log("order status under mysession-two:", JSON.stringify(orderStatus, 
undefined, 2));
 
-  publicOrderStatusUrl = orderStatus.order_status_url;
+  // Should be claimed (not paid!) because of a new session ID
+  t.assertTrue(orderStatus.order_status === "claimed");
 
   let numPayRequested = 0;
   let numPaidRequested = 0;
@@ -165,11 +169,27 @@ runTest(async (t: GlobalTestState) => {
     },
   });
 
+
+  let orderRespTwo = await MerchantPrivateApi.createOrder(merchant, "default", 
{
+    order: {
+      summary: "Buy me!",
+      amount: "TESTKUDOS:5",
+      fulfillment_url: "https://example.com/article42";,
+    },
+  });
+
+  let orderStatusTwo = await 
MerchantPrivateApi.queryPrivateOrderStatus(merchant, {
+    orderId: orderRespTwo.order_id,
+    sessionId: "mysession-two",
+  });
+
+  t.assertTrue(orderStatusTwo.order_status === "unpaid");
+
   // Pay with new taler://pay URI, which should
   // have the new session ID!
   // Wallet should now automatically re-play payment.
   preparePayResp = await wallet.preparePay({
-    talerPayUri: orderStatus.taler_pay_uri,
+    talerPayUri: orderStatusTwo.taler_pay_uri,
   });
 
   t.assertTrue(preparePayResp.status === 
PreparePayResultType.AlreadyConfirmed);
diff --git a/packages/taler-integrationtests/src/test-paywall-flow.ts 
b/packages/taler-integrationtests/src/test-paywall-flow.ts
index 350a60dd..54c8ab46 100644
--- a/packages/taler-integrationtests/src/test-paywall-flow.ts
+++ b/packages/taler-integrationtests/src/test-paywall-flow.ts
@@ -69,6 +69,8 @@ runTest(async (t: GlobalTestState) => {
 
   t.assertTrue(orderStatus.order_status === "unpaid");
 
+  const talerPayUriOne = orderStatus.taler_pay_uri;
+
   t.assertTrue(orderStatus.already_paid_order_id === undefined);
   let publicOrderStatusUrl = orderStatus.order_status_url;
 
@@ -140,16 +142,14 @@ runTest(async (t: GlobalTestState) => {
     sessionId: "mysession-two",
   });
 
-  // Should be unpaid because of a new session ID
-  t.assertTrue(orderStatus.order_status === "unpaid");
-
-  publicOrderStatusUrl = orderStatus.order_status_url;
+  // Should be claimed (not paid!) because of a new session ID
+  t.assertTrue(orderStatus.order_status === "claimed");
 
   // Pay with new taler://pay URI, which should
   // have the new session ID!
   // Wallet should now automatically re-play payment.
   preparePayResp = await wallet.preparePay({
-    talerPayUri: orderStatus.taler_pay_uri,
+    talerPayUri: talerPayUriOne,
   });
 
   t.assertTrue(preparePayResp.status === 
PreparePayResultType.AlreadyConfirmed);
@@ -208,7 +208,7 @@ runTest(async (t: GlobalTestState) => {
     sessionId: "mysession-four",
   });
 
-  t.assertTrue(orderStatus.order_status === "unpaid");
+  t.assertTrue(orderStatus.order_status === "claimed");
 
   // Now check if the public status of the new order is correct.
 
diff --git a/packages/taler-integrationtests/src/test-refund-auto.ts 
b/packages/taler-integrationtests/src/test-refund-auto.ts
index cd688a2b..91051b22 100644
--- a/packages/taler-integrationtests/src/test-refund-auto.ts
+++ b/packages/taler-integrationtests/src/test-refund-auto.ts
@@ -19,7 +19,7 @@
  */
 import { runTest, GlobalTestState, MerchantPrivateApi } from "./harness";
 import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
-import { CoreApiResponse } from "taler-wallet-core";
+import { CoreApiResponse, durationFromSpec } from "taler-wallet-core";
 
 /**
  * Run test for basic, bank-integrated withdrawal.
@@ -48,6 +48,7 @@ runTest(async (t: GlobalTestState) => {
         d_ms: 3000,
       },
     },
+    refund_delay: durationFromSpec({ minutes: 5}),
   });
 
   let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
diff --git a/packages/taler-integrationtests/src/test-refund-incremental.ts 
b/packages/taler-integrationtests/src/test-refund-incremental.ts
index 661378dc..d83fda47 100644
--- a/packages/taler-integrationtests/src/test-refund-incremental.ts
+++ b/packages/taler-integrationtests/src/test-refund-incremental.ts
@@ -24,7 +24,7 @@ import {
   MerchantPrivateApi,
 } from "./harness";
 import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
-import { TransactionType, Amounts } from "taler-wallet-core";
+import { TransactionType, Amounts, durationFromSpec } from "taler-wallet-core";
 
 /**
  * Run test for basic, bank-integrated withdrawal.
@@ -51,6 +51,7 @@ runTest(async (t: GlobalTestState) => {
       amount: "TESTKUDOS:10",
       fulfillment_url: "taler://fulfillment-success/thx",
     },
+    refund_delay: durationFromSpec({ minutes: 5}),
   });
 
   let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{
diff --git a/packages/taler-integrationtests/src/test-refund.ts 
b/packages/taler-integrationtests/src/test-refund.ts
index bda609c9..40fadd5d 100644
--- a/packages/taler-integrationtests/src/test-refund.ts
+++ b/packages/taler-integrationtests/src/test-refund.ts
@@ -17,6 +17,7 @@
 /**
  * Imports.
  */
+import { durationFromSpec } from 'taler-wallet-core';
 import { runTest, GlobalTestState, MerchantPrivateApi } from "./harness";
 import { createSimpleTestkudosEnvironment, withdrawViaBank } from "./helpers";
 
@@ -45,6 +46,7 @@ runTest(async (t: GlobalTestState) => {
       amount: "TESTKUDOS:5",
       fulfillment_url: "taler://fulfillment-success/thx",
     },
+    refund_delay: durationFromSpec({ minutes: 5}),
   });
 
   let orderStatus = await MerchantPrivateApi.queryPrivateOrderStatus(merchant, 
{

-- 
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]