From dd86addf58b8f3c8cbee8f71b541e4f6a2a0cb34 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Henryk=20Pl=C3=B6tz?= Date: Mon, 10 Sep 2018 18:39:58 +0200 Subject: [PATCH] Test 2step transfer --- tests/conftest.py | 25 +++++++++++++++++++++++++ tests/test_client.py | 19 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index 2894b4e..509a524 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -78,6 +78,31 @@ def fints_server(): if memomatch and recvrmatch and amountmatch: if memomatch.group(1).endswith('1step'): result.append("HIRMS::2:{}+0010::Transfer {} to {} re {}'".format(segno, amountmatch.group(1), recvrmatch.group(1), repr(memomatch.group(1)).replace("'", "?'")).encode('iso-8859-1')) + else: + hktan = re.search(rb"'HKTAN:(\d+):(\d+)", message) + if hktan: + ref = uuid.uuid4().hex + datadict.setdefault('pending', {})[ref] = { + 'seg': segno, + 'pain': pain, + 'memo': memomatch.group(1), + 'recv': recvrmatch.group(1), + 'amount': amountmatch.group(1), + } + result.append("HIRMS::2:{}+0030::Auftragsfreigabe erforderlich'".format(hktan.group(1).decode('us-ascii')).encode('us-ascii')) + result.append("HITAN::{}:{}+2++{}+Geben Sie die TAN an'".format(hktan.group(2).decode('us-ascii'), hktan.group(1).decode('us-ascii'), ref).encode('us-ascii')) + + hktan = re.search(rb"'HKTAN:(\d+):(\d+)\+2\+\+\+\+([^+]+)\+", message) + if hktan: + segno = hktan.group(1).decode('us-ascii') + tanver = hktan.group(2).decode('us-ascii') + ref = hktan.group(3).decode('us-ascii') + + task = datadict.setdefault('pending', {}).get(ref, None) + if task: + result.append("HIRMS::2:{}+0010::Transfer {} to {} re {}'".format(segno, task['amount'], task['recv'], repr(task['memo']).replace("'", "?'")).encode('iso-8859-1')) + + datadict['pending'].pop(ref, None) return b"".join(result) diff --git a/tests/test_client.py b/tests/test_client.py index d791027..8fd1f48 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -84,3 +84,22 @@ def test_transfer_1step_regression(fints_client): assert isinstance(a, TransactionResponse) assert a.responses[0].text == "Transfer 1.23 to DE111234567800000002 re 'Test transfer 1step'" + +def test_transfer_2step(fints_client): + with fints_client: + accounts = fints_client.get_sepa_accounts() + a = fints_client.simple_sepa_transfer( + accounts[0], + 'DE111234567800000002', + 'GENODE00TES', + 'Test Receiver', + Decimal('2.34'), + 'Test Sender', + 'Test transfer 2step' + ) + + assert isinstance(a, NeedTANResponse) + + b = fints_client.send_tan(a, '123456') + assert b.status == ResponseStatus.SUCCESS + assert b.responses[0].text == "Transfer 2.34 to DE111234567800000002 re 'Test transfer 2step'" -- 2.47.2