test_middleware.py 2.3 KB

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