]> git.ipfire.org Git - thirdparty/python-fints.git/commitdiff
Fix a parser bug found in real data
authorHenryk Plötz <henryk@ploetzli.ch>
Sun, 26 Aug 2018 12:02:22 +0000 (14:02 +0200)
committerRaphael Michel <mail@raphaelmichel.de>
Mon, 3 Dec 2018 18:34:29 +0000 (19:34 +0100)
fints/parser.py
fints/types.py
tests/test_message_parser.py

index d3edbcad2480b7bab5e543e36adfaa2e22dd6390..d313253342061320c7d7509349f571ab38a57ce9 100644 (file)
@@ -293,6 +293,8 @@ class FinTS3Parser:
 
                 if data and deg:
                     deg.append(data)
+
+                if deg:
                     data = deg
 
                 segment.append(data)
index 689276fb3adaf7bb56a364f1d4c662aea272c414..54bd0bf1fbef08a7ffe2b73041cb83c02de9cd44 100644 (file)
@@ -232,6 +232,8 @@ class Container(metaclass=ContainerMeta):
 
     @classmethod
     def naive_parse(cls, data):
+        if data is None:
+            raise TypeError("No data provided")
         retval = cls()
         for ((name, field), value) in zip(retval._fields.items(), data):
             setattr(retval, name, value)
index a98c697aa8d05e433b4204c5e77f18ddbee56bd1..ea0ea5f254900b772ce13370ce45d96a64850ec0 100644 (file)
@@ -80,6 +80,17 @@ def test_parse_HIRMG2():
     assert seg.responses[1].code == '0100'
     assert len(seg.responses) == 2
 
+# Regression test, bug found in the wild
+def test_extra_colon():
+    message1 = rb"""HIRMG:2:2:+3060::Teilweise liegen Warnungen/Hinweise vor.'"""
+
+    m1 = FinTS3Parser().parse_message(message1)
+    seg = m1.segments[0]
+
+    assert seg.header.type == 'HIRMG'
+    assert seg.header.version == 2
+    assert seg.header.reference is None
+
 def test_invalid():
     message1 = rb"""12"""