Пример #1
0
    def test_known_checksums(self):
        """Check a laundry list of supported inputs to stable_json_sha1().

        This checks both that the method can successfully handle the type of input object, but also
        that the hash of specific objects remains stable.
        """
        self.assertEqual(json_hash({}),
                         "bf21a9e8fbc5a3846fb05b4fa0859e0917b2202f")
        self.assertEqual(json_hash(()),
                         "97d170e1550eee4afc0af065b78cda302a97674c")
        self.assertEqual(json_hash([]),
                         "97d170e1550eee4afc0af065b78cda302a97674c")
        self.assertEqual(json_hash(set()),
                         "97d170e1550eee4afc0af065b78cda302a97674c")
        self.assertEqual(json_hash([{}]),
                         "4e9950a1f2305f56d358cad23f28203fb3aacbef")
        self.assertEqual(json_hash([("a", 3)]),
                         "d6abed2e53c1595fb3075ecbe020365a47af1f6f")
        self.assertEqual(json_hash({"a": 3}),
                         "9e0e6d8a99c72daf40337183358cbef91bba7311")
        self.assertEqual(json_hash([{
            "a": 3
        }]), "8f4e36849a0b8fbe9c4a822c80fbee047c65458a")
        self.assertEqual(json_hash({1}),
                         "f629ae44b7b3dcfed444d363e626edf411ec69a8")
Пример #2
0
 def test_rejects_ordered_collections(self):
     with self.assertRaisesRegex(
             TypeError,
             re.escape(
                 "CoercingEncoder does not support OrderedDict inputs")):
         json_hash(OrderedDict([("a", 3)]))
     with self.assertRaisesRegex(
             TypeError,
             re.escape(
                 "CoercingEncoder does not support OrderedSet inputs")):
         json_hash(OrderedSet([3]))
Пример #3
0
 def test_checksum_ordering(self):
     self.assertEqual(json_hash({2, 1, 3}),
                      "a01eda32e4e0b1393274e91d1b3e9ecfc5eaba85")
     self.assertEqual(json_hash({
         "b": 4,
         "a": 3
     }), "6348df9579e7a72f6ec3fb37751db73b2c97a135")
     self.assertEqual(json_hash([("b", 4), ("a", 3)]),
                      "8e72bb976e71ea81887eb94730655fe49c454d0c")
     self.assertEqual(json_hash([{
         "b": 4,
         "a": 3
     }]), "4735d702f51fb8a98edb9f6f3eb3df1d6d38a77f")
Пример #4
0
def stable_option_fingerprint(obj):
    return json_hash(obj, encoder=CoercingOptionEncoder)
Пример #5
0
 def test_nested_dict_checksum(self):
     self.assertEqual(json_hash({(1, ): {
                                     (2, ): 3
                                 }}),
                      "63124afed13c4a92eb908fe95c1792528abe3621")
Пример #6
0
 def test_string_like_dict_key_checksum(self):
     self.assertEqual(json_hash({"a": 3}),
                      "9e0e6d8a99c72daf40337183358cbef91bba7311")
     self.assertEqual(json_hash({b"a": 3}),
                      "9e0e6d8a99c72daf40337183358cbef91bba7311")
Пример #7
0
 def test_non_string_dict_key_checksum(self):
     self.assertEqual(json_hash({("a", "b"): "asdf"}),
                      "45deafcfa78a92522166c77b24f5faaf9f3f5c5a")
Пример #8
0
 def test_nested_dict_checksum(self) -> None:
     assert json_hash({(1,): {(2,): 3}}) == "63124afed13c4a92eb908fe95c1792528abe3621"
Пример #9
0
 def test_string_like_dict_key_checksum(self) -> None:
     assert json_hash({"a": 3}) == "9e0e6d8a99c72daf40337183358cbef91bba7311"
     assert json_hash({b"a": 3}) == "9e0e6d8a99c72daf40337183358cbef91bba7311"
Пример #10
0
 def test_non_string_dict_key_checksum(self) -> None:
     assert json_hash({("a", "b"): "asdf"}) == "45deafcfa78a92522166c77b24f5faaf9f3f5c5a"
Пример #11
0
 def test_rejects_ordered_collections(self):
     with pytest.raises(TypeError, match=r"CoercingEncoder does not support OrderedDict inputs"):
         json_hash(OrderedDict([("a", 3)]))
     with pytest.raises(TypeError, match=r"CoercingEncoder does not support OrderedSet inputs"):
         json_hash(OrderedSet([3]))
Пример #12
0
def stable_option_fingerprint(obj):
  return json_hash(obj, encoder=CoercingOptionEncoder)