diff options
Diffstat (limited to 'src/testing/testing_api_cmd_refund_order.c')
-rw-r--r-- | src/testing/testing_api_cmd_refund_order.c | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/src/testing/testing_api_cmd_refund_order.c b/src/testing/testing_api_cmd_refund_order.c index ab6f78ac..bf8474dd 100644 --- a/src/testing/testing_api_cmd_refund_order.c +++ b/src/testing/testing_api_cmd_refund_order.c @@ -77,10 +77,12 @@ struct RefundState * * @param cls closure * @param hr HTTP response + * @param taler_refund_uri the refund uri offered to the wallet */ static void refund_cb (void *cls, - const struct TALER_MERCHANT_HttpResponse *hr) + const struct TALER_MERCHANT_HttpResponse *hr, + const char *taler_refund_uri) { struct RefundState *ris = cls; @@ -94,6 +96,43 @@ refund_cb (void *cls, (int) hr->ec); TALER_TESTING_FAIL (ris->is); } + switch (hr->http_status) + { + case MHD_HTTP_OK: + { + struct TALER_MERCHANT_RefundUriData rud; + + if (GNUNET_OK != + TALER_MERCHANT_parse_refund_uri (taler_refund_uri, + &rud)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Taler refund uri is malformed\n"); + TALER_TESTING_interpreter_fail (ris->is); + return; + } + + if ((0 != strcmp ("localhost:8080", + rud.merchant_host)) || + (NULL != rud.merchant_prefix_path) || + (0 != strcmp (ris->order_id, + rud.order_id)) || + (NULL != rud.ssid)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Taler refund uri does not match\n"); + TALER_TESTING_interpreter_fail (ris->is); + TALER_MERCHANT_parse_refund_uri_free (&rud); + return; + } + + TALER_MERCHANT_parse_refund_uri_free (&rud); + } + break; + default: + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Unhandled HTTP status.\n"); + } TALER_TESTING_interpreter_next (ris->is); } |