libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit aecf4112ab5d8c56a9be3a0458f227f2b61a4d2b
parent df45bda1e6fcff81f07ae1e1d322979d2eb95cbe
Author: Antoine A <>
Date:   Tue, 24 Oct 2023 14:17:08 +0000

Fix some status codes

Diffstat:
Mbank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt | 13+++++--------
Mbank/src/test/kotlin/CoreBankApiTest.kt | 38+++++++++++++++++++-------------------
Mbank/src/test/kotlin/WireGatewayApiTest.kt | 4++--
3 files changed, 26 insertions(+), 29 deletions(-)

diff --git a/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt b/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt @@ -109,7 +109,6 @@ private fun Routing.coreBankTokenApi(db: Database) { } } - private fun Routing.coreBankAccountsMgmtApi(db: Database, ctx: BankApplicationContext) { post("/accounts") { // check if only admin is allowed to create new accounts @@ -410,7 +409,7 @@ private fun Routing.coreBankTransactionsApi(db: Database, ctx: BankApplicationCo "Creditor account was not found", TalerErrorCode.TALER_EC_BANK_UNKNOWN_ACCOUNT ) - BankTransactionResult.SUCCESS -> call.respond(HttpStatusCode.OK) + BankTransactionResult.SUCCESS -> call.respond(HttpStatusCode.NoContent) } } } @@ -462,18 +461,18 @@ fun Routing.coreBankWithdrawalApi(db: Database, ctx: BankApplicationContext) { post("/withdrawals/{withdrawal_id}/abort") { val op = getWithdrawal(db, call.expectUriComponent("withdrawal_id")) // Idempotency: if (op.aborted) { - call.respondText("{}", ContentType.Application.Json) + call.respond(HttpStatusCode.NoContent) return@post } // Op is found, it'll now fail only if previously confirmed (DB checks). if (!db.talerWithdrawalAbort(op.withdrawalUuid)) throw conflict( hint = "Cannot abort confirmed withdrawal", talerEc = TalerErrorCode.TALER_EC_END ) - call.respondText("{}", ContentType.Application.Json) + call.respond(HttpStatusCode.NoContent) } post("/withdrawals/{withdrawal_id}/confirm") { val op = getWithdrawal(db, call.expectUriComponent("withdrawal_id")) // Checking idempotency: if (op.confirmationDone) { - call.respondText("{}", ContentType.Application.Json) + call.respond(HttpStatusCode.NoContent) return@post } if (op.aborted) throw conflict( @@ -509,9 +508,7 @@ fun Routing.coreBankWithdrawalApi(db: Database, ctx: BankApplicationContext) { talerEc = TalerErrorCode.TALER_EC_BANK_UNKNOWN_ACCOUNT ) WithdrawalConfirmationResult.CONFLICT -> throw internalServerError("Bank didn't check for idempotency") - WithdrawalConfirmationResult.SUCCESS -> call.respondText( - "{}", ContentType.Application.Json - ) + WithdrawalConfirmationResult.SUCCESS -> call.respond(HttpStatusCode.NoContent) } } } \ No newline at end of file diff --git a/bank/src/test/kotlin/CoreBankApiTest.kt b/bank/src/test/kotlin/CoreBankApiTest.kt @@ -263,7 +263,7 @@ class CoreBankAccountsMgmtApiTest { jsonBody(json { "payto_uri" to "payto://iban/MERCHANT-IBAN-XYZ?message=payout&amount=KUDOS:1" }) - }.assertOk() + }.assertNoContent() client.delete("/accounts/merchant") { basicAuth("admin", "admin-password") }.assertConflict() @@ -272,7 +272,7 @@ class CoreBankAccountsMgmtApiTest { jsonBody(json { "payto_uri" to "payto://iban/EXCHANGE-IBAN-XYZ?message=payout&amount=KUDOS:1" }) - }.assertOk() + }.assertNoContent() client.delete("/accounts/merchant") { basicAuth("admin", "admin-password") }.assertNoContent() @@ -496,7 +496,7 @@ class CoreBankTransactionsApiTest { jsonBody(json { "payto_uri" to "payto://iban/EXCHANGE-IBAN-XYZ?message=payout$it&amount=KUDOS:0.$it" }) - }.assertOk() + }.assertNoContent() } // Gen two transactions from exchange to merchant repeat(2) { @@ -505,7 +505,7 @@ class CoreBankTransactionsApiTest { jsonBody(json { "payto_uri" to "payto://iban/MERCHANT-IBAN-XYZ?message=payout$it&amount=KUDOS:0.$it" }) - }.assertOk() + }.assertNoContent() } // Check no useless polling @@ -543,7 +543,7 @@ class CoreBankTransactionsApiTest { jsonBody(json { "payto_uri" to "payto://iban/EXCHANGE-IBAN-XYZ?message=payout_poll&amount=KUDOS:4.2" }) - }.assertOk() + }.assertNoContent() } // Testing ranges. @@ -553,7 +553,7 @@ class CoreBankTransactionsApiTest { jsonBody(json { "payto_uri" to "payto://iban/EXCHANGE-IBAN-XYZ?message=payout_range&amount=KUDOS:0.001" }) - }.assertOk() + }.assertNoContent() } // forward range: @@ -579,7 +579,7 @@ class CoreBankTransactionsApiTest { "payto_uri" to "payto://iban/EXCHANGE-IBAN-XYZ?message=payout" "amount" to "KUDOS:0.3" }) - }.assertOk() + }.assertNoContent() // Check OK client.get("/accounts/merchant/transactions/1") { basicAuth("merchant", "merchant-password") @@ -612,7 +612,7 @@ class CoreBankTransactionsApiTest { client.post("/accounts/merchant/transactions") { basicAuth("merchant", "merchant-password") jsonBody(valid_req) - }.assertOk() + }.assertNoContent() client.get("/accounts/merchant/transactions/1") { basicAuth("merchant", "merchant-password") }.assertOk().run { @@ -626,7 +626,7 @@ class CoreBankTransactionsApiTest { jsonBody(json { "payto_uri" to "payto://iban/EXCHANGE-IBAN-XYZ?message=payout2&amount=KUDOS:1.05" }) - }.assertOk() + }.assertNoContent() client.get("/accounts/merchant/transactions/3") { basicAuth("merchant", "merchant-password") }.assertOk().run { @@ -641,7 +641,7 @@ class CoreBankTransactionsApiTest { "payto_uri" to "payto://iban/EXCHANGE-IBAN-XYZ?message=payout3&amount=KUDOS:1.05" "amount" to "KUDOS:10.003" }) - }.assertOk() + }.assertNoContent() client.get("/accounts/merchant/transactions/5") { basicAuth("merchant", "merchant-password") }.assertOk().run { @@ -734,9 +734,9 @@ class CoreBankWithdrawalApiTest { val uuid = resp.taler_withdraw_uri.split("/").last() // Check OK - client.post("/withdrawals/$uuid/abort").assertOk() + client.post("/withdrawals/$uuid/abort").assertNoContent() // Check idempotence - client.post("/withdrawals/$uuid/abort").assertOk() + client.post("/withdrawals/$uuid/abort").assertNoContent() } // Check abort selected @@ -754,9 +754,9 @@ class CoreBankWithdrawalApiTest { }.assertOk() // Check OK - client.post("/withdrawals/$uuid/abort").assertOk() + client.post("/withdrawals/$uuid/abort").assertNoContent() // Check idempotence - client.post("/withdrawals/$uuid/abort").assertOk() + client.post("/withdrawals/$uuid/abort").assertNoContent() } // Check abort confirmed @@ -772,7 +772,7 @@ class CoreBankWithdrawalApiTest { "selected_exchange" to IbanPayTo("payto://iban/EXCHANGE-IBAN-XYZ") }) }.assertOk() - client.post("/withdrawals/$uuid/confirm").assertOk() + client.post("/withdrawals/$uuid/confirm").assertNoContent() // Check error client.post("/withdrawals/$uuid/abort").assertConflict() @@ -787,7 +787,7 @@ class CoreBankWithdrawalApiTest { // POST /withdrawals/withdrawal_id/confirm @Test - fun confirm() = bankSetup { db -> + fun confirm() = bankSetup { _ -> // Check confirm created client.post("/accounts/merchant/withdrawals") { basicAuth("merchant", "merchant-password") @@ -815,9 +815,9 @@ class CoreBankWithdrawalApiTest { }.assertOk() // Check OK - client.post("/withdrawals/$uuid/confirm").assertOk() + client.post("/withdrawals/$uuid/confirm").assertNoContent() // Check idempotence - client.post("/withdrawals/$uuid/confirm").assertOk() + client.post("/withdrawals/$uuid/confirm").assertNoContent() } // Check confirm aborted @@ -833,7 +833,7 @@ class CoreBankWithdrawalApiTest { "selected_exchange" to IbanPayTo("payto://iban/EXCHANGE-IBAN-XYZ") }) }.assertOk() - client.post("/withdrawals/$uuid/abort").assertOk() + client.post("/withdrawals/$uuid/abort").assertNoContent() // Check error client.post("/withdrawals/$uuid/confirm").assertConflict() diff --git a/bank/src/test/kotlin/WireGatewayApiTest.kt b/bank/src/test/kotlin/WireGatewayApiTest.kt @@ -271,7 +271,7 @@ class WireGatewayApiTest { }.assertOk() client.post("/withdrawals/${uuid}/confirm") { basicAuth("merchant", "merchant-password") - }.assertOk() + }.assertNoContent() } // Check ignore bogus subject @@ -356,7 +356,7 @@ class WireGatewayApiTest { }.assertOk() client.post("/withdrawals/${uuid}/confirm") { basicAuth("merchant", "merchant-password") - }.assertOk() + }.assertNoContent() } }