예제 #1
0
    def _test_process_get_object(self, object_name, mock_object_repo,
                                 mock_object_to_provider, mock_get_session):
        mock_get_session.return_value = 'bogus_session'
        object_repo_mock = mock.MagicMock()
        mock_object_repo.return_value = object_repo_mock
        db_object_mock = mock.MagicMock()
        object_repo_mock.get.return_value = db_object_mock

        mock_prov_object = mock.MagicMock()
        mock_object_to_provider.return_value = mock_prov_object
        ref_prov_dict = mock_prov_object.to_dict(recurse=True,
                                                 render_unsets=True)

        object_id = uuidutils.generate_uuid()

        data = {constants.OBJECT: object_name, lib_consts.ID: object_id}

        # Happy path
        result = driver_get.process_get(data)

        mock_object_repo.assert_called_once_with()
        object_repo_mock.get.assert_called_once_with('bogus_session',
                                                     id=object_id,
                                                     show_deleted=False)
        mock_object_to_provider.assert_called_once_with(db_object_mock)
        self.assertEqual(ref_prov_dict, result)

        # No matching listener
        mock_object_repo.reset_mock()
        mock_object_to_provider.reset_mock()

        object_repo_mock.get.return_value = None

        result = driver_get.process_get(data)

        mock_object_repo.assert_called_once_with()
        object_repo_mock.get.assert_called_once_with('bogus_session',
                                                     id=object_id,
                                                     show_deleted=False)
        mock_object_to_provider.assert_not_called()
        self.assertEqual({}, result)
예제 #2
0
    def handle(self):
        # Get the data request
        get_data = _recv(self.request)

        # Process the get
        response = driver_get.process_get(get_data)

        # Send the response
        json_data = jsonutils.dump_as_bytes(response)
        len_str = '{}\n'.format(len(json_data)).encode('utf-8')
        self.request.send(len_str)
        self.request.sendall(json_data)
예제 #3
0
 def test_process_get_bogus_object(self, mock_get_session):
     data = {constants.OBJECT: 'bogus', lib_consts.ID: 'bad ID'}
     result = driver_get.process_get(data)
     self.assertEqual({}, result)