def test_share_server_migration_check_exception(self, exception_to_raise, raise_server_get_exception, raise_network_get_action, body): req = self._get_server_migration_request('fake_id') context = req.environ['manila.context'] if body: body['migration_check']['writable'] = False body['migration_check']['nondisruptive'] = False body['migration_check']['preserve_snapshots'] = False body['migration_check']['host'] = 'fakehost@fakebackend' else: body = {} server_get = mock.Mock() network_get = mock.Mock() if raise_server_get_exception: server_get = mock.Mock(side_effect=exception.ShareServerNotFound( share_server_id='fake')) if raise_network_get_action: network_get = mock.Mock(side_effect=exception.ShareNetworkNotFound( share_network_id='fake')) mock_server_get = self.mock_object(db_api, 'share_server_get', server_get) mock_network_get = self.mock_object(db_api, 'share_network_get', network_get) self.assertRaises(exception_to_raise, self.controller.share_server_migration_check, req, 'fake_id', body) mock_server_get.assert_called_once_with(context, 'fake_id') if raise_network_get_action: mock_network_get.assert_called_once_with(context, 'fake_id')
def test_details_share_server_not_found(self): share_server_id = 'fake' self.mock_object( db_api, 'share_server_get', mock.Mock(side_effect=exception.ShareServerNotFound( share_server_id=share_server_id))) self.assertRaises(exc.HTTPNotFound, self.controller.details, FakeRequestAdmin, share_server_id) policy.check_policy.assert_called_once_with(CONTEXT, self.resource_name, 'details') db_api.share_server_get.assert_called_once_with( CONTEXT, share_server_id)
def test_unmanage_share_server_not_found(self): """Tests unmanaging share servers""" req = fakes.HTTPRequest.blank('/v2/share-servers/fake_server_id/') context = req.environ['manila.context'] share_server_error = mock.Mock( side_effect=exception.ShareServerNotFound( share_server_id='fake_server_id')) get_mock = self.mock_object(db_api, 'share_server_get', share_server_error) body = {'unmanage': {'force': True}} self.assertRaises(webob.exc.HTTPNotFound, self.controller.unmanage, req, 'fake_server_id', body) get_mock.assert_called_once_with(context, 'fake_server_id')
def test_share_server_migration_start_share_server_not_found(self): fake_id = 'fake_server_id' req = self._get_server_migration_request(fake_id) context = req.environ['manila.context'] body = {'migration_start': {'host': 'fake_host'}} self.mock_object(db_api, 'share_server_get', mock.Mock(side_effect=exception.ShareServerNotFound( share_server_id=fake_id))) self.assertRaises(webob.exc.HTTPNotFound, self.controller.share_server_migration_start, req, fake_id, body) db_api.share_server_get.assert_called_once_with(context, fake_id)
def test_reset_task_state_not_found(self): server = db_utils.create_share_server( id='fake_server_id', status=constants.STATUS_ACTIVE) req = self._get_server_migration_request(server['id']) update = {'task_state': constants.TASK_STATE_MIGRATION_ERROR} body = {'reset_task_state': update} self.mock_object(db_api, 'share_server_update', mock.Mock(side_effect=exception.ShareServerNotFound( share_server_id='fake_server_id'))) self.assertRaises(webob.exc.HTTPNotFound, self.controller.share_server_reset_task_state, req, server['id'], body) db_api.share_server_update.assert_called_once_with(utils.IsAMatcher( ctx_api.RequestContext), server['id'], update)
def test_share_server_not_found(self): # Verify response code for exception.ShareServerNotFound share_server_id = "fake_share_server_id" e = exception.ShareServerNotFound(share_server_id=share_server_id) self.assertEqual(404, e.code) self.assertIn(share_server_id, e.msg)
def raise_not_found(*args, **kwargs): raise exception.ShareServerNotFound( share_server_id=share_server_id)
class ShareServerAPITest(test.TestCase): def setUp(self): super(ShareServerAPITest, self).setUp() self.controller = share_servers.ShareServerController() self.resource_name = self.controller.resource_name self.mock_object(policy, 'check_policy', mock.Mock(return_value=True)) self.mock_object(db_api, 'share_server_get_all', mock.Mock(return_value=fake_share_server_get_all())) def _prepare_request(self, url, use_admin_context, version=api_version._MAX_API_VERSION): request = fakes.HTTPRequest.blank(url, use_admin_context=use_admin_context, version=version) ctxt = request.environ['manila.context'] return request, ctxt def test_index_no_filters(self): request, ctxt = self._prepare_request(url='/v2/share-servers/', use_admin_context=True) self.mock_object( db_api, 'share_network_get', mock.Mock(side_effect=[ fake_share_network_get_list['share_networks'][0], fake_share_network_get_list['share_networks'][1] ])) result = self.controller.index(request) policy.check_policy.assert_called_once_with(ctxt, self.resource_name, 'index') db_api.share_server_get_all.assert_called_once_with(ctxt) self.assertEqual(fake_share_server_list, result) def test_index_host_filter(self): request, ctxt = self._prepare_request( url='/index?host=%s' % fake_share_server_list['share_servers'][0]['host'], use_admin_context=True) self.mock_object( db_api, 'share_network_get', mock.Mock(side_effect=[ fake_share_network_get_list['share_networks'][0], fake_share_network_get_list['share_networks'][1] ])) result = self.controller.index(request) policy.check_policy.assert_called_once_with(ctxt, self.resource_name, 'index') db_api.share_server_get_all.assert_called_once_with(ctxt) self.assertEqual([fake_share_server_list['share_servers'][0]], result['share_servers']) def test_index_status_filter(self): request, ctxt = self._prepare_request(url='/index?status=%s' % constants.STATUS_ERROR, use_admin_context=True) self.mock_object( db_api, 'share_network_get', mock.Mock(side_effect=[ fake_share_network_get_list['share_networks'][0], fake_share_network_get_list['share_networks'][1] ])) result = self.controller.index(request) policy.check_policy.assert_called_once_with(ctxt, self.resource_name, 'index') db_api.share_server_get_all.assert_called_once_with(ctxt) self.assertEqual([fake_share_server_list['share_servers'][1]], result['share_servers']) def test_index_project_id_filter(self): request, ctxt = self._prepare_request( url='/index?project_id=%s' % fake_share_server_get_all()[0].project_id, use_admin_context=True) self.mock_object( db_api, 'share_network_get', mock.Mock(side_effect=[ fake_share_network_get_list['share_networks'][0], fake_share_network_get_list['share_networks'][1] ])) result = self.controller.index(request) policy.check_policy.assert_called_once_with(ctxt, self.resource_name, 'index') db_api.share_server_get_all.assert_called_once_with(ctxt) self.assertEqual([fake_share_server_list['share_servers'][0]], result['share_servers']) def test_index_share_network_filter_by_name(self): request, ctxt = self._prepare_request( url='/index?host=%s' % fake_share_server_list['share_servers'][0]['host'], use_admin_context=True) self.mock_object( db_api, 'share_network_get', mock.Mock(side_effect=[ fake_share_network_get_list['share_networks'][0], fake_share_network_get_list['share_networks'][1] ])) result = self.controller.index(request) policy.check_policy.assert_called_once_with(ctxt, self.resource_name, 'index') db_api.share_server_get_all.assert_called_once_with(ctxt) self.assertEqual([fake_share_server_list['share_servers'][0]], result['share_servers']) def test_index_share_network_filter_by_id(self): request, ctxt = self._prepare_request( url='/index?share_network=%s' % fake_share_network_get_list['share_networks'][0]['id'], use_admin_context=True) self.mock_object( db_api, 'share_network_get', mock.Mock(side_effect=[ fake_share_network_get_list['share_networks'][0], fake_share_network_get_list['share_networks'][1] ])) result = self.controller.index(request) policy.check_policy.assert_called_once_with(ctxt, self.resource_name, 'index') db_api.share_server_get_all.assert_called_once_with(ctxt) self.assertEqual([fake_share_server_list['share_servers'][0]], result['share_servers']) def test_index_fake_filter(self): request, ctxt = self._prepare_request(url='/index?fake_key=fake_value', use_admin_context=True) self.mock_object( db_api, 'share_network_get', mock.Mock(side_effect=[ fake_share_network_get_list['share_networks'][0], fake_share_network_get_list['share_networks'][1] ])) result = self.controller.index(request) policy.check_policy.assert_called_once_with(ctxt, self.resource_name, 'index') db_api.share_server_get_all.assert_called_once_with(ctxt) self.assertEqual(0, len(result['share_servers'])) def test_index_share_network_not_found(self): request, ctxt = self._prepare_request( url='/index?identifier=%s' % fake_share_server_get_all()[0].identifier, use_admin_context=True) self.mock_object( db_api, 'share_network_get', mock.Mock(side_effect=exception.ShareNetworkNotFound( share_network_id='fake'))) result = self.controller.index(request) db_api.share_server_get_all.assert_called_once_with(ctxt) policy.check_policy.assert_called_once_with(ctxt, self.resource_name, 'index') exp_share_server = fake_share_server_list['share_servers'][0].copy() exp_share_server['project_id'] = '' exp_share_server['share_network_name'] = '' self.assertEqual([exp_share_server], result['share_servers']) def test_index_share_network_not_found_filter_project(self): request, ctxt = self._prepare_request( url='/index?project_id=%s' % fake_share_server_get_all()[0].project_id, use_admin_context=True) self.mock_object( db_api, 'share_network_get', mock.Mock(side_effect=exception.ShareNetworkNotFound( share_network_id='fake'))) result = self.controller.index(request) db_api.share_server_get_all.assert_called_once_with(ctxt) policy.check_policy.assert_called_once_with(ctxt, self.resource_name, 'index') self.assertEqual(0, len(result['share_servers'])) def test_show(self): self.mock_object(db_api, 'share_server_get', mock.Mock(return_value=fake_share_server_get())) request, ctxt = self._prepare_request('/show', use_admin_context=True) self.mock_object( db_api, 'share_network_get', mock.Mock( return_value=fake_share_network_get_list['share_networks'][0])) result = self.controller.show( request, fake_share_server_get_result['share_server']['id']) policy.check_policy.assert_called_once_with(ctxt, self.resource_name, 'show') db_api.share_server_get.assert_called_once_with( ctxt, fake_share_server_get_result['share_server']['id']) self.assertEqual(fake_share_server_get_result['share_server'], result['share_server']) @ddt.data( { 'share_server_side_effect': exception.ShareServerNotFound(share_server_id="foo"), 'share_net_side_effect': mock.Mock() }, { 'share_server_side_effect': mock.Mock(return_value=fake_share_server_get()), 'share_net_side_effect': exception.ShareNetworkNotFound(share_network_id="foo") }) @ddt.unpack def test_show_server_not_found(self, share_server_side_effect, share_net_side_effect): self.mock_object(db_api, 'share_server_get', mock.Mock(side_effect=share_server_side_effect)) request, ctxt = self._prepare_request('/show', use_admin_context=True) self.mock_object(db_api, 'share_network_get', mock.Mock(side_effect=share_net_side_effect)) self.assertRaises(exc.HTTPNotFound, self.controller.show, request, fake_share_server_get_result['share_server']['id']) policy.check_policy.assert_called_once_with(ctxt, self.resource_name, 'show') db_api.share_server_get.assert_called_once_with( ctxt, fake_share_server_get_result['share_server']['id']) if isinstance(share_net_side_effect, exception.ShareNetworkNotFound): exp_share_net_id = (fake_share_server_get(). share_network_subnet['share_network_id']) db_api.share_network_get.assert_called_once_with( ctxt, exp_share_net_id) def test_details(self): self.mock_object(db_api, 'share_server_get', mock.Mock(return_value=fake_share_server_get())) result = self.controller.details( FakeRequestAdmin, fake_share_server_get_result['share_server']['id']) policy.check_policy.assert_called_once_with(CONTEXT, self.resource_name, 'details') db_api.share_server_get.assert_called_once_with( CONTEXT, fake_share_server_get_result['share_server']['id']) self.assertEqual(fake_share_server_backend_details_get_result, result) def test_details_share_server_not_found(self): share_server_id = 'fake' self.mock_object( db_api, 'share_server_get', mock.Mock(side_effect=exception.ShareServerNotFound( share_server_id=share_server_id))) self.assertRaises(exc.HTTPNotFound, self.controller.details, FakeRequestAdmin, share_server_id) policy.check_policy.assert_called_once_with(CONTEXT, self.resource_name, 'details') db_api.share_server_get.assert_called_once_with( CONTEXT, share_server_id) def test_delete_active_server(self): share_server = FakeShareServer(status=constants.STATUS_ACTIVE) self.mock_object(db_api, 'share_server_get', mock.Mock(return_value=share_server)) self.mock_object(self.controller.share_api, 'delete_share_server') self.controller.delete( FakeRequestAdmin, fake_share_server_get_result['share_server']['id']) policy.check_policy.assert_called_once_with(CONTEXT, self.resource_name, 'delete') db_api.share_server_get.assert_called_once_with( CONTEXT, fake_share_server_get_result['share_server']['id']) self.controller.share_api.delete_share_server.assert_called_once_with( CONTEXT, share_server) def test_delete_error_server(self): share_server = FakeShareServer(status=constants.STATUS_ERROR) self.mock_object(db_api, 'share_server_get', mock.Mock(return_value=share_server)) self.mock_object(self.controller.share_api, 'delete_share_server') self.controller.delete( FakeRequestAdmin, fake_share_server_get_result['share_server']['id']) policy.check_policy.assert_called_once_with(CONTEXT, self.resource_name, 'delete') db_api.share_server_get.assert_called_once_with( CONTEXT, fake_share_server_get_result['share_server']['id']) self.controller.share_api.delete_share_server.assert_called_once_with( CONTEXT, share_server) def test_delete_used_server(self): share_server_id = fake_share_server_get_result['share_server']['id'] def raise_not_share_server_in_use(*args, **kwargs): raise exception.ShareServerInUse(share_server_id=share_server_id) share_server = fake_share_server_get() self.mock_object(db_api, 'share_server_get', mock.Mock(return_value=share_server)) self.mock_object(self.controller.share_api, 'delete_share_server', mock.Mock(side_effect=raise_not_share_server_in_use)) self.assertRaises(exc.HTTPConflict, self.controller.delete, FakeRequestAdmin, share_server_id) db_api.share_server_get.assert_called_once_with( CONTEXT, share_server_id) self.controller.share_api.delete_share_server.assert_called_once_with( CONTEXT, share_server) def test_delete_not_found(self): share_server_id = fake_share_server_get_result['share_server']['id'] def raise_not_found(*args, **kwargs): raise exception.ShareServerNotFound( share_server_id=share_server_id) self.mock_object(db_api, 'share_server_get', mock.Mock(side_effect=raise_not_found)) self.assertRaises(exc.HTTPNotFound, self.controller.delete, FakeRequestAdmin, share_server_id) db_api.share_server_get.assert_called_once_with( CONTEXT, share_server_id) policy.check_policy.assert_called_once_with(CONTEXT, self.resource_name, 'delete') def test_delete_creating_server(self): share_server = FakeShareServer(status=constants.STATUS_CREATING) self.mock_object(db_api, 'share_server_get', mock.Mock(return_value=share_server)) self.assertRaises(exc.HTTPForbidden, self.controller.delete, FakeRequestAdmin, share_server['id']) policy.check_policy.assert_called_once_with(CONTEXT, self.resource_name, 'delete') def test_delete_deleting_server(self): share_server = FakeShareServer(status=constants.STATUS_DELETING) self.mock_object(db_api, 'share_server_get', mock.Mock(return_value=share_server)) self.assertRaises(exc.HTTPForbidden, self.controller.delete, FakeRequestAdmin, share_server['id']) policy.check_policy.assert_called_once_with(CONTEXT, self.resource_name, 'delete')
def raise_share_server_not_found(*args, **kwargs): raise exception.ShareServerNotFound( share_server_id=fake_server['id'])