예제 #1
0
    def test_no_headers(self):
        handler = BaseHandler()
        request = RequestFactory().get('/')

        res = http.HttpResponse('data')
        handler.patch_response(res, {})

        self.assertEqual(res.content, 'data')
        self.assertEqual(res.status_code, 200)
        self.assertEqual(res['content-type'], 'text/html; charset=utf-8')
    def test_data_and_headers(self):
        handler = BaseHandler()
        request = RequestFactory().get('/')

        res = http.HttpResponse('data')
        handler.patch_response(res, {'content-type': 'application/json'})

        self.assertEqual(res.content, 'data')
        self.assertEqual(res.status_code, 200)
        self.assertEqual(res['content-type'], 'application/json')
예제 #3
0
    def test_data_and_headers(self):
        handler = BaseHandler()
        request = RequestFactory().get('/')

        res = http.HttpResponse('data')
        handler.patch_response(res, {'content-type': 'application/json'})

        self.assertEqual(res.content, 'data')
        self.assertEqual(res.status_code, 200)
        self.assertEqual(res['content-type'], 'application/json')
    def setUp(self):
        mommy.make(User, 10)
        self.handler = BaseHandler()
        self.handler.authentication = SignatureAuthentication()

        def authentication_hook(request, *args, **kwargs):
            # Sets ``request.user`` according to the ``user`` querystring param.
            request.user = User.objects.get(id=request.GET.get('user'))

        self.handler.authentication_hook = authentication_hook
    def test_no_headers(self):
        handler = BaseHandler()
        request = RequestFactory().get('/')

        res = http.HttpResponse('data')
        handler.patch_response(res, {})

        self.assertEqual(res.content, 'data')
        self.assertEqual(res.status_code, 200)
        self.assertEqual(res['content-type'], 'text/html; charset=utf-8')
class TestAuthenticationHook(TestCase):
    def setUp(self):
        mommy.make(User, 10)
        self.handler = BaseHandler()
        self.handler.authentication = SignatureAuthentication()

        def authentication_hook(request, *args, **kwargs):
            # Sets ``request.user`` according to the ``user`` querystring param.
            request.user = User.objects.get(id=request.GET.get('user'))
        self.handler.authentication_hook = authentication_hook

    def test(self):
        request = RequestFactory().get('/?user=1')
        self.handler.authentication_hook(request)
        self.assertEqual(request.user, User.objects.get(id=1))
class TestAuthenticationHook(TestCase):
    def setUp(self):
        mommy.make(User, 10)
        self.handler = BaseHandler()
        self.handler.authentication = SignatureAuthentication()

        def authentication_hook(request, *args, **kwargs):
            # Sets ``request.user`` according to the ``user`` querystring param.
            request.user = User.objects.get(id=request.GET.get('user'))

        self.handler.authentication_hook = authentication_hook

    def test(self):
        request = RequestFactory().get('/?user=1')
        self.handler.authentication_hook(request)
        self.assertEqual(request.user, User.objects.get(id=1))
    def test_not_implemented(self):
        request = RequestFactory().get('/')
        handler = init_handler(BaseHandler(), request)

        try:
            raise exceptions.NotImplemented
        except Exception, e:
            response = handler.handle_exception(e)
    def test_unsupported_media_type(self):
        request = RequestFactory().get('/')
        handler = init_handler(BaseHandler(), request)

        try:
            raise exceptions.UnsupportedMediaType
        except Exception, e:
            response = handler.handle_exception(e)
 def test_gone(self): 
     request = RequestFactory().get('/')
     handler = init_handler(BaseHandler(), request)
     
     try:
         raise exceptions.Gone
     except Exception, e:
         response = handler.handle_exception(e)
    def test_data_and_extra_headers(self):
        handler = BaseHandler()
        request = RequestFactory().get('/')

        res = http.HttpResponse('data')
        handler.patch_response(
            res,  
            {
                'content-disposition': 'attachment; filename="foo.xls"',
                'content-type': 'application/vnd.ms-excel',
            },
        )

        self.assertEqual(res.content, 'data')
        self.assertEqual(res.status_code, 200)
        self.assertEqual(res['content-disposition'], 'attachment; filename="foo.xls"')
        self.assertEqual(res['content-type'], 'application/vnd.ms-excel')
 def test_unprocessable_1(self): 
     request = RequestFactory().get('/')
     handler = init_handler(BaseHandler(), request)
     
     try:
         raise exceptions.Unprocessable
     except Exception, e:
         response = handler.handle_exception(e)
 def test_plural_delete_not_allowed(self):
     """
     Plural DELETE is not allowed, so ``is_catastrophic`` will return True
     """
     request = RequestFactory().delete('/')
     handler = init_handler(BaseHandler(), request)
     
     self.assertTrue(handler.is_catastrophic())
 def test_bad_request_1(self):
     request = RequestFactory().get('/')
     handler = init_handler(BaseHandler(), request)
     
     try:
         raise exceptions.BadRequest('')
     except Exception, e:
         response = handler.handle_exception(e)
예제 #15
0
    def test_delete(self):
        request = RequestFactory().delete('/')
        handler = init_handler(BaseHandler(), request)

        self.assertRaises(
            exceptions.NotImplemented,
            handler.delete,
        )
    def setUp(self):
        request = RequestFactory().get('/')
        handler = init_handler(BaseHandler(), request)
        handler.http_methods = (
            'GET',
            'POST',
        )

        self.handler = handler
예제 #17
0
    def test_data_and_extra_headers(self):
        handler = BaseHandler()
        request = RequestFactory().get('/')

        res = http.HttpResponse('data')
        handler.patch_response(
            res,
            {
                'content-disposition': 'attachment; filename="foo.xls"',
                'content-type': 'application/vnd.ms-excel',
            },
        )

        self.assertEqual(res.content, 'data')
        self.assertEqual(res.status_code, 200)
        self.assertEqual(res['content-disposition'],
                         'attachment; filename="foo.xls"')
        self.assertEqual(res['content-type'], 'application/vnd.ms-excel')
    def setUp(self):
        mommy.make(User, 10)
        self.handler = BaseHandler()
        self.handler.authentication = SignatureAuthentication()

        def authentication_hook(request, *args, **kwargs):
            # Sets ``request.user`` according to the ``user`` querystring param.
            request.user = User.objects.get(id=request.GET.get('user'))
        self.handler.authentication_hook = authentication_hook
    def test_bad_request_2(self):
        request = RequestFactory().get('/')
        handler = init_handler(BaseHandler(), request)

        content = 'some error here'
        try:
            raise exceptions.BadRequest(content)
        except Exception, e:
            response = handler.handle_exception(e)
    def test_bad_request_3(self):
        request = RequestFactory().get('/')
        handler = init_handler(BaseHandler(), request)

        content = {'error1': 'description', 'error2': 'description'}
        try:
            raise exceptions.BadRequest(content)
        except Exception, e:
            response = handler.handle_exception(e)
    def test_plural_delete_allowed(self):
        """
        Plural DELETE is allowed, so ``is_catastrophic`` will return False
        """
        request = RequestFactory().delete('/')
        handler = init_handler(BaseHandler(), request)
        handler.http_methods = ('PLURAL_DELETE',)

        self.assertFalse(handler.is_catastrophic())
    def test_method_not_allowed_2(self):
        request = RequestFactory().get('/')
        handler = init_handler(BaseHandler(), request)

        allowed_methods = ('GET', 'POST')
        try:
            raise exceptions.MethodNotAllowed(allowed_methods)
        except Exception, e:
            response = handler.handle_exception(e)
    def test_other_exception_debug_true(self):
        # With settings.DEBUG = False, the response should be non empty
        request = RequestFactory().get('/')
        handler = init_handler(BaseHandler(), request)
        settings.DEBUG = True

        try:
            raise TypeError
        except TypeError, e:
            response = handler.handle_exception(e)
    def test_paginate_data(self):
        request = RequestFactory().get('/')
        handler = init_handler(BaseHandler(), request)
        data = "data"
        page = 1

        self.assertEqual(
            handler.paginate_data(data, page),
            (data, {}),
        )
    def setUp(self):
        request = RequestFactory().post('/')
        handler = init_handler(BaseHandler(), request)
        handler.post_body_fields = (
            'id',
            'name',
            'surname',
        )

        self.handler = handler
예제 #26
0
    def test_order_data(self):
        request = RequestFactory().get('/')
        handler = init_handler(BaseHandler(), request)
        data = 'data'
        order = 'someorder'

        self.assertEqual(
            handler.order_data(data, order),
            data
        )
class TestInjectDataHook(TestCase):
    def setUp(self):
        mommy.make(User, 10)
        self.handler = BaseHandler()

    def test(self):
        request = RequestFactory().get('/')
        data = User.objects.all()
        self.assertItemsEqual(
            self.handler.inject_data_hook(data),
            data,
        )
    def test_modelhandler_package_debug(self):
        """
        I repeat the tests of the previous method, but with
        ``settings.debug=True``, which will return another key in the response.
        """
        settings.DEBUG = True
        request = RequestFactory().get('whatever/')
        handler = init_handler(BaseHandler(), request)

        data = 'datastring'
        pagination = {}
        res = handler.package(data, pagination)
        self.assertItemsEqual(res.keys(), ('data', 'count', 'debug'))
        self.assertEqual(res['data'], data)
        self.assertEqual(res['count'], 1)

        data = 125.6
        pagination = {}
        res = handler.package(data, pagination)
        self.assertItemsEqual(res.keys(), ('data', 'count', 'debug'))
        self.assertEqual(res['data'], data)
        self.assertEqual(res['count'], 1)

        data = [1, 2, 3, 4, 5]
        pagination = {'key': 'value'}
        res = handler.package(data, pagination)
        self.assertItemsEqual(res.keys(),
                              ('data', 'count', 'pagination', 'debug'))
        self.assertEqual(res['data'], data)
        self.assertEqual(res['pagination'], pagination)
        self.assertEqual(res['count'], 5)

        data = {1, 2, 3, 4, 5}
        pagination = {}
        res = handler.package(data, pagination)
        self.assertItemsEqual(res.keys(), ('data', 'count', 'debug'))
        self.assertEqual(res['data'], data)
        self.assertEqual(res['count'], 5)

        data = {'key1': 'value1', 'key2': 'value2'}
        pagination = {}
        res = handler.package(data, pagination)
        self.assertItemsEqual(res.keys(), ('data', 'count', 'debug'))
        self.assertEqual(res['data'], data)
        self.assertEqual(res['count'], 2)

        data = mommy.make(User, 10)
        pagination = {}
        res = handler.package(data, pagination)
        self.assertItemsEqual(res.keys(), ('data', 'count', 'debug'))
        self.assertEqual(res['data'], data)
        self.assertEqual(res['count'], 10)
    def test_basehandler_package(self):
        settings.DEBUG = False  # No debug message will appear on response
        request = RequestFactory().get('whatever/')
        handler = init_handler(BaseHandler(), request)

        data = 'datastring'
        pagination = {}
        res = handler.package(data, pagination)
        self.assertItemsEqual(res.keys(), ('data', 'count'))
        self.assertEqual(res['data'], data)
        self.assertEqual(res['count'], 1)

        data = 125.6
        pagination = {}
        res = handler.package(data, pagination)
        self.assertItemsEqual(res.keys(), ('data', 'count'))
        self.assertEqual(res['data'], data)
        self.assertEqual(res['count'], 1)

        data = [1, 2, 3, 4, 5]
        pagination = {'key': 'value'}
        res = handler.package(data, pagination)
        self.assertItemsEqual(res.keys(), ('data', 'pagination', 'count'))
        self.assertEqual(res['data'], data)
        self.assertEqual(res['pagination'], pagination)
        self.assertEqual(res['count'], 5)

        data = {1, 2, 3, 4, 5}
        pagination = {}
        res = handler.package(data, pagination)
        self.assertItemsEqual(res.keys(), ('data', 'count'))
        self.assertEqual(res['data'], data)
        self.assertEqual(res['count'], 5)

        data = {'key1': 'value1', 'key2': 'value2'}
        pagination = {}
        res = handler.package(data, pagination)
        self.assertItemsEqual(res.keys(), ('data', 'count'))
        self.assertEqual(res['data'], data)
        self.assertEqual(res['count'], 2)

        data = mommy.make(User, 10)
        pagination = {}
        res = handler.package(data, pagination)
        self.assertItemsEqual(res.keys(), ('data', 'count'))
        self.assertEqual(res['data'], data)
        self.assertEqual(res['count'], 10)
예제 #30
0
    def test_invalid_json(self):
        request_body = """
        {
            "key":
        }
        """

        request = RequestFactory().post(
            '/',
            data=request_body,
            content_type='application/json',
        )
        handler = init_handler(BaseHandler(), request)

        self.assertRaises(
            exceptions.BadRequest,                
            handler.deserialize_body,
        )
    def test_dic(self):
        request = RequestFactory().put('/')

        handler = init_handler(BaseHandler(), request)
        handler.put_body_fields = ['id', 'name']
        handler.request.data = {
            'id': 1,
            'name': 'Name',
            'surname': 'Surname',
            'age': 'Age',
            'email': 'Email',
        }

        # Cleanse request body
        handler.cleanse_body()
        # And check
        self.assertItemsEqual(handler.request.data.keys(),
                              handler.put_body_fields)
    def setUp(self):
        # Create some User instances
        mommy.make(User, 10)

        # Initialize a basehandler
        request = RequestFactory().get('/')
        handler = init_handler(BaseHandler(), request)

        handler.user_template = {
            'fields': ['id', 'username', 'email']
        }        
        handler.template = {
            'fields': ['dic', 'list', 'user'],
            'related': {
                'user': handler.user_template    
            }
        }

        self.handler = handler
예제 #33
0
    def test_invalid_content_type(self):
        request_body = """
            <xml>
                <node>
                    value
                </node>
            </xml>
        """

        request = RequestFactory().post(
            '/',
            data=request_body,
            content_type='application/xml',
        )
        handler = init_handler(BaseHandler(), request)

        self.assertRaises(
            exceptions.UnsupportedMediaType,
            handler.deserialize_body,
        )
예제 #34
0
    def test_valid_json(self):
        request_body = """
        {
            "key": "value"
        }
        """

        request = RequestFactory().post(
            '/',
            data=request_body,
            content_type='application/json'
        )
        handler = init_handler(BaseHandler(), request)

        # Deserialize request body
        handler.deserialize_body()

        self.assertEqual(
            handler.request.data,
            json.loads(request_body),
        )
 def setUp(self):
     request = RequestFactory().get('/')
     handler = init_handler(BaseHandler(), request)
     self.handler = handler
 def setUp(self):
     mommy.make(User, 10)
     self.handler = BaseHandler()