test_middleware.py 2.4 KB

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