예제 #1
0
    def test_convert_args(self):
        # 'normal' arguments
        args = ["abcdef", 1, 1.01, True, None]
        converted_args = BlivetUtilsServer._args_convertTo_objects(MagicMock(), args)
        self.assertEqual(converted_args, args)

        # ProxyID arguments
        test_dict = {}

        arg1 = ProxyID()
        arg1_obj = MagicMock(blivet_object=MagicMock())
        test_dict[arg1.id] = arg1_obj
        arg2 = ProxyID()
        arg2_obj = MagicMock(blivet_object=MagicMock())
        test_dict[arg2.id] = arg2_obj

        converted_args = BlivetUtilsServer._args_convertTo_objects(MagicMock(object_dict=test_dict), [arg1, arg2])
        self.assertEqual(converted_args, [arg1_obj.blivet_object, arg2_obj.blivet_object])

        # ProxyDataContainer as an argument
        test_dict = {}

        arg3 = ProxyID()
        arg3_obj = MagicMock(blivet_object=MagicMock())
        test_dict[arg3.id] = arg3_obj

        args = [ProxyDataContainer(data1="abcdef", data2=1, data3=arg3)]
        converted_args = BlivetUtilsServer._args_convertTo_objects(MagicMock(object_dict=test_dict), args)
        self.assertEqual(converted_args[0]["data1"], "abcdef")
        self.assertEqual(converted_args[0]["data2"], 1)
        self.assertEqual(converted_args[0]["data3"], arg3_obj.blivet_object)
예제 #2
0
    def test_convert_args(self):
        # 'normal' arguments
        args = ["abcdef", 1, 1.01, True, None]
        converted_args = BlivetUtilsServer._args_convertTo_objects(
            MagicMock(), args)
        self.assertEqual(converted_args, args)

        # ProxyID arguments
        test_dict = {}

        arg1 = ProxyID()
        arg1_obj = MagicMock(blivet_object=MagicMock())
        test_dict[arg1.id] = arg1_obj
        arg2 = ProxyID()
        arg2_obj = MagicMock(blivet_object=MagicMock())
        test_dict[arg2.id] = arg2_obj

        converted_args = BlivetUtilsServer._args_convertTo_objects(
            MagicMock(object_dict=test_dict), [arg1, arg2])
        self.assertEqual(converted_args,
                         [arg1_obj.blivet_object, arg2_obj.blivet_object])

        # ProxyDataContainer as an argument
        test_dict = {}

        arg3 = ProxyID()
        arg3_obj = MagicMock(blivet_object=MagicMock())
        test_dict[arg3.id] = arg3_obj

        args = [ProxyDataContainer(data1="abcdef", data2=1, data3=arg3)]
        converted_args = BlivetUtilsServer._args_convertTo_objects(
            MagicMock(object_dict=test_dict), args)
        self.assertEqual(converted_args[0]["data1"], "abcdef")
        self.assertEqual(converted_args[0]["data2"], 1)
        self.assertEqual(converted_args[0]["data3"], arg3_obj.blivet_object)
예제 #3
0
    def test_pickle_answer(self):
        # string
        msg = "abcdef"
        pickled_msg = BlivetUtilsServer._pickle_answer(MagicMock(), msg)
        self.assertEqual(msg, pickle.loads(pickled_msg))

        # None
        msg = None
        pickled_msg = BlivetUtilsServer._pickle_answer(MagicMock(), msg)
        self.assertEqual(msg, pickle.loads(pickled_msg))

        # blivet.size.Size
        msg = Size("8 GiB")
        pickled_msg = BlivetUtilsServer._pickle_answer(MagicMock(), msg)
        self.assertEqual(msg, pickle.loads(pickled_msg))

        # list of multiple types
        msg = ["abcdef", 1, 1.01, True]
        pickled_msg = BlivetUtilsServer._pickle_answer(MagicMock(), msg)
        self.assertEqual(msg, pickle.loads(pickled_msg))

        # BlivetProxyObject
        msg = BlivetProxyObject(MagicMock(), ProxyID())
        pickled_msg = BlivetUtilsServer._pickle_answer(MagicMock(), msg)
        # BlivetProxyObject is not pickled, instead of it we pickle its id (ProxyID object)
        # we compare the id (int) of this id (ProxyID) with id of unpickled object
        self.assertEqual(msg.id.id, pickle.loads(pickled_msg).id)

        # unpicklable object
        test_dict = {}

        msg = MagicMock()  # MagicMock is definitely not in picklable_types
        pickled_msg = BlivetUtilsServer._pickle_answer(
            MagicMock(object_dict=test_dict), msg)
        unpickled_msg = pickle.loads(pickled_msg)
        # unpicklable objects are not pickled, instead a BlivetProxyObject is created
        # and its ProxyID is pickled; test we really have a ProxyID object and test
        # that original object was placed in the dict with proxied-object
        self.assertTrue(isinstance(unpickled_msg, ProxyID))
        self.assertEqual(test_dict[unpickled_msg.id].blivet_object, msg)

        # unpicklable objects in list
        test_dict = {}

        msg = [MagicMock(), "abcdef"]
        pickled_msg = BlivetUtilsServer._pickle_answer(
            MagicMock(object_dict=test_dict), msg)
        unpickled_msg = pickle.loads(pickled_msg)
        self.assertTrue(isinstance(unpickled_msg, list))
        self.assertTrue(isinstance(unpickled_msg[0], ProxyID))
        self.assertEqual(test_dict[unpickled_msg[0].id].blivet_object, msg[0])
        self.assertEqual(unpickled_msg[1], msg[1])
예제 #4
0
    def test_pickle_answer(self):
        # string
        msg = "abcdef"
        pickled_msg = BlivetUtilsServer._pickle_answer(MagicMock(), msg)
        self.assertEqual(msg, pickle.loads(pickled_msg))

        # None
        msg = None
        pickled_msg = BlivetUtilsServer._pickle_answer(MagicMock(), msg)
        self.assertEqual(msg, pickle.loads(pickled_msg))

        # blivet.size.Size
        msg = Size("8 GiB")
        pickled_msg = BlivetUtilsServer._pickle_answer(MagicMock(), msg)
        self.assertEqual(msg, pickle.loads(pickled_msg))

        # list of multiple types
        msg = ["abcdef", 1, 1.01, True]
        pickled_msg = BlivetUtilsServer._pickle_answer(MagicMock(), msg)
        self.assertEqual(msg, pickle.loads(pickled_msg))

        # BlivetProxyObject
        msg = BlivetProxyObject(MagicMock(), ProxyID())
        pickled_msg = BlivetUtilsServer._pickle_answer(MagicMock(), msg)
        # BlivetProxyObject is not pickled, instead of it we pickle its id (ProxyID object)
        # we compare the id (int) of this id (ProxyID) with id of unpickled object
        self.assertEqual(msg.id.id, pickle.loads(pickled_msg).id)

        # unpicklable object
        test_dict = {}

        msg = MagicMock()  # MagicMock is definitely not in picklable_types
        pickled_msg = BlivetUtilsServer._pickle_answer(MagicMock(object_dict=test_dict), msg)
        unpickled_msg = pickle.loads(pickled_msg)
        # unpicklable objects are not pickled, instead a BlivetProxyObject is created
        # and its ProxyID is pickled; test we really have a ProxyID object and test
        # that original object was placed in the dict with proxied-object
        self.assertTrue(isinstance(unpickled_msg, ProxyID))
        self.assertEqual(test_dict[unpickled_msg.id].blivet_object, msg)

        # unpicklable objects in list
        test_dict = {}

        msg = [MagicMock(), "abcdef"]
        pickled_msg = BlivetUtilsServer._pickle_answer(MagicMock(object_dict=test_dict), msg)
        unpickled_msg = pickle.loads(pickled_msg)
        self.assertTrue(isinstance(unpickled_msg, list))
        self.assertTrue(isinstance(unpickled_msg[0], ProxyID))
        self.assertEqual(test_dict[unpickled_msg[0].id].blivet_object, msg[0])
        self.assertEqual(unpickled_msg[1], msg[1])
예제 #5
0
    def test_convert_kwargs(self):
        test_dict = {}

        arg1 = ProxyID()
        arg1_obj = MagicMock(blivet_object=MagicMock())
        test_dict[arg1.id] = arg1_obj
        arg2 = ProxyID()
        arg2_obj = MagicMock(blivet_object=MagicMock())
        test_dict[arg2.id] = arg2_obj

        kwargs = {"a": 1, "b": arg1, "c": arg2}
        server_mock = MagicMock(
            object_dict=test_dict,
            _args_convertTo_objects=lambda args: BlivetUtilsServer.
            _args_convertTo_objects(MagicMock(object_dict=test_dict), args))
        converted_kwargs = BlivetUtilsServer._kwargs_convertTo_objects(
            server_mock, kwargs)
        self.assertEqual(converted_kwargs, {
            "a": 1,
            "b": arg1_obj.blivet_object,
            "c": arg2_obj.blivet_object
        })