summaryrefslogtreecommitdiff
path: root/src/testing/testing_api_cmd_wallet_get_order.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/testing/testing_api_cmd_wallet_get_order.c')
-rw-r--r--src/testing/testing_api_cmd_wallet_get_order.c85
1 files changed, 84 insertions, 1 deletions
diff --git a/src/testing/testing_api_cmd_wallet_get_order.c b/src/testing/testing_api_cmd_wallet_get_order.c
index 2f595315..7251d891 100644
--- a/src/testing/testing_api_cmd_wallet_get_order.c
+++ b/src/testing/testing_api_cmd_wallet_get_order.c
@@ -332,6 +332,11 @@ struct WalletPollOrderConcludeState
const char *start_reference;
/**
+ * Already paid order ID expected, or NULL for none.
+ */
+ const char *already_paid_order_id;
+
+ /**
* Task to wait for the deadline.
*/
struct GNUNET_SCHEDULER_Task *task;
@@ -376,6 +381,11 @@ struct WalletPollOrderStartState
const char *order_ref;
/**
+ * Which session ID to poll for.
+ */
+ const char *session_id;
+
+ /**
* How long to wait for server to return a response.
*/
struct GNUNET_TIME_Relative timeout;
@@ -406,6 +416,11 @@ struct WalletPollOrderStartState
struct TALER_Amount refund_available;
/**
+ * Already paid order ID returned, or NULL for none.
+ */
+ char *already_paid_order_id;
+
+ /**
* Should we poll for a refund?
*/
bool wait_for_refund;
@@ -469,6 +484,26 @@ conclude_task (void *cls)
cps->refunded ? "" : "NOT ");
TALER_TESTING_FAIL (ppc->is);
}
+ if ( (NULL == ppc->already_paid_order_id)
+ ^ (NULL == cps->already_paid_order_id) )
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Missmatch in already paid order IDs: %s vs %s\n",
+ ppc->already_paid_order_id,
+ cps->already_paid_order_id);
+ TALER_TESTING_FAIL (ppc->is);
+ }
+ if ( (NULL != ppc->already_paid_order_id) &&
+ (0 != strcmp (ppc->already_paid_order_id,
+ cps->already_paid_order_id) ) )
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Missmatch in already paid order IDs: %s vs %s\n",
+ ppc->already_paid_order_id,
+ cps->already_paid_order_id);
+ TALER_TESTING_FAIL (ppc->is);
+ }
+
if (cps->refunded)
{
if (0 != TALER_amount_cmp (&ppc->expected_refund_amount,
@@ -539,6 +574,8 @@ wallet_poll_order_cb (
pos->refund_pending = (GNUNET_YES == refund_pending);
if (NULL != refund_amount)
pos->refund_available = *refund_amount;
+ if (NULL != already_paid_order_id)
+ pos->already_paid_order_id = GNUNET_strdup (already_paid_order_id);
break;
default:
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
@@ -597,7 +634,7 @@ wallet_poll_order_start_run (void *cls,
order_id,
h_contract,
pos->timeout,
- NULL,
+ pos->session_id,
pos->wait_for_refund
? &pos->refund_threshold
: NULL,
@@ -632,6 +669,7 @@ wallet_poll_order_start_cleanup (void *cls,
pos->is));
TALER_MERCHANT_wallet_order_get_cancel (pos->ogh);
}
+ GNUNET_free (pos->already_paid_order_id);
GNUNET_free (pos);
}
@@ -670,6 +708,29 @@ TALER_TESTING_cmd_wallet_poll_order_start (
}
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_wallet_poll_order_start2 (
+ const char *label,
+ const char *merchant_url,
+ const char *order_ref,
+ struct GNUNET_TIME_Relative timeout,
+ const char *await_refund,
+ const char *session_id)
+{
+ struct WalletPollOrderStartState *pos;
+ struct TALER_TESTING_Command cmd;
+
+ cmd = TALER_TESTING_cmd_wallet_poll_order_start (label,
+ merchant_url,
+ order_ref,
+ timeout,
+ await_refund);
+ pos = cmd.cls;
+ pos->session_id = session_id;
+ return cmd;
+}
+
+
/**
* Run the "GET order conclude" CMD.
*
@@ -763,4 +824,26 @@ TALER_TESTING_cmd_wallet_poll_order_conclude (
}
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_wallet_poll_order_conclude2 (
+ const char *label,
+ unsigned int expected_http_status,
+ const char *expected_refund_amount,
+ const char *poll_start_reference,
+ const char *already_paid_order_id)
+{
+ struct WalletPollOrderConcludeState *cps;
+ struct TALER_TESTING_Command cmd;
+
+ cmd = TALER_TESTING_cmd_wallet_poll_order_conclude (
+ label,
+ expected_http_status,
+ expected_refund_amount,
+ poll_start_reference);
+ cps = cmd.cls;
+ cps->already_paid_order_id = already_paid_order_id;
+ return cmd;
+}
+
+
/* end of testing_api_cmd_wallet_get_order.c */