libeufin

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

commit 9d962be10d0498a370bac0b41a7b706dfe8a49b9
parent fa00163abd4a3a2a5e53f3ff298b8d7417857a84
Author: Antoine A <>
Date:   Mon, 23 Sep 2024 18:45:49 +0200

nexus: improve registration test

Diffstat:
Mnexus/sample/platform/gls_camt052.xml | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mnexus/src/test/kotlin/Iso20022Test.kt | 6+++++-
Mnexus/src/test/kotlin/RegistrationTest.kt | 47+++++++++++++++++++++++++++++++++++++----------
Mtestbench/src/main/kotlin/Main.kt | 12++++++------
4 files changed, 113 insertions(+), 17 deletions(-)

diff --git a/nexus/sample/platform/gls_camt052.xml b/nexus/sample/platform/gls_camt052.xml @@ -483,6 +483,71 @@ </NtryDtls> <AddtlNtryInf>Überweisungsauftrag</AddtlNtryInf> </Ntry> + <Ntry> + <Amt Ccy="EUR">0.46</Amt> + <CdtDbtInd>DBIT</CdtDbtInd> + <Sts>BOOK</Sts> + <BookgDt> + <Dt>2024-09-20</Dt> + </BookgDt> + <ValDt> + <Dt>2024-09-20</Dt> + </ValDt> + <AcctSvcrRef>2024092019251584000</AcctSvcrRef> + <BkTxCd> + <Domn> + <Cd>PMNT</Cd> + <Fmly> + <Cd>ICDT</Cd> + <SubFmlyCd>ESCT</SubFmlyCd> + </Fmly> + </Domn> + <Prtry> + <Cd>NTRF+191+08381</Cd> + <Issr>DK</Issr> + </Prtry> + </BkTxCd> + <NtryDtls> + <TxDtls> + <Refs> + <MsgId>BATCH_MANY_SUCCESS</MsgId> + <PmtInfId>NOTPROVIDED</PmtInfId> + </Refs> + <AmtDtls> + <TxAmt> + <Amt Ccy="EUR">0.46</Amt> + </TxAmt> + </AmtDtls> + <BkTxCd> + <Domn> + <Cd>PMNT</Cd> + <Fmly> + <Cd>ICDT</Cd> + <SubFmlyCd>ESCT</SubFmlyCd> + </Fmly> + </Domn> + <Prtry> + <Cd>NTRF+191+08381</Cd> + <Issr>DK</Issr> + </Prtry> + </BkTxCd> + <RltdPties> + <Dbtr> + <Nm>Florian Dold</Nm> + </Dbtr> + <DbtrAcct> + <Id> + <IBAN>DE89500105171325381664</IBAN> + </Id> + </DbtrAcct> + </RltdPties> + <RmtInf> + <Ustrd>SEPA Sammel-Ueberweisung mit 4 Ueberweisungen MSG-ID: BATCH_MANY_SUCCESS</Ustrd> + </RmtInf> + </TxDtls> + </NtryDtls> + <AddtlNtryInf>Sammelüberweisung</AddtlNtryInf> + </Ntry> </Rpt> </BkToCstmrAcctRpt> </Document> \ No newline at end of file diff --git a/nexus/src/test/kotlin/Iso20022Test.kt b/nexus/src/test/kotlin/Iso20022Test.kt @@ -194,7 +194,7 @@ class Iso20022Test { } @Test - fun gls_camt052_() { + fun gls_camt052() { assertContentEquals( parseTx(Path("sample/platform/gls_camt052.xml").inputStream(), "EUR", Dialect.gls), listOf( @@ -239,6 +239,10 @@ class Iso20022Test { executionTime = dateToInstant("2024-04-18"), creditorPayto = ibanPayto("DE20500105172419259181", "John Smith") ), + OutgoingBatch( + msgId = "BATCH_MANY_SUCCESS", + executionTime = dateToInstant("2024-09-20"), + ) ) ) } diff --git a/nexus/src/test/kotlin/RegistrationTest.kt b/nexus/src/test/kotlin/RegistrationTest.kt @@ -262,12 +262,11 @@ class RegistrationTest { "BATCH_SINGLE_FAILURE" to listOf( genInitPay("DAFC3NEE4T48WVC560T76ABA2C"), ), - // EF525087DD2D4ABBA65C8CD3EEB6952F "BATCH_MANY_SUCCESS" to listOf( - genInitPay("ZGRT91MSQY3QVJ93SX5MNFAC9R"), - genInitPay("T9CYNR9EJS3HR3KFVQF5VY82EW"), - genInitPay("B93XHQR6SPAB7QCDG960E71MWM"), - genInitPay("XC1YNY5HCDDAM0M7GKV0KN01S0"), + genInitPay("IVMIGCUIE7Q7VOF73R8GU3KGRYBZPAYC5V"), + genInitPay("CDFN7I4FVIZ848DGDQ35DZ2K49H9EWXGAW"), + genInitPay("35M1268GW5ZFHS5JCB41UKDQNPMD40T849"), + genInitPay("HPOMV7A4E3P1TK9UZJS1WTM94A9V3X2SR1"), ), "BATCH_MANY_PART" to listOf( genInitPay("27SK3166EG36SJ7VP7VFYP0MW8"), @@ -301,11 +300,11 @@ class RegistrationTest { "BATCH_SINGLE_FAILURE" to Pair(SubmissionState.pending, mapOf( // TODO success "DAFC3NEE4T48WVC560T76ABA2C" to SubmissionState.pending, // TODO failure )), - "BATCH_MANY_SUCCESS" to Pair(SubmissionState.pending, mapOf( // TODO success - "ZGRT91MSQY3QVJ93SX5MNFAC9R" to SubmissionState.pending, // TODO success - "T9CYNR9EJS3HR3KFVQF5VY82EW" to SubmissionState.pending, // TODO success - "B93XHQR6SPAB7QCDG960E71MWM" to SubmissionState.pending, // TODO success - "XC1YNY5HCDDAM0M7GKV0KN01S0" to SubmissionState.pending, // TODO success + "BATCH_MANY_SUCCESS" to Pair(SubmissionState.success, mapOf( + "IVMIGCUIE7Q7VOF73R8GU3KGRYBZPAYC5V" to SubmissionState.success, + "CDFN7I4FVIZ848DGDQ35DZ2K49H9EWXGAW" to SubmissionState.success, + "35M1268GW5ZFHS5JCB41UKDQNPMD40T849" to SubmissionState.success, + "HPOMV7A4E3P1TK9UZJS1WTM94A9V3X2SR1" to SubmissionState.success, )), "BATCH_MANY_PART" to Pair(SubmissionState.success, mapOf( "27SK3166EG36SJ7VP7VFYP0MW8" to SubmissionState.success, @@ -349,6 +348,34 @@ class RegistrationTest { creditorPayto = ibanPayto("DE20500105172419259181", "John Smith") ), OutgoingPayment( + endToEndId = "IVMIGCUIE7Q7VOF73R8GU3KGRYBZPAYC5V", + amount = TalerAmount("EUR:44"), + subject = "init payment", + executionTime = dateToInstant("2024-09-20"), + creditorPayto = ibanPayto("CH4189144589712575493", "Test") + ), + OutgoingPayment( + endToEndId = "CDFN7I4FVIZ848DGDQ35DZ2K49H9EWXGAW", + amount = TalerAmount("EUR:44"), + subject = "init payment", + executionTime = dateToInstant("2024-09-20"), + creditorPayto = ibanPayto("CH4189144589712575493", "Test") + ), + OutgoingPayment( + endToEndId = "35M1268GW5ZFHS5JCB41UKDQNPMD40T849", + amount = TalerAmount("EUR:44"), + subject = "init payment", + executionTime = dateToInstant("2024-09-20"), + creditorPayto = ibanPayto("CH4189144589712575493", "Test") + ), + OutgoingPayment( + endToEndId = "HPOMV7A4E3P1TK9UZJS1WTM94A9V3X2SR1", + amount = TalerAmount("EUR:44"), + subject = "init payment", + executionTime = dateToInstant("2024-09-20"), + creditorPayto = ibanPayto("CH4189144589712575493", "Test") + ), + OutgoingPayment( endToEndId = "27SK3166EG36SJ7VP7VFYP0MW8", amount = TalerAmount("EUR:44"), subject = "init payment", diff --git a/testbench/src/main/kotlin/Main.kt b/testbench/src/main/kotlin/Main.kt @@ -95,10 +95,10 @@ class Cli : CliktCommand() { LIBEUFIN_NEXUS_HOME = test/$platform [nexus-fetch] - FREQUENCY = 1min + FREQUENCY = 4h [nexus-submit] - FREQUENCY = 1min + FREQUENCY = 4h [libeufin-nexusdb-postgres] CONFIG = postgres:///libeufintestbench @@ -198,19 +198,19 @@ class Cli : CliktCommand() { val badPayto = URLBuilder().takeFrom(payto) badPayto.parameters["receiver-name"] = "John Smith" step("Submit new transaction with a bad name") - nexusCmd.run("initiate-payment $flags \"$badPayto&amount=$currency:0.41&message=This%20should%20fail%20because%20bad%20name\"") + nexusCmd.run("initiate-payment $flags \"$badPayto&amount=$currency:0.21&message=This%20should%20fail%20because%20bad%20name\"") Unit }) put("tx-bad-iban", suspend { - val badPayto = URLBuilder().takeFrom("payto://iban/DE18500105173385245163") + val badPayto = URLBuilder().takeFrom("payto://iban/DE18500105173385245162") badPayto.parameters["receiver-name"] = "John Smith" step("Submit new transaction to a bad IBAN") - nexusCmd.run("initiate-payment $flags \"$badPayto&amount=$currency:0.42&message=This%20should%20fail%20because%20bad%20iban\"") + nexusCmd.run("initiate-payment $flags \"$badPayto&amount=$currency:0.22&message=This%20should%20fail%20because%20bad%20iban\"") Unit }) put("tx-dummy", suspend { step("Submit new transaction to a dummy IBAN") - nexusCmd.run("initiate-payment $flags \"$dummyPayto&amount=$currency:0.43&message=This%20should%20fail%20because%20dummy\"") + nexusCmd.run("initiate-payment $flags \"$dummyPayto&amount=$currency:0.23&message=This%20should%20fail%20because%20dummy\"") Unit }) put("tx-check", "Check transaction semantic", "testing tx-check $flags")