Пример #1
0
 def test_basic_object_hook(self):
     data = b'O:7:"WP_User":1:{s:8:"username";s:5:"admin";}'
     user = phpserialize3.loads(
         data, object_hook=phpserialize3.phpobject, decode_strings=True
     )
     self.assertEqual(user.username, "admin")
     self.assertEqual(user.__name__, "WP_User")
Пример #2
0
    def test_object_hook(self):
        class User(object):
            def __init__(self, username):
                self.username = username

        def load_object_hook(name, d):
            return {"WP_User": User}[name](**d)

        def dump_object_hook(obj):
            if isinstance(obj, User):
                return phpserialize3.phpobject("WP_User", {"username": obj.username})
            raise LookupError("unknown object")

        user = User("test")
        x = phpserialize3.dumps(user, object_hook=dump_object_hook)
        y = phpserialize3.loads(x, object_hook=load_object_hook, decode_strings=True)
        self.assertTrue("WP_User" in x)
        self.assertEqual(type(y), type(user))
        self.assertEqual(y.username, user.username)
Пример #3
0
 def test_dumps_and_loads_list(self):
     x = phpserialize3.loads(phpserialize3.dumps(list(range(2))))
     self.assertEqual(x, [0, 1])
Пример #4
0
 def test_dumps_and_loads_dict(self):
     self.assertEqual(
         phpserialize3.loads(phpserialize3.dumps({"a": 1, "b": 2, "c": 3})),
         {"a": 1, "b": 2, "c": 3},
     )
Пример #5
0
 def test_loads_binary(self):
     self.assertEqual(
         phpserialize3.loads(b's:3:"\001\002\003";', decode_strings=False),
         b"\001\002\003",
     )
Пример #6
0
 def test_loads_unicode(self):
     self.assertEqual(
         phpserialize3.loads(b's:23:"Bj\xc3\xb6rk Gu\xc3\xb0mundsd\xc3\xb3ttir";'),
         b"Bj\xc3\xb6rk Gu\xc3\xb0mundsd\xc3\xb3ttir".decode("utf-8"),
     )
Пример #7
0
 def test_loads_dict(self):
     self.assertEqual(
         phpserialize3.loads('a:3:{s:1:"a";i:1;s:1:"b";i:2;s:1:"c";i:3;}'),
         {"a": 1, "b": 2, "c": 3},
     )