test_errorpages.py 3.5 KB

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