]> git.ipfire.org Git - thirdparty/python-fints.git/commitdiff
End-to-end test HHDUC
authorHenryk Plötz <henryk@ploetzli.ch>
Mon, 10 Sep 2018 17:48:40 +0000 (19:48 +0200)
committerRaphael Michel <mail@raphaelmichel.de>
Mon, 3 Dec 2018 18:34:29 +0000 (19:34 +0100)
tests/conftest.py
tests/test_client.py

index 0beb196951ca501bba2e3c23e856ef93f2b70cbd..59fc30db16e4cf8c30f928bb7c5e858c013e407d 100644 (file)
@@ -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'))
index 4570d3469223320851f5d3066f2a5177864bf8a7..9d05da515c016dd21a49d705ffbfaefb39bf1ab6 100644 (file)
@@ -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