summaryrefslogtreecommitdiff
path: root/src/testing
diff options
context:
space:
mode:
authorJonathan Buchanan <jonathan.russ.buchanan@gmail.com>2020-08-13 03:50:15 -0400
committerJonathan Buchanan <jonathan.russ.buchanan@gmail.com>2020-08-13 03:50:15 -0400
commit452f20d71ef5c659c269389a4156f462521737ed (patch)
tree2c41694f98e59713bcfd405cc1a1777ef397f505 /src/testing
parent7815ccb8c2cc74d44eb214e0c1f14833c5638b45 (diff)
downloadmerchant-452f20d71ef5c659c269389a4156f462521737ed.tar.gz
merchant-452f20d71ef5c659c269389a4156f462521737ed.tar.bz2
merchant-452f20d71ef5c659c269389a4156f462521737ed.zip
test for increasing refunds multiple times
Diffstat (limited to 'src/testing')
-rw-r--r--src/testing/test_merchant_api.c22
-rw-r--r--src/testing/testing_api_cmd_merchant_get_order.c12
-rw-r--r--src/testing/testing_api_cmd_wallet_get_order.c71
3 files changed, 71 insertions, 34 deletions
diff --git a/src/testing/test_merchant_api.c b/src/testing/test_merchant_api.c
index ead0ba71..0e99fb47 100644
--- a/src/testing/test_merchant_api.c
+++ b/src/testing/test_merchant_api.c
@@ -618,6 +618,7 @@ run (void *cls,
const char *order_1r_refunds[] = {
"refund-increase-1r",
+ "refund-increase-1r-2",
NULL
};
struct TALER_TESTING_Command refund[] = {
@@ -683,6 +684,21 @@ run (void *cls,
MHD_HTTP_OK,
"refund-increase-1r",
NULL),
+ TALER_TESTING_cmd_merchant_order_refund ("refund-increase-1r-2",
+ merchant_url,
+ "refund test 2",
+ "1r", /* order ID */
+ "EUR:1.0",
+ MHD_HTTP_OK),
+ TALER_TESTING_cmd_wallet_get_order ("get-order-wallet-1r-2",
+ merchant_url,
+ "create-proposal-1r",
+ true,
+ true,
+ MHD_HTTP_OK,
+ "refund-increase-1r",
+ "refund-increase-1r-2",
+ NULL),
TALER_TESTING_cmd_merchant_get_order ("get-order-merchant-1r",
merchant_url,
"create-proposal-1r",
@@ -690,6 +706,7 @@ run (void *cls,
true,
MHD_HTTP_OK,
"refund-increase-1r",
+ "refund-increase-1r-2",
NULL),
TALER_TESTING_cmd_merchant_get_order2 ("get-order-merchant-1r-2",
merchant_url,
@@ -785,8 +802,9 @@ run (void *cls,
TALER_TESTING_cmd_check_bank_transfer (
"check_bank_transfer-paid-unincreased-refund",
EXCHANGE_URL,
- "EUR:9.88", /* '4.98 from above', plus 4.99 from 'pay-for-refund-1r'
- and MINUS 0.1 PLUS 0.01 (deposit fee) from 'refund-increase-1r' */
+ "EUR:8.98", /* '4.98 from above', plus 4.99 from 'pay-for-refund-1r'
+ and MINUS 0.1 MINUS 0.9 PLUS 0.01 (deposit fee) from
+ 'refund-increase-1r' and 'refund-increase-1r-2' */
exchange_payto,
merchant_payto),
/* Actually try to pick up the refund from the "unincreased proposal". */
diff --git a/src/testing/testing_api_cmd_merchant_get_order.c b/src/testing/testing_api_cmd_merchant_get_order.c
index 1fed93a6..87afb01c 100644
--- a/src/testing/testing_api_cmd_merchant_get_order.c
+++ b/src/testing/testing_api_cmd_merchant_get_order.c
@@ -172,6 +172,7 @@ merchant_get_order_cb (
if (gos->paid)
{
const struct TALER_TESTING_Command *order_cmd;
+ struct TALER_Amount refunded_total;
order_cmd = TALER_TESTING_interpreter_lookup_command (
gos->is,
@@ -371,6 +372,10 @@ merchant_get_order_cb (
TALER_TESTING_interpreter_fail (gos->is);
return;
}
+ if (0 < gos->refunds_length)
+ GNUNET_assert (GNUNET_OK ==
+ TALER_amount_get_zero (osr->details.paid.refund_amount.currency,
+ &refunded_total));
for (unsigned int i = 0; i < gos->refunds_length; ++i)
{
const struct TALER_TESTING_Command *refund_cmd;
@@ -397,11 +402,14 @@ merchant_get_order_cb (
GNUNET_assert (GNUNET_OK ==
TALER_string_to_amount (expected_amount_str,
&expected_amount));
+ GNUNET_assert (0 <= TALER_amount_add (&refunded_total,
+ &refunded_total,
+ amount_found));
if ((GNUNET_OK !=
TALER_amount_cmp_currency (&expected_amount,
- amount_found)) ||
+ &refunded_total)) ||
(0 != TALER_amount_cmp (&expected_amount,
- amount_found)))
+ &refunded_total)))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Refund amounts do not match\n");
diff --git a/src/testing/testing_api_cmd_wallet_get_order.c b/src/testing/testing_api_cmd_wallet_get_order.c
index 3ebeda4e..b4a4ce71 100644
--- a/src/testing/testing_api_cmd_wallet_get_order.c
+++ b/src/testing/testing_api_cmd_wallet_get_order.c
@@ -155,39 +155,50 @@ wallet_get_order_cb (
TALER_TESTING_interpreter_fail (gos->is);
return;
}
- for (unsigned int i = 0; i < num_refunds; ++i)
{
- const struct TALER_TESTING_Command *refund_cmd;
- const char *expected_amount_str;
- struct TALER_Amount expected_amount;
+ struct TALER_Amount refunded_total;
+ if (num_refunds > 0)
+ GNUNET_assert (GNUNET_OK ==
+ TALER_amount_get_zero (refund_amount->currency,
+ &refunded_total));
+ for (unsigned int i = 0; i < num_refunds; ++i)
+ {
+ const struct TALER_TESTING_Command *refund_cmd;
+ const char *expected_amount_str;
+ struct TALER_Amount expected_amount;
- refund_cmd = TALER_TESTING_interpreter_lookup_command (
- gos->is,
- gos->refunds[i]);
+ refund_cmd = TALER_TESTING_interpreter_lookup_command (
+ gos->is,
+ gos->refunds[i]);
- if (GNUNET_OK !=
- TALER_TESTING_get_trait_string (refund_cmd,
- 0,
- &expected_amount_str))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Could not fetch refund amount\n");
- TALER_TESTING_interpreter_fail (gos->is);
- return;
- }
- GNUNET_assert (GNUNET_OK ==
- TALER_string_to_amount (expected_amount_str,
- &expected_amount));
- if ((GNUNET_OK !=
- TALER_amount_cmp_currency (&expected_amount,
- &refunds[i].refund_amount)) ||
- (0 != TALER_amount_cmp (&expected_amount,
- &refunds[i].refund_amount)))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Refund amounts do not match\n");
- TALER_TESTING_interpreter_fail (gos->is);
- return;
+ if (GNUNET_OK !=
+ TALER_TESTING_get_trait_string (refund_cmd,
+ 0,
+ &expected_amount_str))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Could not fetch refund amount\n");
+ TALER_TESTING_interpreter_fail (gos->is);
+ return;
+ }
+ GNUNET_assert (GNUNET_OK ==
+ TALER_string_to_amount (expected_amount_str,
+ &expected_amount));
+ /* The most recent refunds are returned first */
+ GNUNET_assert (0 <= TALER_amount_add (&refunded_total,
+ &refunded_total,
+ &refunds[num_refunds - 1 - i].refund_amount));
+ if ((GNUNET_OK !=
+ TALER_amount_cmp_currency (&expected_amount,
+ &refunded_total)) ||
+ (0 != TALER_amount_cmp (&expected_amount,
+ &refunded_total)))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Refund amounts do not match\n");
+ TALER_TESTING_interpreter_fail (gos->is);
+ return;
+ }
}
}
if (!paid_b)