1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
import datetime
import pytest
from sepaxml import SepaTransfer
from tests.utils import clean_ids, validate_xml
@pytest.fixture
def strf():
return SepaTransfer({
"name": "TestCreditor",
"IBAN": "CH4912345123456789012",
"batch": True,
"domestic": True,
"currency": "CHF"
}, schema="pain.001.001.03")
SAMPLE_RESULT = b"""
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>20180724040432-d24ce3b3e284</MsgId>
<CreDtTm>2018-07-24T16:04:32</CreDtTm>
<NbOfTxs>2</NbOfTxs>
<CtrlSum>60.12</CtrlSum>
<InitgPty>
<Nm>TestCreditor</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>TestCreditor-90102652f82a</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<BtchBookg>true</BtchBookg>
<NbOfTxs>2</NbOfTxs>
<CtrlSum>60.12</CtrlSum>
<ReqdExctnDt>2018-07-24</ReqdExctnDt>
<Dbtr>
<Nm>TestCreditor</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>CH4912345123456789012</IBAN>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId/>
</DbtrAgt>
<ChrgBr>SLEV</ChrgBr>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="CHF">10.12</InstdAmt>
</Amt>
<Cdtr>
<Nm>Test von Testenstein</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>CH4912345123456789012</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Test transaction1</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<Amt>
<InstdAmt Ccy="CHF">50.00</InstdAmt>
</Amt>
<Cdtr>
<Nm>Test du Test</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>CH6911111222222222222</IBAN>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Test transaction2</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
"""
def test_two_domestic_debits(strf):
payment1 = {
"name": "Test von Testenstein",
"IBAN": "CH4912345123456789012",
"amount": 1012,
"execution_date": datetime.date.today(),
"description": "Test transaction1"
}
payment2 = {
"name": "Test du Test",
"IBAN": "CH6911111222222222222",
"amount": 5000,
"execution_date": datetime.date.today(),
"description": "Test transaction2"
}
strf.add_payment(payment1)
strf.add_payment(payment2)
xmlout = strf.export()
xmlpretty = validate_xml(xmlout, "pain.001.001.03")
assert clean_ids(xmlpretty.strip()).decode() == clean_ids(SAMPLE_RESULT.strip()).decode()
|