class SecurityDateTime(DataElementGroup):
datetime_type = DataElementField(type='code', max_length=3)
- date = DataElementField(type='dat')
- time = DataElementField(type='tim')
+ date = DataElementField(type='dat', required=False)
+ time = DataElementField(type='tim', required=False)
class EncryptionAlgorithm(DataElementGroup):
usage_encryption = DataElementField(type='code', max_length=3)
algorithm_parameter_value = DataElementField(type='bin', max_length=512)
algorithm_parameter_name = DataElementField(type='code', max_length=3)
algorithm_parameter_iv_name = DataElementField(type='code', max_length=3)
- algorithm_parameter_iv_value = DataElementField(type='bin', max_length=512)
+ algorithm_parameter_iv_value = DataElementField(type='bin', max_length=512, required=False)
class HashAlgorithm(DataElementGroup):
usage_hash = DataElementField(type='code', max_length=3)
class HIRMG2(FinTS3Segment):
response = DataElementGroupField(type=Response, min_count=1, max_count=99)
+class HIRMS2(FinTS3Segment):
+ response = DataElementGroupField(type=Response, min_count=1, max_count=99)
m = FinTS3Parser().parse_message(COMPLICATED_EXAMPLE)
assert len(m.segments) == 4
assert m.segments[3].__class__.__name__ == "HNHBS1"
+ m.print_nested()
def test_parse_counted():
from fints.segments import FinTS3Segment
- from fints.formals import NumericField
+ from fints.formals import NumericField, Container, ContainerField
class ITST1(FinTS3Segment):
a = NumericField(count=3)
assert len(m4.segments[0].a) == 2
assert m4.segments[0].a[1] == 2
+ class InnerTest(Container):
+ a = NumericField(max_count=3)
+
+ class ITST3(FinTS3Segment):
+ b = ContainerField(type=InnerTest, max_count=99)
+
+
+ m5 = FinTS3Parser().parse_message(b"ITST:1:3+12:42+345+61:62:63'")
+ m5.print_nested()
+ assert m5.segments[0].b[0].a[0] == 12
+ assert m5.segments[0].b[0].a[1] == 42
+ assert m5.segments[0].b[0].a[2] is None
+ assert m5.segments[0].b[1].a[0] == 345
+ assert m5.segments[0].b[2].a[0] == 61
+ assert m5.segments[0].b[2].a[1] == 62
+ assert m5.segments[0].b[2].a[2] == 63
+
def test_parse_HIRMG2():
d = b"HIRMG:3:2+0010::Nachricht entgegengenommen.+0100::Dialog beendet.'"