summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcello Stanisci <stanisci.m@gmail.com>2018-05-17 14:30:02 +0200
committerMarcello Stanisci <stanisci.m@gmail.com>2018-05-17 14:30:02 +0200
commit2fff7d8f3abfdd29b865c94285f3814d8b5f7ecc (patch)
tree552c48215bb5afde9c6870e0919432e8fd22599b
parente94e8c34c58343001dfe84ed8f5a87f1516c687d (diff)
downloadexchange-2fff7d8f3abfdd29b865c94285f3814d8b5f7ecc.tar.gz
exchange-2fff7d8f3abfdd29b865c94285f3814d8b5f7ecc.tar.bz2
exchange-2fff7d8f3abfdd29b865c94285f3814d8b5f7ecc.zip
Trigger /refund currency missmatch the right way.
-rw-r--r--src/exchange-lib/exchange_api_refund.c4
-rw-r--r--src/exchange-lib/test_exchange_api_twisted.c17
-rw-r--r--src/exchange-lib/testing_api_cmd_refund.c8
3 files changed, 15 insertions, 14 deletions
diff --git a/src/exchange-lib/exchange_api_refund.c b/src/exchange-lib/exchange_api_refund.c
index ef1d66b90..1ddf642d6 100644
--- a/src/exchange-lib/exchange_api_refund.c
+++ b/src/exchange-lib/exchange_api_refund.c
@@ -180,6 +180,10 @@ handle_refund_finished (void *cls,
/* Kind of normal: the money was already sent to the merchant
(it was too late for the refund). */
break;
+ case MHD_HTTP_PRECONDITION_FAILED:
+ /* Client request was inconsistent; might be a currency missmatch
+ problem. */
+ break;
case MHD_HTTP_INTERNAL_SERVER_ERROR:
/* Server had an internal issue; we should retry, but this API
leaves this to the application */
diff --git a/src/exchange-lib/test_exchange_api_twisted.c b/src/exchange-lib/test_exchange_api_twisted.c
index 6b044a8e6..63358e755 100644
--- a/src/exchange-lib/test_exchange_api_twisted.c
+++ b/src/exchange-lib/test_exchange_api_twisted.c
@@ -201,7 +201,7 @@ run (void *cls,
/* Next chunk, refund conflicts
(contract hash missmatch [!],
- original deposit does not exist,
+ original deposit does not exist V,
currency missmatch) V;
'refund_transaction()' has many of the relevant cases;
@@ -235,18 +235,11 @@ run (void *cls,
"EUR:5",
MHD_HTTP_OK),
- TALER_TESTING_cmd_modify_object_ul
- ("hack-currency",
- CONFIG_FILE,
- /* Will make currency missmatch */
- "refund_amount",
- "USD:5"),
-
TALER_TESTING_cmd_refund
("refund-currency-missmatch",
- MHD_HTTP_BAD_REQUEST,
- "EUR:5",
- "EUR:0.01",
+ MHD_HTTP_PRECONDITION_FAILED,
+ "USD:5",
+ "USD:0.01",
"deposit-refund-1"),
TALER_TESTING_cmd_refund
@@ -291,7 +284,7 @@ run (void *cls,
TALER_TESTING_cmd_refund
("refund-deposit-not-found",
- MHD_HTTP_BAD_REQUEST,
+ MHD_HTTP_NOT_FOUND,
"EUR:5",
"EUR:0.01",
"deposit-refund-to-fail"),
diff --git a/src/exchange-lib/testing_api_cmd_refund.c b/src/exchange-lib/testing_api_cmd_refund.c
index 35cb20d26..d0f48bb22 100644
--- a/src/exchange-lib/testing_api_cmd_refund.c
+++ b/src/exchange-lib/testing_api_cmd_refund.c
@@ -227,8 +227,12 @@ refund_run (void *cls,
}
rs->rh = TALER_EXCHANGE_refund
- (rs->exchange, &refund_amount, &refund_fee, &h_contract_terms,
- &coin, rs->refund_transaction_id,
+ (rs->exchange,
+ &refund_amount,
+ &refund_fee,
+ &h_contract_terms,
+ &coin,
+ rs->refund_transaction_id,
(const struct TALER_MerchantPrivateKeyP *) merchant_priv,
&refund_cb, rs);