class TestUploadResourceView(unittest.TestCase): """ Tests for views of a single upload. """ @mock.patch('pulp.server.webservices.views.decorators._verify_auth', new=assert_auth_DELETE()) @mock.patch('pulp.server.webservices.views.content.generate_json_response') @mock.patch('pulp.server.webservices.views.content.factory') def test_delete_upload_resource_view(self, mock_factory, mock_resp): """ View should delete an upload and return a response containing None. """ mock_upload_manager = mock.MagicMock() mock_factory.content_upload_manager.return_value = mock_upload_manager request = mock.MagicMock() upload_resource_view = UploadResourceView() response = upload_resource_view.delete(request, 'mock_unit') mock_resp.assert_called_once_with(None) self.assertTrue(response is mock_resp.return_value) mock_upload_manager.delete_upload.assert_called_once_with('mock_unit')
class TestUserResourceView(unittest.TestCase): """ Test user resource view. """ @mock.patch('pulp.server.webservices.views.decorators._verify_auth', new=assert_auth_READ()) @mock.patch( 'pulp.server.webservices.views.users.generate_json_response_with_pulp_encoder' ) @mock.patch('pulp.server.webservices.views.users.model.User') def test_get_single_user(self, mock_model, mock_resp): """ Test single user retrieval. """ request = mock.MagicMock() user = UserResourceView() response = user.get(request, 'test-user') mock_model.objects.get_or_404.assert_called_once_with( login='******') mock_resp.assert_called_once_with( mock_model.SERIALIZER.return_value.data) self.assertTrue(response is mock_resp.return_value) @mock.patch('pulp.server.webservices.views.decorators._verify_auth', new=assert_auth_DELETE()) @mock.patch('pulp.server.webservices.views.users.reverse') @mock.patch('pulp.server.webservices.views.users.Permission.get_collection' ) @mock.patch('pulp.server.webservices.views.users.generate_json_response') @mock.patch('pulp.server.webservices.views.users.user_controller') def test_delete_single_user(self, mock_ctrl, mock_resp, mock_perm, mock_rev): """ Test user deletion. """ mock_perm().find_one.return_value = 'some' request = mock.MagicMock() user = UserResourceView() response = user.delete(request, 'test-user') mock_ctrl.delete_user.assert_called_once_with('test-user') mock_resp.assert_called_once_with() mock_perm().remove.assert_called_once_with( {'resource': mock_rev.return_value}) self.assertTrue(response is mock_resp.return_value) @mock.patch('pulp.server.webservices.views.decorators._verify_auth', new=assert_auth_UPDATE()) @mock.patch( 'pulp.server.webservices.views.users.generate_json_response_with_pulp_encoder' ) @mock.patch('pulp.server.webservices.views.users.model.User') @mock.patch('pulp.server.webservices.views.users.user_controller') def test_update_user(self, mock_ctrl, mock_model, mock_resp): """ Test user update """ request = mock.MagicMock() request.body = json.dumps({'delta': {'name': 'some-user'}}) user = UserResourceView() response = user.put(request, 'test-user') mock_ctrl.update_user.assert_called_once_with('test-user', {'name': 'some-user'}) mock_model.SERIALIZER.assert_called_once_with( mock_ctrl.update_user.return_value) mock_resp.assert_called_once_with( mock_model.SERIALIZER.return_value.data) self.assertTrue(response is mock_resp.return_value)
class TestOrphanTypeSubCollectionView(unittest.TestCase): """ Tests for views of orphans limited by type. """ @mock.patch('pulp.server.webservices.views.decorators._verify_auth', new=assert_auth_READ()) @mock.patch('pulp.server.webservices.views.content.reverse') @mock.patch('pulp.server.webservices.views.content.generate_json_response') @mock.patch('pulp.server.webservices.views.content.factory') def test_get_orphan_type_subcollection(self, mock_factory, mock_resp, mock_reverse): """ OrphanTypeSubCollection should return a response from a list of dicts, one for each orphan. """ mock_orphan_manager = mock.MagicMock() mock_orphan_manager.generate_orphans_by_type_with_unit_keys.return_value = [ { '_id': 'orphan1' }, { '_id': 'orphan2' } ] mock_factory.content_orphan_manager.return_value = mock_orphan_manager request = mock.MagicMock() mock_reverse.return_value = '/mock/path/' orphan_type_subcollection = OrphanTypeSubCollectionView() response = orphan_type_subcollection.get(request, 'mock_type') expected_content = [{ '_id': 'orphan1', '_href': '/mock/path/' }, { '_id': 'orphan2', '_href': '/mock/path/' }] mock_resp.assert_called_once_with(expected_content) self.assertTrue(response is mock_resp.return_value) @mock.patch('pulp.server.webservices.views.decorators._verify_auth', new=assert_auth_READ()) @mock.patch('pulp.server.webservices.views.content.generate_json_response') @mock.patch('pulp.server.webservices.views.content.factory') def test_get_orphan_type_subcollection_with_empty_list( self, mock_factory, mock_resp): """ View should return a response with an empty list when there are no orphans of the type. """ mock_orphan_manager = mock.MagicMock() mock_orphan_manager.generate_orphans_by_type_with_unit_keys.return_value = [] mock_factory.content_orphan_manager.return_value = mock_orphan_manager request = mock.MagicMock() orphan_type_subcollection = OrphanTypeSubCollectionView() response = orphan_type_subcollection.get(request, 'mock_type') expected_content = [] mock_resp.assert_called_once_with(expected_content) self.assertTrue(response is mock_resp.return_value) @mock.patch('pulp.server.webservices.views.decorators._verify_auth', new=assert_auth_DELETE()) @mock.patch('pulp.server.controllers.units.get_unit_key_fields_for_type', spec_set=True) @mock.patch('pulp.server.webservices.views.content.content_orphan') def test_delete_orphan_type_subcollection(self, mock_orphan_manager, mock_get_unit_key_fields): """ Delete orphans should be called with the correct arguments and OperationPostponed is raised. """ request = mock.MagicMock() mock_get_unit_key_fields.return_value = ('id', ) orphan_type_subcollection = OrphanTypeSubCollectionView() self.assertRaises(OperationPostponed, orphan_type_subcollection.delete, request, 'mock_type') mock_orphan_manager.delete_orphans_by_type.apply_async.assert_called_once_with( ('mock_type', ), tags=['pulp:content_unit:orphans']) mock_get_unit_key_fields.assert_called_once_with('mock_type') @mock.patch('pulp.server.webservices.views.decorators._verify_auth', new=assert_auth_DELETE()) @mock.patch('pulp.server.controllers.units.get_unit_key_fields_for_type', spec_set=True) def test_delete_unknown_type(self, mock_get_unit_key_fields): mock_get_unit_key_fields.side_effect = ValueError request = mock.MagicMock() orphan_type_subcollection = OrphanTypeSubCollectionView() self.assertRaises(MissingResource, orphan_type_subcollection.delete, request, 'mock_type')
class TestconsumerGroupResourceView(unittest.TestCase): """ Test consumer groups resource view. """ @mock.patch('pulp.server.webservices.controllers.decorators._verify_auth', new=assert_auth_DELETE()) @mock.patch( 'pulp.server.webservices.views.consumer_groups.generate_json_response') @mock.patch('pulp.server.webservices.views.consumer_groups.factory') def test_delete_consumer_group_resource(self, mock_factory, mock_resp): """ Test consumer group delete resource. """ mock_group_manager = mock.MagicMock() mock_factory.consumer_group_manager.return_value = mock_group_manager mock_group_manager.delete_consumer_group.return_value = None request = mock.MagicMock() consumer_group_resource = ConsumerGroupResourceView() response = consumer_group_resource.delete(request, 'test-group') mock_group_manager.delete_consumer_group.assert_called_once_with( 'test-group') mock_resp.assert_called_once_with(None) self.assertTrue(response is mock_resp.return_value) @mock.patch('pulp.server.webservices.controllers.decorators._verify_auth', new=assert_auth_READ()) @mock.patch( 'pulp.server.webservices.views.consumer_groups.generate_json_response_with_pulp_encoder' ) @mock.patch( 'pulp.server.webservices.views.consumer_groups.ConsumerGroup.get_collection' ) def test_get_consumer_group_resource(self, mock_collection, mock_resp): """ Test single consumer group retrieval. """ consumer_mock = mock.MagicMock() consumer_mock.find_one.return_value = {'id': 'foo'} mock_collection.return_value = consumer_mock request = mock.MagicMock() consumer_group = ConsumerGroupResourceView() response = consumer_group.get(request, 'foo') expected_cont = {'id': 'foo', '_href': '/v2/consumer_groups/foo/'} mock_resp.assert_called_once_with(expected_cont) self.assertTrue(response is mock_resp.return_value) @mock.patch('pulp.server.webservices.controllers.decorators._verify_auth', new=assert_auth_READ()) @mock.patch( 'pulp.server.webservices.views.consumer_groups.ConsumerGroup.get_collection' ) def test_get_invalid_consumer_group_resource(self, mock_collection): """ Test nonexistent consumer group retrieval. """ mock_collection.return_value.find_one.return_value = None request = mock.MagicMock() consumer_group = ConsumerGroupResourceView() try: response = consumer_group.get(request, 'nonexistent_id') except MissingResource, response: pass else:
mock_factory.user_query_manager.return_value.find_by_login.return_value = None request = mock.MagicMock() user = UserResourceView() try: response = user.get(request, 'nonexistent_login') except MissingResource, response: pass else: raise AssertionError("MissingResource should be raised with nonexistent_user") self.assertEqual(response.http_status_code, 404) self.assertEqual(response.error_data['resources'], {'resource_id': 'nonexistent_login'}) @mock.patch('pulp.server.webservices.controllers.decorators._verify_auth', new=assert_auth_DELETE()) @mock.patch('pulp.server.webservices.views.users.Permission.get_collection') @mock.patch('pulp.server.webservices.views.users.generate_json_response') @mock.patch('pulp.server.webservices.views.users.factory') def test_delete_single_user(self, mock_factory, mock_resp, mock_perm): """ Test user deletion. """ mock_factory.user_manager.return_value.delete_user.return_value = None mock_perm.return_value.find_one.return_value = 'some' request = mock.MagicMock() user = UserResourceView() response = user.delete(request, 'test-user') mock_factory.user_manager.return_value.delete_user.assert_called_once_with('test-user')
class TestEventResourceView(unittest.TestCase): """ Test event resource view. """ @mock.patch('pulp.server.webservices.views.decorators._verify_auth', new=assert_auth_READ()) @mock.patch('pulp.server.webservices.views.events.generate_json_response_with_pulp_encoder') @mock.patch('pulp.server.webservices.views.events.factory') def test_get_single_event(self, mock_factory, mock_resp): """ Test single event retrieval. """ event = {'notifier_type_id': 'http', 'id': '12345'} mock_factory.event_listener_manager.return_value.get.return_value = event request = mock.MagicMock() event_listeners = EventResourceView() response = event_listeners.get(request, '12345') expected_cont = {'id': '12345', '_href': '/v2/events/12345/', 'notifier_type_id': 'http'} mock_resp.assert_called_once_with(expected_cont) mock_factory.event_listener_manager.return_value.get.assert_called_once_with('12345') self.assertTrue(response is mock_resp.return_value) @mock.patch('pulp.server.webservices.views.decorators._verify_auth', new=assert_auth_DELETE()) @mock.patch('pulp.server.webservices.views.events.generate_json_response') @mock.patch('pulp.server.webservices.views.events.factory') def test_delete_single_event(self, mock_factory, mock_resp): """ Test event deletion. """ mock_factory.event_listener_manager.return_value.delete.return_value = None request = mock.MagicMock() event_listeners = EventResourceView() response = event_listeners.delete(request, '12345') mock_factory.event_listener_manager.return_value.delete.assert_called_once_with('12345') mock_resp.assert_called_once_with(None) self.assertTrue(response is mock_resp.return_value) @mock.patch('pulp.server.webservices.views.decorators._verify_auth', new=assert_auth_UPDATE()) @mock.patch('pulp.server.webservices.views.events.generate_json_response_with_pulp_encoder') @mock.patch('pulp.server.webservices.views.events.factory') def test_update_event(self, mock_factory, mock_resp): """ Test event update """ resp = {'notifier_type_id': 'http', 'id': '12345', 'event_types': ['some']} mock_factory.event_listener_manager.return_value.update.return_value = resp request = mock.MagicMock() request.body = json.dumps({'event_types': ['some']}) event_listeners = EventResourceView() response = event_listeners.put(request, '12345') expected_cont = {'id': '12345', '_href': '/v2/events/12345/', 'notifier_type_id': 'http', 'event_types': ['some']} mock_resp.assert_called_once_with(expected_cont) self.assertTrue(response is mock_resp.return_value)
request = mock.MagicMock() user = UserResourceView() try: response = user.get(request, 'nonexistent_login') except MissingResource, response: pass else: raise AssertionError( "MissingResource should be raised with nonexistent_user") self.assertEqual(response.http_status_code, 404) self.assertEqual(response.error_data['resources'], {'resource_id': 'nonexistent_login'}) @mock.patch('pulp.server.webservices.controllers.decorators._verify_auth', new=assert_auth_DELETE()) @mock.patch('pulp.server.webservices.views.users.Permission.get_collection' ) @mock.patch('pulp.server.webservices.views.users.generate_json_response') @mock.patch('pulp.server.webservices.views.users.factory') def test_delete_single_user(self, mock_factory, mock_resp, mock_perm): """ Test user deletion. """ mock_factory.user_manager.return_value.delete_user.return_value = None mock_perm.return_value.find_one.return_value = 'some' request = mock.MagicMock() user = UserResourceView() response = user.delete(request, 'test-user')