expand /payback tests

This commit is contained in:
Christian Grothoff 2017-04-10 16:51:09 +02:00
parent 368b9f8fcb
commit 17a74ee707
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 34 additions and 7 deletions

View File

@ -3401,8 +3401,9 @@ run (void *cls)
.details.payback.amount = "EUR:5" }, .details.payback.amount = "EUR:5" },
/* Fill reserve with EUR:1.01, as withdraw fee is 1 ct per config, /* Fill reserve with EUR:2.02, as withdraw fee is 1 ct per config,
then withdraw a coin, partially spend it, and then have the rest paid back. then withdraw two coin, partially spend one, and then have the rest paid back.
Check deposit of other coin fails.
(Do not use EUR:5 here as the EUR:5 coin was revoked and we did not (Do not use EUR:5 here as the EUR:5 coin was revoked and we did not
bother to create a new one...) */ bother to create a new one...) */
{ .oc = OC_ADMIN_ADD_INCOMING, { .oc = OC_ADMIN_ADD_INCOMING,
@ -3410,10 +3411,16 @@ run (void *cls)
.expected_response_code = MHD_HTTP_OK, .expected_response_code = MHD_HTTP_OK,
.details.admin_add_incoming.sender_details = "{ \"type\":\"test\", \"bank_uri\":\"http://localhost:8082/\", \"account_number\":42}", .details.admin_add_incoming.sender_details = "{ \"type\":\"test\", \"bank_uri\":\"http://localhost:8082/\", \"account_number\":42}",
.details.admin_add_incoming.transfer_details = "{ \"uuid\":5 }", .details.admin_add_incoming.transfer_details = "{ \"uuid\":5 }",
.details.admin_add_incoming.amount = "EUR:1.01" }, .details.admin_add_incoming.amount = "EUR:2.02" },
/* Withdraw a 1 EUR coin, at fee of 1 ct */ /* Withdraw a 1 EUR coin, at fee of 1 ct */
{ .oc = OC_WITHDRAW_SIGN, { .oc = OC_WITHDRAW_SIGN,
.label = "payback-withdraw-coin-2", .label = "payback-withdraw-coin-2a",
.expected_response_code = MHD_HTTP_OK,
.details.reserve_withdraw.reserve_reference = "payback-create-reserve-2",
.details.reserve_withdraw.amount = "EUR:1" },
/* Withdraw a 1 EUR coin, at fee of 1 ct */
{ .oc = OC_WITHDRAW_SIGN,
.label = "payback-withdraw-coin-2b",
.expected_response_code = MHD_HTTP_OK, .expected_response_code = MHD_HTTP_OK,
.details.reserve_withdraw.reserve_reference = "payback-create-reserve-2", .details.reserve_withdraw.reserve_reference = "payback-create-reserve-2",
.details.reserve_withdraw.amount = "EUR:1" }, .details.reserve_withdraw.amount = "EUR:1" },
@ -3422,18 +3429,37 @@ run (void *cls)
.label = "payback-deposit-partial", .label = "payback-deposit-partial",
.expected_response_code = MHD_HTTP_OK, .expected_response_code = MHD_HTTP_OK,
.details.deposit.amount = "EUR:0.5", .details.deposit.amount = "EUR:0.5",
.details.deposit.coin_ref = "payback-withdraw-coin-2", .details.deposit.coin_ref = "payback-withdraw-coin-2a",
.details.deposit.wire_details = "{ \"type\":\"test\", \"bank_uri\":\"http://localhost:8082/\", \"account_number\":42 }", .details.deposit.wire_details = "{ \"type\":\"test\", \"bank_uri\":\"http://localhost:8082/\", \"account_number\":42 }",
.details.deposit.proposal_data = "{ \"items\": [ { \"name\":\"more ice cream\", \"value\":1 } ] }" }, .details.deposit.proposal_data = "{ \"items\": [ { \"name\":\"more ice cream\", \"value\":1 } ] }" },
{ .oc = OC_REVOKE, { .oc = OC_REVOKE,
.label = "revoke-2", .label = "revoke-2",
.expected_response_code = MHD_HTTP_OK, .expected_response_code = MHD_HTTP_OK,
.details.revoke.ref = "payback-withdraw-coin-2" }, .details.revoke.ref = "payback-withdraw-coin-2a" },
{ .oc = OC_PAYBACK, { .oc = OC_PAYBACK,
.label = "payback-2", .label = "payback-2",
.expected_response_code = MHD_HTTP_OK, .expected_response_code = MHD_HTTP_OK,
.details.payback.ref = "payback-withdraw-coin-2", .details.payback.ref = "payback-withdraw-coin-2a",
.details.payback.amount = "EUR:0.5" }, .details.payback.amount = "EUR:0.5" },
{ .oc = OC_DEPOSIT,
.label = "payback-deposit-revoked",
.expected_response_code = MHD_HTTP_NOT_FOUND,
.details.deposit.amount = "EUR:1",
.details.deposit.coin_ref = "payback-withdraw-coin-2b",
.details.deposit.wire_details = "{ \"type\":\"test\", \"bank_uri\":\"http://localhost:8082/\", \"account_number\":42 }",
.details.deposit.proposal_data = "{ \"items\": [ { \"name\":\"more ice cream\", \"value\":1 } ] }" },
/* Test deposit fails after payback, with proof in payback */
/* FIXME: #3887: right now, the exchange will never return the
coin's transaction history with payback data, as we get a 404 on the DK! */
{ .oc = OC_DEPOSIT,
.label = "payback-deposit-partial-after-payback",
.expected_response_code = MHD_HTTP_NOT_FOUND,
.details.deposit.amount = "EUR:0.5",
.details.deposit.coin_ref = "payback-withdraw-coin-2a",
.details.deposit.wire_details = "{ \"type\":\"test\", \"bank_uri\":\"http://localhost:8082/\", \"account_number\":42 }",
.details.deposit.proposal_data = "{ \"items\": [ { \"name\":\"extra ice cream\", \"value\":1 } ] }" },
/* Test that revoked coins cannot be withdrawn */ /* Test that revoked coins cannot be withdrawn */
{ .oc = OC_ADMIN_ADD_INCOMING, { .oc = OC_ADMIN_ADD_INCOMING,

View File

@ -196,6 +196,7 @@ TEH_DEPOSIT_handler_deposit (struct TEH_RequestHandler *rh,
TEH_KS_DKU_DEPOSIT); TEH_KS_DKU_DEPOSIT);
if (NULL == dki) if (NULL == dki)
{ {
/* FIXME: #3887: if DK was revoked, we might want to give a 403 and not a 404! */
TEH_KS_release (key_state); TEH_KS_release (key_state);
TALER_LOG_WARNING ("Unknown denomination key in /deposit request\n"); TALER_LOG_WARNING ("Unknown denomination key in /deposit request\n");
return TEH_RESPONSE_reply_arg_unknown (connection, return TEH_RESPONSE_reply_arg_unknown (connection,