libeufin

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

commit 197996d952573f0103567c4e5b33ba53b1a316cb
parent 91cad84591efd36aa685b18ae2ba9939afb1a6f1
Author: ms <ms@taler.net>
Date:   Wed, 22 Sep 2021 08:37:44 +0200

more error codes

Diffstat:
Msandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt | 4++--
Msandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt | 13++++++++++++-
Mutil/src/main/kotlin/LibeufinErrorCodes.kt | 11+++++++++++
3 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Main.kt @@ -434,7 +434,7 @@ fun serverMain(dbName: String, port: Int) { ) } exception<SandboxError> { cause -> - logger.error("Exception while handling '${call.request.uri}'", cause) + logger.error("Exception while handling '${call.request.uri}', ${cause.reason}") call.respond( cause.statusCode, SandboxErrorJson( @@ -1026,7 +1026,7 @@ fun serverMain(dbName: String, port: Int) { val ret = TalerWithdrawalStatus( selection_done = wo.selectionDone, transfer_done = wo.transferDone, - amount = "${currencyEnv}:1", + amount = "${currencyEnv}:5", suggested_exchange = "https://exchange.${envName}.taler.net/" ) call.respond(ret) diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt b/sandbox/src/main/kotlin/tech/libeufin/sandbox/bankAccount.kt @@ -1,6 +1,7 @@ package tech.libeufin.sandbox import io.ktor.http.* +import org.apache.http.HttpStatus import org.jetbrains.exposed.sql.and import org.jetbrains.exposed.sql.transactions.transaction import org.slf4j.Logger @@ -143,8 +144,18 @@ fun wireTransfer( } catch (e: Exception) { throw SandboxError(HttpStatusCode.BadRequest, "Amount given not valid: $amount") } + // Extra check on the currency's consistency + if (credit.currency != debit.currency) throw SandboxError( + HttpStatusCode.InternalServerError, + "Credit and debit account have different currency (${credit.currency} vs ${debit.currency})!", + LibeufinErrorCode.LIBEUFIN_EC_CURRENCY_INCONSISTENT + ) if (amountObj.currency != credit.currency || amountObj.currency != debit.currency) { - throw SandboxError(HttpStatusCode.BadRequest, "currency (${amountObj.currency}) can't be accepted") + throw SandboxError( + HttpStatusCode.BadRequest, + "Currency (${amountObj.currency}) is not supported", + LibeufinErrorCode.LIBEUFIN_EC_BAD_CURRENCY + ) } val randId = getRandomString(16) BankAccountTransactionEntity.new { diff --git a/util/src/main/kotlin/LibeufinErrorCodes.kt b/util/src/main/kotlin/LibeufinErrorCodes.kt @@ -61,4 +61,15 @@ enum class LibeufinErrorCode(val code: Int) { * (A value of 0 indicates that the error is generated client-side). */ LIBEUFIN_EC_GENERIC_PARAMETER_MALFORMED(5), + + /** + * Two different resources are NOT having the same currency. + */ + LIBEUFIN_EC_CURRENCY_INCONSISTENT(6), + + /** + * A request is using a unsupported currency. Usually returned + * along 400 Bad Request + */ + LIBEUFIN_EC_BAD_CURRENCY(7) } \ No newline at end of file