예제 #1
0
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')
예제 #2
0
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)
예제 #3
0
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')
예제 #4
0
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:
예제 #5
0
파일: test_users.py 프로젝트: kaos/pulp
        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')
예제 #6
0
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)
예제 #7
0
파일: test_users.py 프로젝트: pombreda/pulp
        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')