]> Cypherpunks.ru repositories - pyderasn.git/blobdiff - tests/test_pyderasn.py
Ability to specify max_examples via envvar
[pyderasn.git] / tests / test_pyderasn.py
index d396c64ba300f610b4f1bafa31d6e1188ea9a6a0..5ba9adf75a91928a109d3bf33b01b1a3f21b94a0 100644 (file)
@@ -20,6 +20,7 @@ from copy import deepcopy
 from datetime import datetime
 from datetime import timedelta
 from importlib import import_module
+from os import environ
 from random import random
 from string import ascii_letters
 from string import digits
@@ -126,8 +127,10 @@ from pyderasn import VideotexString
 from pyderasn import VisibleString
 
 
+max_examples = environ.get("MAX_EXAMPLES")
 settings.register_profile("local", settings(
     deadline=5000,
+    **({"max_examples": int(max_examples)} if max_examples else {})
 ))
 settings.load_profile("local")
 LONG_TEST_MAX_EXAMPLES = settings().max_examples * 4
@@ -4085,14 +4088,14 @@ class TestGeneralizedTime(TimeMixin, CommonMixin, TestCase):
                 dt -= timedelta(seconds=sign * 60 * offset_minute)
                 data += "%s%02d" % (minutes_separator, offset_minute)
         data = data.encode("ascii")
-        data = GeneralizedTime.tag_default + len_encode(len(data)) + data
+        data_der = GeneralizedTime.tag_default + len_encode(len(data)) + data
         try:
-            GeneralizedTime().decod(data)
+            GeneralizedTime().decod(data_der)
         except DecodeError:
             dered = False
         else:
             dered = True
-        obj = GeneralizedTime().decod(data, ctx={"bered": True})
+        obj = GeneralizedTime().decod(data_der, ctx={"bered": True})
         if dt.year > 1970:
             self.assertEqual(
                 mktime(obj.todatetime().timetuple()),
@@ -4102,7 +4105,8 @@ class TestGeneralizedTime(TimeMixin, CommonMixin, TestCase):
             self.assertEqual(obj.todatetime().timestamp(), dt.timestamp())
         self.assertEqual(obj.ber_encoded, not dered)
         self.assertEqual(obj.bered, not dered)
-        self.assertEqual(obj.encode() == data, dered)
+        self.assertEqual(obj.ber_raw, None if dered else data)
+        self.assertEqual(obj.encode() == data_der, dered)
         repr(obj)
         bytes(obj)
         str(obj)
@@ -4304,6 +4308,14 @@ class TestGeneralizedTime(TimeMixin, CommonMixin, TestCase):
                 b"200001020304+5Z",
                 b"20000102030405.+6Z",
                 b"20000102030405.-6Z",
+                b"_2000102030405Z",
+                b"2000_102030405Z",
+                b"200001_2030405Z",
+                b"20000102_30405Z",
+                b"2000010203_405Z",
+                b"200001020304_5Z",
+                b"20000102030405._6Z",
+                b"20000102030405.6_Z",
                 b" 2000102030405Z",
                 b"2000 102030405Z",
                 b"200001 2030405Z",
@@ -4405,6 +4417,13 @@ class TestUTCTime(TimeMixin, CommonMixin, TestCase):
                 b"000102+30405Z",
                 b"00010203+405Z",
                 b"0001020304+5Z",
+                b"_10102030405Z",
+                b"00_102030405Z",
+                b"0001_2030405Z",
+                b"000102_30405Z",
+                b"00010203_405Z",
+                b"0001020304_5Z",
+                b"00010203045_Z",
                 b" 10102030405Z",
                 b"00 102030405Z",
                 b"0001 2030405Z",
@@ -4428,13 +4447,14 @@ class TestUTCTime(TimeMixin, CommonMixin, TestCase):
                 (b"0101021200Z", datetime(2001, 1, 2, 12)),
                 (b"0101020700-0500", datetime(2001, 1, 2, 12)),
         )):
-            data = UTCTime.tag_default + len_encode(len(data)) + data
-            obj = UTCTime().decod(data, ctx={"bered": True})
+            data_der = UTCTime.tag_default + len_encode(len(data)) + data
+            obj = UTCTime().decod(data_der, ctx={"bered": True})
             self.assertEqual(obj, dt)
             self.assertEqual(obj.todatetime(), dt)
             self.assertTrue(obj.ber_encoded)
             self.assertTrue(obj.bered)
-            self.assertNotEqual(obj.encode(), data)
+            self.assertEqual(obj.ber_raw, data)
+            self.assertNotEqual(obj.encode(), data_der)
             repr(obj)
 
     def test_go_vectors_valid_ber(self):
@@ -4488,13 +4508,14 @@ class TestUTCTime(TimeMixin, CommonMixin, TestCase):
                 data += "+"
             data += "%02d%02d" % (offset_hour, offset_minute)
         data = data.encode("ascii")
-        data = UTCTime.tag_default + len_encode(len(data)) + data
-        obj = UTCTime().decod(data, ctx={"bered": True})
+        data_der = UTCTime.tag_default + len_encode(len(data)) + data
+        obj = UTCTime().decod(data_der, ctx={"bered": True})
         self.assertEqual(obj, dt)
         self.assertEqual(obj.todatetime(), dt)
         self.assertEqual(obj.ber_encoded, not dered)
         self.assertEqual(obj.bered, not dered)
-        self.assertEqual(obj.encode() == data, dered)
+        self.assertEqual(obj.ber_raw, None if dered else data)
+        self.assertEqual(obj.encode() == data_der, dered)
         repr(obj)
         bytes(obj)
         str(obj)