libeufin

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

commit 11d3a68be67f8db374fa08bbfc76922c70ab40e7
parent 7d3e3ea416ab8b7bc1495f8560cb41bb93013228
Author: Antoine A <>
Date:   Tue, 16 Jan 2024 11:28:34 +0000

Add back withdrawal /abort in corebank API

Diffstat:
Mbank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt | 14++++++++++++++
Mbank/src/test/kotlin/CoreBankApiTest.kt | 4++--
2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt b/bank/src/main/kotlin/tech/libeufin/bank/CoreBankApi.kt @@ -506,6 +506,20 @@ private fun Routing.coreBankWithdrawalApi(db: Database, ctx: BankConfig) { WithdrawalConfirmationResult.Success -> call.respond(HttpStatusCode.NoContent) } } + post("/accounts/{USERNAME}/withdrawals/{withdrawal_id}/abort") { + val opId = call.uuidParameter("withdrawal_id") + when (db.withdrawal.abort(opId)) { + AbortResult.UnknownOperation -> throw notFound( + "Withdrawal operation $opId not found", + TalerErrorCode.BANK_TRANSACTION_NOT_FOUND + ) + AbortResult.AlreadyConfirmed -> throw conflict( + "Cannot abort confirmed withdrawal", + TalerErrorCode.BANK_ABORT_CONFIRM_CONFLICT + ) + AbortResult.Success -> call.respond(HttpStatusCode.NoContent) + } + } } get("/withdrawals/{withdrawal_id}") { val uuid = call.uuidParameter("withdrawal_id") diff --git a/bank/src/test/kotlin/CoreBankApiTest.kt b/bank/src/test/kotlin/CoreBankApiTest.kt @@ -1003,7 +1003,7 @@ class CoreBankWithdrawalApiTest { }.assertOkJson<BankAccountCreateWithdrawalResponse> { val uuid = it.taler_withdraw_uri.split("/").last() withdrawalSelect(uuid) - client.postA("/taler-integration/withdrawal-operation/$uuid/abort").assertNoContent() + client.postA("/accounts/merchant/withdrawals/$uuid/abort").assertNoContent() // Check error client.postA("/accounts/merchant/withdrawals/$uuid/confirm") @@ -1023,7 +1023,7 @@ class CoreBankWithdrawalApiTest { .assertConflict(TalerErrorCode.BANK_UNALLOWED_DEBIT) // Check can abort because not confirmed - client.postA("/taler-integration/withdrawal-operation/$uuid/abort").assertNoContent() + client.postA("/accounts/merchant/withdrawals/$uuid/abort").assertNoContent() } // Check confirm another user's operation