1. from django.contrib.auth.models import User
    
  2. from django.core.exceptions import ImproperlyConfigured
    
  3. from django.test import override_settings
    
  4. 
    
  5. from .tests import AdminDocsTestCase, TestDataMixin
    
  6. 
    
  7. 
    
  8. class XViewMiddlewareTest(TestDataMixin, AdminDocsTestCase):
    
  9.     def test_xview_func(self):
    
  10.         user = User.objects.get(username="super")
    
  11.         response = self.client.head("/xview/func/")
    
  12.         self.assertNotIn("X-View", response)
    
  13.         self.client.force_login(self.superuser)
    
  14.         response = self.client.head("/xview/func/")
    
  15.         self.assertIn("X-View", response)
    
  16.         self.assertEqual(response.headers["X-View"], "admin_docs.views.xview")
    
  17.         user.is_staff = False
    
  18.         user.save()
    
  19.         response = self.client.head("/xview/func/")
    
  20.         self.assertNotIn("X-View", response)
    
  21.         user.is_staff = True
    
  22.         user.is_active = False
    
  23.         user.save()
    
  24.         response = self.client.head("/xview/func/")
    
  25.         self.assertNotIn("X-View", response)
    
  26. 
    
  27.     def test_xview_class(self):
    
  28.         user = User.objects.get(username="super")
    
  29.         response = self.client.head("/xview/class/")
    
  30.         self.assertNotIn("X-View", response)
    
  31.         self.client.force_login(self.superuser)
    
  32.         response = self.client.head("/xview/class/")
    
  33.         self.assertIn("X-View", response)
    
  34.         self.assertEqual(response.headers["X-View"], "admin_docs.views.XViewClass")
    
  35.         user.is_staff = False
    
  36.         user.save()
    
  37.         response = self.client.head("/xview/class/")
    
  38.         self.assertNotIn("X-View", response)
    
  39.         user.is_staff = True
    
  40.         user.is_active = False
    
  41.         user.save()
    
  42.         response = self.client.head("/xview/class/")
    
  43.         self.assertNotIn("X-View", response)
    
  44. 
    
  45.     def test_callable_object_view(self):
    
  46.         self.client.force_login(self.superuser)
    
  47.         response = self.client.head("/xview/callable_object/")
    
  48.         self.assertEqual(
    
  49.             response.headers["X-View"], "admin_docs.views.XViewCallableObject"
    
  50.         )
    
  51. 
    
  52.     @override_settings(MIDDLEWARE=[])
    
  53.     def test_no_auth_middleware(self):
    
  54.         msg = (
    
  55.             "The XView middleware requires authentication middleware to be "
    
  56.             "installed. Edit your MIDDLEWARE setting to insert "
    
  57.             "'django.contrib.auth.middleware.AuthenticationMiddleware'."
    
  58.         )
    
  59.         with self.assertRaisesMessage(ImproperlyConfigured, msg):
    
  60.             self.client.head("/xview/func/")