libeufin

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

commit 68616ce589dce8e1983f3b8e51591e714c60609f
parent 6045f4885b5020fc052b1407965f343e2868ecfc
Author: MS <ms@taler.net>
Date:   Tue, 15 Dec 2020 01:36:54 +0100

Taler wire gateways test.

Getting /taler/history/incoming to show the
payment generated via /taler/admin/add-incoming.

Diffstat:
Mintegration-tests/tests.py | 1-
Mnexus/src/main/kotlin/tech/libeufin/nexus/DB.kt | 7++++---
Mnexus/src/main/kotlin/tech/libeufin/nexus/Taler.kt | 27+++++++++++++++++----------
3 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/integration-tests/tests.py b/integration-tests/tests.py @@ -282,7 +282,6 @@ def test_taler_facade_incoming(make_taler_facade): "taler/history/incoming?delta=5"]), auth=PERSONA.nexus.auth )) - print(resp.json().get("incoming_transactions")) assert len(resp.json().get("incoming_transactions")) == 1 def test_taler_facade_outgoing(make_taler_facade): diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/DB.kt @@ -66,7 +66,7 @@ object TalerIncomingPayments : LongIdTable() { val payment = reference("payment", NexusBankTransactionsTable) val reservePublicKey = text("reservePublicKey") val timestampMs = long("timestampMs") - val incomingPaytoUri = text("incomingPaytoUri") + val debtorPaytoUri = text("incomingPaytoUri") } class TalerIncomingPaymentEntity(id: EntityID<Long>) : LongEntity(id) { @@ -75,7 +75,7 @@ class TalerIncomingPaymentEntity(id: EntityID<Long>) : LongEntity(id) { var payment by NexusBankTransactionEntity referencedOn TalerIncomingPayments.payment var reservePublicKey by TalerIncomingPayments.reservePublicKey var timestampMs by TalerIncomingPayments.timestampMs - var incomingPaytoUri by TalerIncomingPayments.incomingPaytoUri + var debtorPaytoUri by TalerIncomingPayments.debtorPaytoUri } /** @@ -423,7 +423,8 @@ fun dbCreateTables(dbConnectionString: String) { FacadesTable, TalerFacadeStateTable, NexusScheduledTasksTable, - OfferedBankAccountsTable + OfferedBankAccountsTable, + NexusScheduledTasksTable ) } } diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Taler.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Taler.kt @@ -138,12 +138,11 @@ fun <T : Entity<Long>> SizedIterable<T>.orderTaler(delta: Int): List<T> { /** * Build an IBAN payto URI. */ -fun buildIbanPaytoUri(iban: String, bic: String?, name: String): String { - if (bic != null) { - return "payto://iban/$bic/$iban?receiver-name=$name" - } else { - return "payto://iban/$iban?receiver-name=$name" - } +fun buildIbanPaytoUri( + iban: String, bic: String, name: String, direction: String +): String { + val nameParam = if (direction == "DBIT") "sender-name" else "receiver-name" + return "payto://iban/$bic/$iban?$nameParam=$name" } /** Builds the comparison operator for history entries based on the sign of 'delta' */ @@ -396,11 +395,17 @@ private fun ingestIncoming(payment: NexusBankTransactionEntity, txDtls: Transact logger.warn("invalid public key") return } + if (debtorAgent.bic == null) { + logger.warn("Not allowing transactions missing the BIC. IBAN and name: ${debtorIban}, ${debtorName}") + return + } TalerIncomingPaymentEntity.new { this.payment = payment reservePublicKey = reservePub timestampMs = System.currentTimeMillis() - incomingPaytoUri = buildIbanPaytoUri(debtorIban, debtorAgent.bic, debtorName) + debtorPaytoUri = buildIbanPaytoUri( + debtorIban, debtorAgent.bic, debtorName, "DBIT" + ) } return } @@ -494,7 +499,8 @@ private suspend fun historyOutgoing(call: ApplicationCall) { debit_account = buildIbanPaytoUri( subscriberBankAccount.iban, subscriberBankAccount.bankCode, - subscriberBankAccount.accountHolder + subscriberBankAccount.accountHolder, + "DBIT" ), exchange_base_url = "FIXME-to-request-along-subscriber-registration" ) @@ -534,9 +540,10 @@ private suspend fun historyIncoming(call: ApplicationCall): Unit { credit_account = buildIbanPaytoUri( it.payment.bankAccount.iban, it.payment.bankAccount.bankCode, - it.payment.bankAccount.accountHolder + it.payment.bankAccount.accountHolder, + "CRDT" ), - debit_account = it.incomingPaytoUri + debit_account = it.debtorPaytoUri ) ) }