libeufin

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

commit 85618a51f15253fce535ee1db90c5ebd12dac92f
parent fde7d90ef5a3638cb36b197340f4fd068282b8f1
Author: MS <ms@taler.net>
Date:   Thu,  3 Dec 2020 14:47:43 +0100

Camt testing.

Testing the ingestion by POSTing the XML directly
at the Nexus, thanks to the new Test API.

Diffstat:
Aintegration-tests/camt53-gls-style.xml | 335+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mintegration-tests/tests.py | 22+++++++++++++++++++++-
Mintegration-tests/util.py | 8+++++---
3 files changed, 361 insertions(+), 4 deletions(-)

diff --git a/integration-tests/camt53-gls-style.xml b/integration-tests/camt53-gls-style.xml @@ -0,0 +1,335 @@ +<?xml version="1.0" encoding="UTF-8" ?><Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:camt.053.001.02 camt.053.001.02.xsd"> + <BkToCstmrStmt> + <GrpHdr> + <MsgId>053D2020-05-29T23:41:27.0N200000011</MsgId> + <CreDtTm>2020-05-29T23:41:21.0+02:00</CreDtTm> + <MsgPgntn> + <PgNb>001</PgNb> + <LastPgInd>true</LastPgInd> + </MsgPgntn> + </GrpHdr> + <Stmt> + <Id>4967C532020052923412775014049078800</Id> + <ElctrncSeqNb>200000011</ElctrncSeqNb> + <LglSeqNb>005</LglSeqNb> + <CreDtTm>2020-05-29T23:41:21.0+02:00</CreDtTm> + <Acct> + <Id> + <IBAN>DE00000000000000000000</IBAN> + </Id> + <Ccy>EUR</Ccy> + <Ownr> + <Nm>Taler Exchange</Nm> + </Ownr> + <Svcr> + <FinInstnId> + <BIC>GENODEM1GLS</BIC> + <Nm>GLS Gemeinschaftsbank eG</Nm> + <Othr> + <Id>DE 124090847</Id> + <Issr>UmsStId</Issr> + </Othr> + </FinInstnId> + </Svcr> + </Acct> + <Bal> + <Tp> + <CdOrPrtry> + <Cd>PRCD</Cd> + </CdOrPrtry> + </Tp> + <Amt Ccy="EUR">202.01</Amt> + <CdtDbtInd>CRDT</CdtDbtInd> + <Dt> + <Dt>2020-05-29</Dt> + </Dt> + </Bal> + <Bal> + <Tp> + <CdOrPrtry> + <Cd>CLBD</Cd> + </CdOrPrtry> + </Tp> + <Amt Ccy="EUR">199.34</Amt> + <CdtDbtInd>CRDT</CdtDbtInd> + <Dt> + <Dt>2020-05-29</Dt> + </Dt> + </Bal> + <Ntry> + <Amt Ccy="EUR">2.35</Amt> + <CdtDbtInd>CRDT</CdtDbtInd> + <Sts>BOOK</Sts> + <BookgDt> + <Dt>2020-05-29</Dt> + </BookgDt> + <ValDt> + <Dt>2020-05-29</Dt> + </ValDt> + <AcctSvcrRef>2020052912023838000</AcctSvcrRef> + <BkTxCd> + <Domn> + <Cd>PMNT</Cd> + <Fmly> + <Cd>RRCT</Cd> + <SubFmlyCd>ESCT</SubFmlyCd> + </Fmly> + </Domn> + <Prtry> + <Cd>NTRF+168+00931</Cd> + <Issr>DK</Issr> + </Prtry> + </BkTxCd> + <NtryDtls> + <TxDtls> + <Refs> + <EndToEndId>NOTPROVIDED</EndToEndId> + </Refs> + <AmtDtls> + <TxAmt> + <Amt Ccy="EUR">2.35</Amt> + </TxAmt> + </AmtDtls> + <BkTxCd> + <Domn> + <Cd>PMNT</Cd> + <Fmly> + <Cd>RRCT</Cd> + <SubFmlyCd>ESCT</SubFmlyCd> + </Fmly> + </Domn> + <Prtry> + <Cd>NTRF+168+00931</Cd> + <Issr>DK</Issr> + </Prtry> + </BkTxCd> + <RltdPties> + <Dbtr> + <Nm>TALER WALLET USER</Nm> + </Dbtr> + <DbtrAcct> + <Id> + <IBAN>DE00000000000000000000</IBAN> + </Id> + </DbtrAcct> + <Cdtr> + <Nm>Taler Exchange</Nm> + </Cdtr> + <CdtrAcct> + <Id> + <IBAN>DE00000000000000000000</IBAN> + </Id> + </CdtrAcct> + </RltdPties> + <RltdAgts> + <DbtrAgt> + <FinInstnId> + <BIC>BYLADEM1WOR</BIC> + </FinInstnId> + </DbtrAgt> + </RltdAgts> + <RmtInf> + <Ustrd>Überweisung Test Nr. 1 Referenz-Nummer 0FMRBH8FZYYMSQ2RHTYYGK2BV33JVSW6MTYCV7Y833GVNXFDYK10</Ustrd> + </RmtInf> + </TxDtls> + </NtryDtls> + <AddtlNtryInf>Überweisungsgutschr.</AddtlNtryInf> + </Ntry> + <Ntry> + <Amt Ccy="EUR">3.15</Amt> + <CdtDbtInd>CRDT</CdtDbtInd> + <Sts>BOOK</Sts> + <BookgDt> + <Dt>2020-05-29</Dt> + </BookgDt> + <ValDt> + <Dt>2020-05-29</Dt> + </ValDt> + <AcctSvcrRef>2020052913163282000</AcctSvcrRef> + <BkTxCd> + <Domn> + <Cd>PMNT</Cd> + <Fmly> + <Cd>RRCT</Cd> + <SubFmlyCd>ESCT</SubFmlyCd> + </Fmly> + </Domn> + <Prtry> + <Cd>NTRF+168+00931</Cd> + <Issr>DK</Issr> + </Prtry> + </BkTxCd> + <NtryDtls> + <TxDtls> + <Refs> + <EndToEndId>NOTPROVIDED</EndToEndId> + </Refs> + <AmtDtls> + <TxAmt> + <Amt Ccy="EUR">3.15</Amt> + </TxAmt> + </AmtDtls> + <BkTxCd> + <Domn> + <Cd>PMNT</Cd> + <Fmly> + <Cd>RRCT</Cd> + <SubFmlyCd>ESCT</SubFmlyCd> + </Fmly> + </Domn> + <Prtry> + <Cd>NTRF+168+00931</Cd> + <Issr>DK</Issr> + </Prtry> + </BkTxCd> + <RltdPties> + <Dbtr> + <Nm>TALER WALLET USER</Nm> + </Dbtr> + <DbtrAcct> + <Id> + <IBAN>DE00000000000000000000</IBAN> + </Id> + </DbtrAcct> + <Cdtr> + <Nm>Taler Exchange</Nm> + </Cdtr> + <CdtrAcct> + <Id> + <IBAN>DE00000000000000000000</IBAN> + </Id> + </CdtrAcct> + </RltdPties> + <RltdAgts> + <DbtrAgt> + <FinInstnId> + <BIC>BYLADEM1WOR</BIC> + </FinInstnId> + </DbtrAgt> + </RltdAgts> + <RmtInf> + <Ustrd>Überweisung Mai, Test Nr. 2</Ustrd> + </RmtInf> + </TxDtls> + </NtryDtls> + <AddtlNtryInf>Überweisungsgutschr.</AddtlNtryInf> + </Ntry> + <Ntry> + <Amt Ccy="EUR">1.79</Amt> + <CdtDbtInd>CRDT</CdtDbtInd> + <Sts>BOOK</Sts> + <BookgDt> + <Dt>2020-05-29</Dt> + </BookgDt> + <ValDt> + <Dt>2020-05-29</Dt> + </ValDt> + <AcctSvcrRef>2020052913183564000</AcctSvcrRef> + <BkTxCd> + <Domn> + <Cd>PMNT</Cd> + <Fmly> + <Cd>RRCT</Cd> + <SubFmlyCd>ESCT</SubFmlyCd> + </Fmly> + </Domn> + <Prtry> + <Cd>NTRF+168+00931</Cd> + <Issr>DK</Issr> + </Prtry> + </BkTxCd> + <NtryDtls> + <TxDtls> + <Refs> + <EndToEndId>NOTPROVIDED</EndToEndId> + </Refs> + <AmtDtls> + <TxAmt> + <Amt Ccy="EUR">1.79</Amt> + </TxAmt> + </AmtDtls> + <BkTxCd> + <Domn> + <Cd>PMNT</Cd> + <Fmly> + <Cd>RRCT</Cd> + <SubFmlyCd>ESCT</SubFmlyCd> + </Fmly> + </Domn> + <Prtry> + <Cd>NTRF+168+00931</Cd> + <Issr>DK</Issr> + </Prtry> + </BkTxCd> + <RltdPties> + <Dbtr> + <Nm>TALER EXCHANGE</Nm> + </Dbtr> + <DbtrAcct> + <Id> + <IBAN>DE00000000000000000000</IBAN> + </Id> + </DbtrAcct> + <Cdtr> + <Nm>Taler Merchant</Nm> + </Cdtr> + <CdtrAcct> + <Id> + <IBAN>DE00000000000000000000</IBAN> + </Id> + </CdtrAcct> + </RltdPties> + <RltdAgts> + <DbtrAgt> + <FinInstnId> + <BIC>BYLADEM1WOR</BIC> + </FinInstnId> + </DbtrAgt> + </RltdAgts> + <RmtInf> + <Ustrd>Überweisung Mai, Test Nr. 3</Ustrd> + </RmtInf> + </TxDtls> + </NtryDtls> + <AddtlNtryInf>Überweisungsgutschr.</AddtlNtryInf> + </Ntry> + <Ntry> + <Amt Ccy="EUR">9.96</Amt> + <CdtDbtInd>DBIT</CdtDbtInd> + <Sts>BOOK</Sts> + <BookgDt> + <Dt>2020-05-29</Dt> + </BookgDt> + <ValDt> + <Dt>2020-05-31</Dt> + </ValDt> + <AcctSvcrRef>2020052921190458000</AcctSvcrRef> + <BkTxCd> + <Prtry> + <Cd>NMSC+805+00905</Cd> + <Issr>DK</Issr> + </Prtry> + </BkTxCd> + <NtryDtls> + <TxDtls> + <AmtDtls> + <TxAmt> + <Amt Ccy="EUR">9.96</Amt> + </TxAmt> + </AmtDtls> + <BkTxCd> + <Prtry> + <Cd>NMSC+805+00905</Cd> + <Issr>DK</Issr> + </Prtry> + </BkTxCd> + <RmtInf> + <Ustrd>ABSCHLUSS PER 31.05.2020</Ustrd> + </RmtInf> + </TxDtls> + </NtryDtls> + <AddtlNtryInf>Abschluss</AddtlNtryInf> + </Ntry> + </Stmt> + </BkToCstmrStmt> +</Document> diff --git a/integration-tests/tests.py b/integration-tests/tests.py @@ -1,5 +1,7 @@ #!/usr/bin/env python3 +import pytest +import json from subprocess import check_call from requests import post, get, auth from time import sleep @@ -232,7 +234,7 @@ def test_payment(): # This test makes one payment via the Taler facade, # and expects too see it in the outgoing history. -@pytest.skip("Need more attention") +@pytest.mark.skip("Needs more attention") def test_taler_facade(): assertResponse( post( @@ -335,3 +337,21 @@ def test_double_connection_name(): ), [406] # expecting "406 Not acceptable" ) + +def test_ingestion_camt53(): + with open("camt53-gls-style.xml") as f: + camt = f.read() + assertResponse( + post( + f"{N}/bank-accounts/{NEXUS_BANK_LABEL}/test-camt-ingestion/C53", + auth=NEXUS_AUTH, + data=camt + ) + ) + + resp = assertResponse( + get( + f"{N}/bank-accounts/{NEXUS_BANK_LABEL}/transactions", + auth=NEXUS_AUTH + ) + ) diff --git a/integration-tests/util.py b/integration-tests/util.py @@ -50,6 +50,7 @@ def makeNexusSuperuser(dbName): check_call( [ "../gradlew", + "-q", "-p", "..", "nexus:run", @@ -101,10 +102,10 @@ def flushTablesNexus(dbName): def startSandbox(dbName="sandbox-test.sqlite3"): db_full_path = str(Path.cwd() / dbName) check_call(["rm", "-f", db_full_path]) - check_call(["../gradlew", "-p", "..", "sandbox:assemble"]) + check_call(["../gradlew", "-q", "-p", "..", "sandbox:assemble"]) checkPort(5000) sandbox = Popen( - ["../gradlew", "-p", "..", "sandbox:run", "--console=plain", "--args=serve --db-name={}".format(db_full_path)], + ["../gradlew", "-q", "-p", "..", "sandbox:run", "--console=plain", "--args=serve --db-name={}".format(db_full_path)], stdin=DEVNULL, stdout=open("sandbox-stdout.log", "w"), stderr=open("sandbox-stderr.log", "w"), @@ -128,12 +129,13 @@ def startNexus(dbName="nexus-test.sqlite3"): db_full_path = str(Path.cwd() / dbName) check_call(["rm", "-f", "--", db_full_path]) check_call( - ["../gradlew", "-p", "..", "nexus:assemble",] + ["../gradlew", "-q", "-p", "..", "nexus:assemble",] ) checkPort(5001) nexus = Popen( [ "../gradlew", + "-q", "-p", "..", "nexus:run",