diff options
author | Jonathan Buchanan <jonathan.russ.buchanan@gmail.com> | 2020-08-13 03:50:15 -0400 |
---|---|---|
committer | Jonathan Buchanan <jonathan.russ.buchanan@gmail.com> | 2020-08-13 03:50:15 -0400 |
commit | 452f20d71ef5c659c269389a4156f462521737ed (patch) | |
tree | 2c41694f98e59713bcfd405cc1a1777ef397f505 /src/testing | |
parent | 7815ccb8c2cc74d44eb214e0c1f14833c5638b45 (diff) | |
download | merchant-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.c | 22 | ||||
-rw-r--r-- | src/testing/testing_api_cmd_merchant_get_order.c | 12 | ||||
-rw-r--r-- | src/testing/testing_api_cmd_wallet_get_order.c | 71 |
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) |