diff options
| author | Carlton Gibson | 2014-06-24 10:30:08 +0200 |
|---|---|---|
| committer | Carlton Gibson | 2014-06-24 10:30:08 +0200 |
| commit | d98245ac2234c2377a6243f8314b31fd68c902af (patch) | |
| tree | 5fa88ae09d97a25e20d0dbf254ad028ef4351bca /tests/test_negotiation.py | |
| parent | 3f727ce738776838d8420450ce28485954fbb097 (diff) | |
| parent | 2489e38a06f575aa144644eee683bd87f20186ef (diff) | |
| download | django-rest-framework-d98245ac2234c2377a6243f8314b31fd68c902af.tar.bz2 | |
Merge branch '2.4.0' of github.com:tomchristie/django-rest-framework into #1559
Conflicts:
docs/topics/release-notes.md
Diffstat (limited to 'tests/test_negotiation.py')
| -rw-r--r-- | tests/test_negotiation.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/test_negotiation.py b/tests/test_negotiation.py new file mode 100644 index 00000000..04b89eb6 --- /dev/null +++ b/tests/test_negotiation.py @@ -0,0 +1,45 @@ +from __future__ import unicode_literals +from django.test import TestCase +from rest_framework.negotiation import DefaultContentNegotiation +from rest_framework.request import Request +from rest_framework.renderers import BaseRenderer +from rest_framework.test import APIRequestFactory + + +factory = APIRequestFactory() + + +class MockJSONRenderer(BaseRenderer): + media_type = 'application/json' + + +class MockHTMLRenderer(BaseRenderer): + media_type = 'text/html' + + +class NoCharsetSpecifiedRenderer(BaseRenderer): + media_type = 'my/media' + + +class TestAcceptedMediaType(TestCase): + def setUp(self): + self.renderers = [MockJSONRenderer(), MockHTMLRenderer()] + self.negotiator = DefaultContentNegotiation() + + def select_renderer(self, request): + return self.negotiator.select_renderer(request, self.renderers) + + def test_client_without_accept_use_renderer(self): + request = Request(factory.get('/')) + accepted_renderer, accepted_media_type = self.select_renderer(request) + self.assertEqual(accepted_media_type, 'application/json') + + def test_client_underspecifies_accept_use_renderer(self): + request = Request(factory.get('/', HTTP_ACCEPT='*/*')) + accepted_renderer, accepted_media_type = self.select_renderer(request) + self.assertEqual(accepted_media_type, 'application/json') + + def test_client_overspecifies_accept_use_client(self): + request = Request(factory.get('/', HTTP_ACCEPT='application/json; indent=8')) + accepted_renderer, accepted_media_type = self.select_renderer(request) + self.assertEqual(accepted_media_type, 'application/json; indent=8') |
