X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=tests%2Ftest_pyderasn.py;h=1cce9ed5a3988a92b92248e987d2e012366bf798;hb=593509516d4ba74685772f920b19001ac43d1219;hp=d396c64ba300f610b4f1bafa31d6e1188ea9a6a0;hpb=517f9ab0bb42c9d89fade2aa69ec5da9501efc0a;p=pyderasn.git diff --git a/tests/test_pyderasn.py b/tests/test_pyderasn.py index d396c64..1cce9ed 100644 --- a/tests/test_pyderasn.py +++ b/tests/test_pyderasn.py @@ -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 @@ -343,7 +346,7 @@ class CommonMixin(object): self.assertSequenceEqual(obj.impl, impl_tag) self.assertFalse(obj.expled) - @given(binary()) + @given(binary(min_size=1)) def test_expl_inherited(self, expl_tag): class Inherited(self.base_klass): expl = expl_tag @@ -414,7 +417,7 @@ class TestBoolean(CommonMixin, TestCase): list(obj.pps()) pprint(obj, big_blobs=True, with_decode_path=True) - @given(booleans(), booleans(), binary(), binary()) + @given(booleans(), booleans(), binary(min_size=1), binary(min_size=1)) def test_comparison(self, value1, value2, tag1, tag2): for klass in (Boolean, BooleanInherited): obj1 = klass(value1) @@ -833,7 +836,7 @@ class TestInteger(CommonMixin, TestCase): pprint(obj, big_blobs=True, with_decode_path=True) hash(obj) - @given(integers(), integers(), binary(), binary()) + @given(integers(), integers(), binary(min_size=1), binary(min_size=1)) def test_comparison(self, value1, value2, tag1, tag2): for klass in (Integer, IntegerInherited): obj1 = klass(value1) @@ -2273,7 +2276,7 @@ class TestNull(CommonMixin, TestCase): list(obj.pps()) pprint(obj, big_blobs=True, with_decode_path=True) - @given(binary(), binary()) + @given(binary(min_size=1), binary(min_size=1)) def test_comparison(self, tag1, tag2): for klass in (Null, NullInherited): obj1 = klass(impl=tag1) @@ -2503,7 +2506,7 @@ class TestObjectIdentifier(CommonMixin, TestCase): pprint(obj, big_blobs=True, with_decode_path=True) hash(obj) - @given(oid_strategy(), oid_strategy(), binary(), binary()) + @given(oid_strategy(), oid_strategy(), binary(min_size=1), binary(min_size=1)) def test_comparison(self, value1, value2, tag1, tag2): for klass in (ObjectIdentifier, ObjectIdentifierInherited): obj1 = klass(value1) @@ -2973,7 +2976,7 @@ class TestEnumerated(CommonMixin, TestCase): list(obj.pps()) pprint(obj, big_blobs=True, with_decode_path=True) - @given(integers(), integers(), binary(), binary()) + @given(integers(), integers(), binary(min_size=1), binary(min_size=1)) def test_comparison(self, value1, value2, tag1, tag2): class E(Enumerated): schema = ( @@ -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) @@ -4712,7 +4733,7 @@ class TestAny(CommonMixin, TestCase): pprint(obj, big_blobs=True, with_decode_path=True) self.assertSequenceEqual(obj.encode(), integer_encoded) - @given(binary(), binary()) + @given(binary(min_size=1), binary(min_size=1)) def test_comparison(self, value1, value2): for klass in (Any, AnyInherited): obj1 = klass(value1) @@ -5833,7 +5854,7 @@ class SeqMixing(object): min_size=1, )).items()) tags = [tag_encode(tag) for tag in d.draw(sets( - integers(min_value=0), + integers(min_value=1), min_size=len(_schema), max_size=len(_schema), ))] @@ -5871,7 +5892,7 @@ class SeqMixing(object): def test_missing_from_spec(self, d): names = list(d.draw(sets(text_letters(), min_size=2))) tags = [tag_encode(tag) for tag in d.draw(sets( - integers(min_value=0), + integers(min_value=1), min_size=len(names), max_size=len(names), ))] @@ -6090,7 +6111,7 @@ class SeqOfMixing(object): with assertRaisesRegex(self, ValueError, "schema must be specified"): self.base_klass.__mro__[1]() - @given(booleans(), booleans(), binary(), binary()) + @given(booleans(), booleans(), binary(min_size=1), binary(min_size=1)) def test_comparison(self, value1, value2, tag1, tag2): class SeqOf(self.base_klass): schema = Boolean()