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:
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