Trigger conflicting refunds
This commit is contained in:
parent
5e1178a74b
commit
381ac75ae0
@ -184,6 +184,10 @@ handle_refund_finished (void *cls,
|
|||||||
/* Client request was inconsistent; might be a currency missmatch
|
/* Client request was inconsistent; might be a currency missmatch
|
||||||
problem. */
|
problem. */
|
||||||
break;
|
break;
|
||||||
|
case MHD_HTTP_CONFLICT:
|
||||||
|
/* Two refund requests were made about the same deposit, but
|
||||||
|
carrying different refund transaction ids. */
|
||||||
|
break;
|
||||||
case MHD_HTTP_INTERNAL_SERVER_ERROR:
|
case MHD_HTTP_INTERNAL_SERVER_ERROR:
|
||||||
/* Server had an internal issue; we should retry, but this API
|
/* Server had an internal issue; we should retry, but this API
|
||||||
leaves this to the application */
|
leaves this to the application */
|
||||||
|
@ -500,6 +500,11 @@ run (void *cls,
|
|||||||
("refund-ok-double", MHD_HTTP_OK,
|
("refund-ok-double", MHD_HTTP_OK,
|
||||||
"EUR:5", "EUR:0.01", "deposit-refund-1"),
|
"EUR:5", "EUR:0.01", "deposit-refund-1"),
|
||||||
|
|
||||||
|
/* Previous /refund(s) had id == 0. */
|
||||||
|
TALER_TESTING_cmd_refund_with_id
|
||||||
|
("refund-conflicting", MHD_HTTP_CONFLICT,
|
||||||
|
"EUR:5", "EUR:0.01", "deposit-refund-1", 1),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spend 4.99 EUR of the refunded 4.99 EUR coin (1ct gone
|
* Spend 4.99 EUR of the refunded 4.99 EUR coin (1ct gone
|
||||||
* due to refund) (merchant would receive EUR:4.98 due to
|
* due to refund) (merchant would receive EUR:4.98 due to
|
||||||
|
@ -298,3 +298,42 @@ TALER_TESTING_cmd_refund (const char *label,
|
|||||||
|
|
||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a /refund test command, allows to specify refund
|
||||||
|
* transaction id. Mainly used to create conflicting requests.
|
||||||
|
*
|
||||||
|
* @param label command label
|
||||||
|
* @param expected_response_code expected HTTP status code
|
||||||
|
* @param refund_amount the amount to ask a refund for
|
||||||
|
* @param refund_fee expected refund fee
|
||||||
|
* @param coin_reference reference to a command that can
|
||||||
|
* provide a coin to be refunded.
|
||||||
|
*/
|
||||||
|
struct TALER_TESTING_Command
|
||||||
|
TALER_TESTING_cmd_refund_with_id
|
||||||
|
(const char *label,
|
||||||
|
unsigned int expected_response_code,
|
||||||
|
const char *refund_amount,
|
||||||
|
const char *refund_fee,
|
||||||
|
const char *coin_reference,
|
||||||
|
uint64_t refund_transaction_id)
|
||||||
|
{
|
||||||
|
struct RefundState *rs;
|
||||||
|
struct TALER_TESTING_Command cmd;
|
||||||
|
|
||||||
|
rs = GNUNET_new (struct RefundState);
|
||||||
|
|
||||||
|
rs->expected_response_code = expected_response_code;
|
||||||
|
rs->refund_amount = refund_amount;
|
||||||
|
rs->refund_fee = refund_fee;
|
||||||
|
rs->coin_reference = coin_reference;
|
||||||
|
rs->refund_transaction_id = refund_transaction_id;
|
||||||
|
|
||||||
|
cmd.cls = rs;
|
||||||
|
cmd.label = label;
|
||||||
|
cmd.run = &refund_run;
|
||||||
|
cmd.cleanup = &refund_cleanup;
|
||||||
|
|
||||||
|
return cmd;
|
||||||
|
}
|
||||||
|
@ -828,6 +828,26 @@ TALER_TESTING_cmd_check_bank_transfer_with_ref
|
|||||||
struct TALER_TESTING_Command
|
struct TALER_TESTING_Command
|
||||||
TALER_TESTING_cmd_check_bank_empty (const char *label);
|
TALER_TESTING_cmd_check_bank_empty (const char *label);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a /refund test command, allows to specify refund
|
||||||
|
* transaction id.
|
||||||
|
*
|
||||||
|
* @param label command label
|
||||||
|
* @param expected_response_code expected HTTP status code
|
||||||
|
* @param refund_amount the amount to ask a refund for
|
||||||
|
* @param refund_fee expected refund fee
|
||||||
|
* @param coin_reference reference to a command that can
|
||||||
|
* provide a coin to be refunded.
|
||||||
|
*/
|
||||||
|
struct TALER_TESTING_Command
|
||||||
|
TALER_TESTING_cmd_refund_with_id
|
||||||
|
(const char *label,
|
||||||
|
unsigned int expected_response_code,
|
||||||
|
const char *refund_amount,
|
||||||
|
const char *refund_fee,
|
||||||
|
const char *deposit_reference,
|
||||||
|
uint64_t refund_transaction_id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a /refund test command.
|
* Create a /refund test command.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user