]> Cypherpunks repositories - keks.git/commitdiff
Unacceptable string representations
authorSergey Matveev <stargrave@stargrave.org>
Sat, 30 Nov 2024 17:35:22 +0000 (20:35 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sat, 30 Nov 2024 19:38:56 +0000 (22:38 +0300)
Human can read either some of ASCII, some of Unicode, hexadecimal, but
not escaped data. Hexadecimal data clearly does not seem to be close to
Raw's argument encoding. That was definitely just copy-pasted, but
should be manually crafted as a desired and expected data.

pyac/tests/test_tai.py
pyac/tests/test_uuid.py

index fa261a5e6d1308b950d6477805f7237e53134416ea5af25af1c372ad4d53b1b8..04bf3d6e90aa95419b0936cd36d486a2bbb7eae273534b81b9796c4ec7af1a05 100644 (file)
@@ -76,7 +76,7 @@ class TestTAI64(TestCase):
             junk
         )
         expected = Raw(
-            26, b"\x40\x00\x00\x00\x65\x19\x5f\x65\x07\x5b\xca\x00\x07\x5b\xca\x00"
+            0x1a, b"\x40\x00\x00\x00\x65\x19\x5f\x65\x07\x5b\xca\x00\x07\x5b\xca\x00"
         )
         decoded, tail = loads(encoded)
         self.assertEqual(decoded, expected)
@@ -96,14 +96,14 @@ class TestTAI64(TestCase):
 
     def test_large_number_of_secs(self) -> None:
         decoded, tail = loads(b"\x18\x70\x00\x00\x00\x65\x19\x5f\x65")
-        self.assertEqual(decoded, Raw(t=24, v=b"p\x00\x00\x00e\x19_e"))
+        self.assertEqual(decoded, Raw(t=0x18, v=b"\x70\x00\x00\x00\x65\x19\x5f\x65"))
         self.assertSequenceEqual(tail, b"")
 
     def test_nanoseconds_not_convertible_to_microseconds(self) -> None:
         decoded, tail = loads(
             b"\x19\x40\x00\x00\x00\x65\x19\x5f\x65\x07\x5b\xca\x01"
         )
-        self.assertEqual(decoded, Raw(t=25, v=b"@\x00\x00\x00e\x19_e\x07[\xca\x01"))
+        self.assertEqual(decoded, Raw(t=0x19, v=b"\x40\x00\x00\x00\x65\x19\x5f\x65\x07\x5b\xca\x01"))
         self.assertSequenceEqual(tail, b"")
 
     def test_throws_when_first_bit_is_in_use(self) -> None:
index 2d5a9145a57c1523ba0e422323245955a697f5b0200bf2a6cff5bfbb701197a5..0673a12f00b85eaab825f052d59e30bc6a3260593ec0a7c3d2eac9ec3c65d68d 100644 (file)
@@ -14,18 +14,22 @@ class TestUUID(TestCase):
         uuid_str: str = "12345678-1234-5678-1234-567812345678"
         uuid_obj: UUID = UUID(uuid_str)
         encoded: bytes = dumps(uuid_obj)
-        self.assertSequenceEqual(encoded, b"\x04\x124Vx\x124Vx\x124Vx\x124Vx")
+        self.assertSequenceEqual(
+            encoded,
+            b"\x04\x12\x34\x56\x78\x12\x34\x56\x78\x12\x34\x56\x78\x12\x34\x56\x78",
+        )
 
     @given(junk_st)
     def test_decode(self, junk: bytes) -> None:
         uuid_str: str = "12345678-1234-5678-1234-567812345678"
-        encoded: bytes = b"\x04\x124Vx\x124Vx\x124Vx\x124Vx"
+        encoded: bytes = b"\x04\x12\x34\x56\x78\x12\x34\x56\x78\x12\x34\x56\x78\x12\x34\x56\x78"
         decoded: UUID
         decoded, tail = loads(encoded + junk)
         self.assertEqual(decoded, UUID(uuid_str))
         self.assertSequenceEqual(tail, junk)
 
     def test_not_enough_data(self) -> None:
-        encoded: bytes = b"\x04\x124Vx\x124Vx\x124Vx\x124V"
-        with self.assertRaises(NotEnoughData):
-            loads(encoded)
+        encoded: bytes = b"\x04\x12\x34\x56\x78\x12\x34\x56\x78\x12\x34\x56\x78\x12\x34\x56\x78"
+        with self.assertRaises(NotEnoughData) as err:
+            loads(encoded[:-4])
+        self.assertEqual(err.exception.n, 1+16)