diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/browsable_api/__init__.py | 0 | ||||
| -rw-r--r-- | tests/browsable_api/auth_urls.py | 10 | ||||
| -rw-r--r-- | tests/browsable_api/no_auth_urls.py | 9 | ||||
| -rw-r--r-- | tests/browsable_api/test_browsable_api.py | 65 | ||||
| -rw-r--r-- | tests/browsable_api/views.py | 15 | 
5 files changed, 99 insertions, 0 deletions
| diff --git a/tests/browsable_api/__init__.py b/tests/browsable_api/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/tests/browsable_api/__init__.py diff --git a/tests/browsable_api/auth_urls.py b/tests/browsable_api/auth_urls.py new file mode 100644 index 00000000..bce7dcf9 --- /dev/null +++ b/tests/browsable_api/auth_urls.py @@ -0,0 +1,10 @@ +from __future__ import unicode_literals +from django.conf.urls import patterns, url, include + +from .views import MockView + +urlpatterns = patterns( +    '', +    (r'^$', MockView.as_view()), +    url(r'^auth/', include('rest_framework.urls', namespace='rest_framework')), +) diff --git a/tests/browsable_api/no_auth_urls.py b/tests/browsable_api/no_auth_urls.py new file mode 100644 index 00000000..5e3604a6 --- /dev/null +++ b/tests/browsable_api/no_auth_urls.py @@ -0,0 +1,9 @@ +from __future__ import unicode_literals +from django.conf.urls import patterns + +from .views import MockView + +urlpatterns = patterns( +    '', +    (r'^$', MockView.as_view()), +) diff --git a/tests/browsable_api/test_browsable_api.py b/tests/browsable_api/test_browsable_api.py new file mode 100644 index 00000000..5f264783 --- /dev/null +++ b/tests/browsable_api/test_browsable_api.py @@ -0,0 +1,65 @@ +from __future__ import unicode_literals +from django.contrib.auth.models import User +from django.test import TestCase + +from rest_framework.test import APIClient + + +class DropdownWithAuthTests(TestCase): +    """Tests correct dropdown behaviour with Auth views enabled.""" + +    urls = 'tests.browsable_api.auth_urls' + +    def setUp(self): +        self.client = APIClient(enforce_csrf_checks=True) +        self.username = 'john' +        self.email = 'lennon@thebeatles.com' +        self.password = 'password' +        self.user = User.objects.create_user(self.username, self.email, self.password) + +    def tearDown(self): +        self.client.logout() + +    def test_name_shown_when_logged_in(self): +        self.client.login(username=self.username, password=self.password) +        response = self.client.get('/') +        self.assertContains(response, 'john') + +    def test_logout_shown_when_logged_in(self): +        self.client.login(username=self.username, password=self.password) +        response = self.client.get('/') +        self.assertContains(response, '>Log out<') + +    def test_login_shown_when_logged_out(self): +        response = self.client.get('/') +        self.assertContains(response, '>Log in<') + + +class NoDropdownWithoutAuthTests(TestCase): +    """Tests correct dropdown behaviour with Auth views NOT enabled.""" + +    urls = 'tests.browsable_api.no_auth_urls' + +    def setUp(self): +        self.client = APIClient(enforce_csrf_checks=True) +        self.username = 'john' +        self.email = 'lennon@thebeatles.com' +        self.password = 'password' +        self.user = User.objects.create_user(self.username, self.email, self.password) + +    def tearDown(self): +        self.client.logout() + +    def test_name_shown_when_logged_in(self): +        self.client.login(username=self.username, password=self.password) +        response = self.client.get('/') +        self.assertContains(response, 'john') + +    def test_dropdown_not_shown_when_logged_in(self): +        self.client.login(username=self.username, password=self.password) +        response = self.client.get('/') +        self.assertNotContains(response, '<li class="dropdown">') + +    def test_dropdown_not_shown_when_logged_out(self): +        response = self.client.get('/') +        self.assertNotContains(response, '<li class="dropdown">') diff --git a/tests/browsable_api/views.py b/tests/browsable_api/views.py new file mode 100644 index 00000000..000f4e80 --- /dev/null +++ b/tests/browsable_api/views.py @@ -0,0 +1,15 @@ +from __future__ import unicode_literals + +from rest_framework.views import APIView +from rest_framework import authentication +from rest_framework import renderers +from rest_framework.response import Response + + +class MockView(APIView): + +    authentication_classes = (authentication.SessionAuthentication,) +    renderer_classes = (renderers.BrowsableAPIRenderer,) + +    def get(self, request): +        return Response({'a': 1, 'b': 2, 'c': 3}) | 
