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
|
||||
problem. */
|
||||
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:
|
||||
/* Server had an internal issue; we should retry, but this API
|
||||
leaves this to the application */
|
||||
|
@ -500,6 +500,11 @@ run (void *cls,
|
||||
("refund-ok-double", MHD_HTTP_OK,
|
||||
"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
|
||||
* due to refund) (merchant would receive EUR:4.98 due to
|
||||
|
@ -298,3 +298,42 @@ TALER_TESTING_cmd_refund (const char *label,
|
||||
|
||||
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
|
||||
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.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user