X-Git-Url: http://www.git.cypherpunks.ru/?p=pyderasn.git;a=blobdiff_plain;f=tests%2Ftest_pyderasn.py;h=147e3cd30457860db037ab519467e05dce6c2933;hp=03e10813999f56ff20276290ff170a9992229c42;hb=a34b3e75db1e13750560c89c2b80821f2e5d0d1f;hpb=f1ff30dc62a01ed83c387b68fa41ba547721d2be diff --git a/tests/test_pyderasn.py b/tests/test_pyderasn.py index 03e1081..147e3cd 100644 --- a/tests/test_pyderasn.py +++ b/tests/test_pyderasn.py @@ -77,6 +77,9 @@ from pyderasn import InvalidOID from pyderasn import InvalidValueType from pyderasn import len_decode from pyderasn import len_encode +from pyderasn import LEN_YYMMDDHHMMSSZ +from pyderasn import LEN_YYYYMMDDHHMMSSDMZ +from pyderasn import LEN_YYYYMMDDHHMMSSZ from pyderasn import LENINDEF from pyderasn import NotEnoughData from pyderasn import Null @@ -3609,12 +3612,47 @@ class TestGeneralizedTime(TimeMixin, CommonMixin, TestCase): datetime(2010, 1, 2, 3, 4, 5, 0), ) - def test_encoding(self): - raw = GeneralizedTime(b"20100102030405Z").encode() - with assertRaisesRegex(self, DecodeError, "encoding"): - GeneralizedTime().decode(raw.replace(b"201001", "привет".encode("utf-8"))) + @given( + binary( + min_size=(LEN_YYYYMMDDHHMMSSZ - 1) // 2, + max_size=(LEN_YYYYMMDDHHMMSSZ - 1) // 2, + ), + binary(min_size=1, max_size=1), + binary( + min_size=(LEN_YYYYMMDDHHMMSSZ - 1) // 2, + max_size=(LEN_YYYYMMDDHHMMSSZ - 1) // 2, + ), + ) + def test_junk(self, part0, part1, part2): + junk = part0 + part1 + part2 + assume(not (set(junk) <= set(digits.encode("ascii")))) with self.assertRaises(DecodeError): - GeneralizedTime().decode(raw.replace(b"20100", b"hello")) + GeneralizedTime().decode( + GeneralizedTime.tag_default + + len_encode(len(junk)) + + junk + ) + + @given( + binary( + min_size=(LEN_YYYYMMDDHHMMSSDMZ - 1) // 2, + max_size=(LEN_YYYYMMDDHHMMSSDMZ - 1) // 2, + ), + binary(min_size=1, max_size=1), + binary( + min_size=(LEN_YYYYMMDDHHMMSSDMZ - 1) // 2, + max_size=(LEN_YYYYMMDDHHMMSSDMZ - 1) // 2, + ), + ) + def test_junk_dm(self, part0, part1, part2): + junk = part0 + part1 + part2 + assume(not (set(junk) <= set(digits.encode("ascii")))) + with self.assertRaises(DecodeError): + GeneralizedTime().decode( + GeneralizedTime.tag_default + + len_encode(len(junk)) + + junk + ) class TestUTCTime(TimeMixin, CommonMixin, TestCase): @@ -3680,12 +3718,26 @@ class TestUTCTime(TimeMixin, CommonMixin, TestCase): 1900 + year, ) - def test_encoding(self): - raw = UTCTime(b"910506234540Z").encode() - with assertRaisesRegex(self, DecodeError, "encoding"): - UTCTime().decode(raw.replace(b"910506", "привет".encode("utf-8"))) + @given( + binary( + min_size=(LEN_YYMMDDHHMMSSZ - 1) // 2, + max_size=(LEN_YYMMDDHHMMSSZ - 1) // 2, + ), + binary(min_size=1, max_size=1), + binary( + min_size=(LEN_YYMMDDHHMMSSZ - 1) // 2, + max_size=(LEN_YYMMDDHHMMSSZ - 1) // 2, + ), + ) + def test_junk(self, part0, part1, part2): + junk = part0 + part1 + part2 + assume(not (set(junk) <= set(digits.encode("ascii")))) with self.assertRaises(DecodeError): - UTCTime().decode(raw.replace(b"91050", b"hello")) + UTCTime().decode( + UTCTime.tag_default + + len_encode(len(junk)) + + junk + ) @composite