summaryrefslogtreecommitdiff
path: root/tests/admin_docs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/admin_docs')
-rw-r--r--tests/admin_docs/__init__.py0
-rw-r--r--tests/admin_docs/fixtures/data.xml17
-rw-r--r--tests/admin_docs/models.py0
-rw-r--r--tests/admin_docs/tests.py45
-rw-r--r--tests/admin_docs/urls.py11
-rw-r--r--tests/admin_docs/views.py13
6 files changed, 86 insertions, 0 deletions
diff --git a/tests/admin_docs/__init__.py b/tests/admin_docs/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/admin_docs/__init__.py
diff --git a/tests/admin_docs/fixtures/data.xml b/tests/admin_docs/fixtures/data.xml
new file mode 100644
index 0000000000..aba8f4aace
--- /dev/null
+++ b/tests/admin_docs/fixtures/data.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<django-objects version="1.0">
+ <object pk="100" model="auth.user">
+ <field type="CharField" name="username">super</field>
+ <field type="CharField" name="first_name">Super</field>
+ <field type="CharField" name="last_name">User</field>
+ <field type="CharField" name="email">super@example.com</field>
+ <field type="CharField" name="password">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>
+ <field type="BooleanField" name="is_staff">True</field>
+ <field type="BooleanField" name="is_active">True</field>
+ <field type="BooleanField" name="is_superuser">True</field>
+ <field type="DateTimeField" name="last_login">2007-05-30 13:20:10</field>
+ <field type="DateTimeField" name="date_joined">2007-05-30 13:20:10</field>
+ <field to="auth.group" name="groups" rel="ManyToManyRel"></field>
+ <field to="auth.permission" name="user_permissions" rel="ManyToManyRel"></field>
+ </object>
+</django-objects>
diff --git a/tests/admin_docs/models.py b/tests/admin_docs/models.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/admin_docs/models.py
diff --git a/tests/admin_docs/tests.py b/tests/admin_docs/tests.py
new file mode 100644
index 0000000000..aeb527c7b9
--- /dev/null
+++ b/tests/admin_docs/tests.py
@@ -0,0 +1,45 @@
+from django.contrib.auth.models import User
+from django.test import TestCase
+from django.test.utils import override_settings
+
+
+@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
+class XViewMiddlewareTest(TestCase):
+ fixtures = ['data.xml']
+ urls = 'admin_docs.urls'
+
+ def test_xview_func(self):
+ user = User.objects.get(username='super')
+ response = self.client.head('/xview/func/')
+ self.assertFalse('X-View' in response)
+ self.client.login(username='super', password='secret')
+ response = self.client.head('/xview/func/')
+ self.assertTrue('X-View' in response)
+ self.assertEqual(response['X-View'], 'admin_docs.views.xview')
+ user.is_staff = False
+ user.save()
+ response = self.client.head('/xview/func/')
+ self.assertFalse('X-View' in response)
+ user.is_staff = True
+ user.is_active = False
+ user.save()
+ response = self.client.head('/xview/func/')
+ self.assertFalse('X-View' in response)
+
+ def test_xview_class(self):
+ user = User.objects.get(username='super')
+ response = self.client.head('/xview/class/')
+ self.assertFalse('X-View' in response)
+ self.client.login(username='super', password='secret')
+ response = self.client.head('/xview/class/')
+ self.assertTrue('X-View' in response)
+ self.assertEqual(response['X-View'], 'admin_docs.views.XViewClass')
+ user.is_staff = False
+ user.save()
+ response = self.client.head('/xview/class/')
+ self.assertFalse('X-View' in response)
+ user.is_staff = True
+ user.is_active = False
+ user.save()
+ response = self.client.head('/xview/class/')
+ self.assertFalse('X-View' in response)
diff --git a/tests/admin_docs/urls.py b/tests/admin_docs/urls.py
new file mode 100644
index 0000000000..3c3a8fe5d8
--- /dev/null
+++ b/tests/admin_docs/urls.py
@@ -0,0 +1,11 @@
+# coding: utf-8
+from __future__ import absolute_import
+
+from django.conf.urls import patterns
+
+from . import views
+
+urlpatterns = patterns('',
+ (r'^xview/func/$', views.xview_dec(views.xview)),
+ (r'^xview/class/$', views.xview_dec(views.XViewClass.as_view())),
+)
diff --git a/tests/admin_docs/views.py b/tests/admin_docs/views.py
new file mode 100644
index 0000000000..e47177c37f
--- /dev/null
+++ b/tests/admin_docs/views.py
@@ -0,0 +1,13 @@
+from django.http import HttpResponse
+from django.utils.decorators import decorator_from_middleware
+from django.views.generic import View
+from django.contrib.admindocs.middleware import XViewMiddleware
+
+xview_dec = decorator_from_middleware(XViewMiddleware)
+
+def xview(request):
+ return HttpResponse()
+
+class XViewClass(View):
+ def get(self, request):
+ return HttpResponse()