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')
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
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)
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
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
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)
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
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, )
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()