From: Henryk Plötz Date: Mon, 10 Sep 2018 17:48:40 +0000 (+0200) Subject: End-to-end test HHDUC X-Git-Tag: v2.0.0~1^2~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a41c61f0590e72016498baf580b51829c3feab16;p=thirdparty%2Fpython-fints.git End-to-end test HHDUC --- diff --git a/tests/conftest.py b/tests/conftest.py index 0beb196..59fc30d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -6,6 +6,7 @@ import threading import base64 import uuid import re +import random import fints.parser from fints.types import SegmentSequence @@ -94,15 +95,24 @@ def fints_server(): hktan = re.search(rb"'HKTAN:(\d+):(\d+)", message) if hktan: ref = uuid.uuid4().hex + + if 'hhduc' in memomatch.group(1): + newtan = '881'+str(random.randint(10000, 99999)) + tanmsg = "CHLGUC 00312908{}1012345678900523,42CHLGTEXT0034Geben Sie den Startcode als TAN an".format(newtan) + else: + newtan = '123456' + tanmsg = "Geben Sie TAN {} an".format(newtan) + datadict.setdefault('pending', {})[ref] = { 'seg': segno, 'pain': pain, 'memo': memomatch.group(1), 'recv': recvrmatch.group(1), 'amount': amountmatch.group(1), + 'tan': newtan, } result.append("HIRMS::2:{}+0030::Auftragsfreigabe erforderlich'".format(hktan.group(1).decode('us-ascii')).encode('us-ascii')) - result.append("HITAN::{}:{}+2++{}+Geben Sie TAN 123456 an'".format(hktan.group(2).decode('us-ascii'), hktan.group(1).decode('us-ascii'), ref).encode('us-ascii')) + result.append("HITAN::{}:{}+2++{}+{}'".format(hktan.group(2).decode('us-ascii'), hktan.group(1).decode('us-ascii'), ref, tanmsg).encode('us-ascii')) hktan = re.search(rb"'HKTAN:(\d+):(\d+)\+2\+\+\+\+([^+]+)\+", message) if hktan: @@ -112,7 +122,7 @@ def fints_server(): task = datadict.setdefault('pending', {}).get(ref, None) if task: - if tan == '123456': + if tan == task['tan']: result.append("HIRMS::2:{}+0010::Transfer {} to {} re {}'".format(segno, task['amount'], task['recv'], repr(task['memo']).replace("'", "?'")).encode('iso-8859-1')) else: result.append("HIRMS::2:{}+9941::TAN ungültig'".format(segno).encode('iso-8859-1')) diff --git a/tests/test_client.py b/tests/test_client.py index 4570d34..9d05da5 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -133,10 +133,30 @@ def test_tan_wrong(fints_client): 'DE111234567800000002', 'GENODE00TES', 'Test Receiver', - Decimal('2.34'), + Decimal('3.33'), 'Test Sender', 'Test transfer 2step' ) b = fints_client.send_tan(a, '99881') assert b.status == ResponseStatus.ERROR + +def test_tan_hhduc(fints_client): + with fints_client: + accounts = fints_client.get_sepa_accounts() + a = fints_client.simple_sepa_transfer( + accounts[0], + 'DE111234567800000002', + 'GENODE00TES', + 'Test Receiver', + Decimal('5.23'), + 'Test Sender', + 'Test transfer hhduc 2step' + ) + + from fints.hhd.flicker import parse + assert a.challenge == 'Geben Sie den Startcode als TAN an' + flicker = parse(a.challenge_hhduc) + + b = fints_client.send_tan(a, flicker.startcode.data) + assert b.status == ResponseStatus.SUCCESS