test_errorpages.py 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. from django.test import Client, TestCase, override_settings
  2. from django.test.client import RequestFactory
  3. from django.urls import reverse
  4. from misago.users.models import AnonymousUser
  5. from ..testproject.views import mock_custom_403_error_page, mock_custom_404_error_page
  6. class CSRFErrorViewTests(TestCase):
  7. def test_csrf_failure(self):
  8. """csrf_failure error page has no show-stoppers"""
  9. csrf_client = Client(enforce_csrf_checks=True)
  10. response = csrf_client.post(reverse('misago:index'), data={
  11. 'eric': 'fish'
  12. })
  13. self.assertContains(response, "Request blocked", status_code=403)
  14. @override_settings(ROOT_URLCONF='misago.core.testproject.urls')
  15. class ErrorPageViewsTests(TestCase):
  16. def test_banned_returns_403(self):
  17. """banned error page has no show-stoppers"""
  18. response = self.client.get(reverse('raise-misago-banned'))
  19. self.assertContains(response, "misago:error-banned", status_code=403)
  20. self.assertContains(response, "<p>Banned for test!</p>", status_code=403)
  21. def test_permission_denied_returns_403(self):
  22. """permission_denied error page has no show-stoppers"""
  23. response = self.client.get(reverse('raise-misago-403'))
  24. self.assertContains(response, "misago:error-403", status_code=403)
  25. self.assertContains(response, "Page not available", status_code=403)
  26. def test_page_not_found_returns_404(self):
  27. """page_not_found error page has no show-stoppers"""
  28. response = self.client.get(reverse('raise-misago-404'))
  29. self.assertContains(response, "misago:error-404", status_code=404)
  30. self.assertContains(response, "Page not found", status_code=404)
  31. def test_not_allowed_returns_405(self):
  32. """not allowed error page has no showstoppers"""
  33. response = self.client.get(reverse('raise-misago-405'))
  34. self.assertContains(response, "misago:error-405", status_code=405)
  35. self.assertContains(response, "Wrong way", status_code=405)
  36. @override_settings(ROOT_URLCONF='misago.core.testproject.urlswitherrorhandlers')
  37. class CustomErrorPagesTests(TestCase):
  38. def setUp(self):
  39. self.misago_request = RequestFactory().get(reverse('misago:index'))
  40. self.site_request = RequestFactory().get(reverse('raise-403'))
  41. self.misago_request.user = AnonymousUser()
  42. self.site_request.user = AnonymousUser()
  43. self.misago_request.include_frontend_context = True
  44. self.site_request.include_frontend_context = True
  45. self.misago_request.frontend_context = {}
  46. self.site_request.frontend_context = {}
  47. def test_shared_403_decorator(self):
  48. """shared_403_decorator calls correct error handler"""
  49. response = self.client.get(reverse('raise-misago-403'))
  50. self.assertEqual(response.status_code, 403)
  51. response = self.client.get(reverse('raise-403'))
  52. self.assertContains(response, "Custom 403", status_code=403)
  53. response = mock_custom_403_error_page(self.misago_request)
  54. self.assertNotContains(response, "Custom 403", status_code=403)
  55. response = mock_custom_403_error_page(self.site_request)
  56. self.assertContains(response, "Custom 403", status_code=403)
  57. def test_shared_404_decorator(self):
  58. """shared_404_decorator calls correct error handler"""
  59. response = self.client.get(reverse('raise-misago-404'))
  60. self.assertEqual(response.status_code, 404)
  61. response = self.client.get(reverse('raise-404'))
  62. self.assertContains(response, "Custom 404", status_code=404)
  63. response = mock_custom_404_error_page(self.misago_request)
  64. self.assertNotContains(response, "Custom 404", status_code=404)
  65. response = mock_custom_404_error_page(self.site_request)
  66. self.assertContains(response, "Custom 404", status_code=404)