libeufin

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

commit 51d103762d3c19ad087b1c8191cfd0f0b652db6b
parent 3f55c73e8a7eeb17fce9e5e12b9a8bdc622eeb66
Author: Marcello Stanisci <stanisci.m@gmail.com>
Date:   Wed, 26 Feb 2020 13:34:20 +0100

Testing PAIN.001 generation.

Diffstat:
Mnexus/src/main/kotlin/tech/libeufin/nexus/Main.kt | 11+++++++++--
Mnexus/src/test/kotlin/DbTest.kt | 6+++---
Anexus/src/test/kotlin/PainGeneration.kt | 61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 73 insertions(+), 5 deletions(-)

diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt @@ -46,6 +46,7 @@ import org.jetbrains.exposed.exceptions.ExposedSQLException import org.jetbrains.exposed.sql.StdOutSqlLogger import org.jetbrains.exposed.sql.addLogger import org.jetbrains.exposed.sql.transactions.transaction +import org.joda.time.DateTime import org.slf4j.Logger import org.slf4j.LoggerFactory import org.slf4j.event.Level @@ -194,7 +195,10 @@ fun createPain001document(pain001Entity: Pain001Entity): String { text(pain001Entity.id.value.toString()) } element("CreDtTm") { - text("DATE") + val dateMillis = transaction { + pain001Entity.date + } + text(DateTime(dateMillis).toString("Y-M-d")) } element("NbOfTxs") { text("1") @@ -226,7 +230,10 @@ fun createPain001document(pain001Entity: Pain001Entity): String { text("SEPA") } element("ReqdExctnDt") { - text("date (YYYY-MM-DD) when the clearing agent should process the payment") + val dateMillis = transaction { + pain001Entity.date + } + text(DateTime(dateMillis).toString("Y-M-d")) } element("Dbtr/Nm") { text(pain001Entity.debtorAccount) diff --git a/nexus/src/test/kotlin/DbTest.kt b/nexus/src/test/kotlin/DbTest.kt @@ -43,14 +43,14 @@ class DbTest { @Test fun testPain001() { createPain001entry( - Pain001Entry( - debtorAccountId = "da", + Pain001Data( creditorBic = "cb", creditorIban = "ci", creditorName = "cn", sum = Amount(2), subject = "s" - ) + ), + "debtor acctid" ) } } \ No newline at end of file diff --git a/nexus/src/test/kotlin/PainGeneration.kt b/nexus/src/test/kotlin/PainGeneration.kt @@ -0,0 +1,60 @@ +package tech.libeufin.nexus + +import org.jetbrains.exposed.dao.EntityID +import org.junit.Before +import org.junit.Test + +import org.jetbrains.exposed.sql.Database +import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.sql.SchemaUtils +import org.joda.time.DateTime +import tech.libeufin.util.Amount +import javax.sql.rowset.serial.SerialBlob + + + +class PainTest { + + @Before + fun prepare() { + Database.connect("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1", driver = "org.h2.Driver") + transaction { + SchemaUtils.create(EbicsSubscribersTable) + SchemaUtils.create(EbicsAccountsInfoTable) + SchemaUtils.create(Pain001Table) + + val subscriberEntity = EbicsSubscriberEntity.new(id = "123asdf") { + ebicsURL = "ebics url" + hostID = "host" + partnerID = "partner" + userID = "user" + systemID = "system" + signaturePrivateKey = SerialBlob("signturePrivateKey".toByteArray()) + authenticationPrivateKey = SerialBlob("authenticationPrivateKey".toByteArray()) + encryptionPrivateKey = SerialBlob("encryptionPrivateKey".toByteArray()) + } + EbicsAccountInfoEntity.new(id = "acctid") { + subscriber = subscriberEntity + accountHolder = "Account Holder" + iban = "IBAN" + bankCode = "BIC" + } + } + } + + @Test + fun testPain001document() { + transaction { + val pain001Entity = Pain001Entity.new { + sum = Amount(1) + debtorAccount = "acctid" + subject = "subject line" + creditorIban = "CREDIT IBAN" + creditorBic = "CREDIT BIC" + creditorName = "CREDIT NAME" + } + val s = createPain001document(pain001Entity) + println(s) + } + } +} +\ No newline at end of file