test_errorpages.py 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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 misago.core.testproject.views import (mock_custom_403_error_page,
  6. mock_custom_404_error_page)
  7. class CSRFErrorViewTests(TestCase):
  8. def test_csrf_failure(self):
  9. """csrf_failure error page has no show-stoppers"""
  10. csrf_client = Client(enforce_csrf_checks=True)
  11. response = csrf_client.post(reverse('misago:index'),
  12. data={'eric': 'fish'})
  13. self.assertEqual(response.status_code, 403)
  14. self.assertIn("Request blocked", response.content)
  15. class ErrorPageViewsTests(TestCase):
  16. urls = 'misago.core.testproject.urls'
  17. def test_banned_returns_403(self):
  18. """banned error page has no show-stoppers"""
  19. response = self.client.get(reverse('raise_misago_banned'))
  20. self.assertEqual(response.status_code, 403)
  21. self.assertIn("<p>Banned for test!</p>", response.content)
  22. def test_permission_denied_returns_403(self):
  23. """permission_denied error page has no show-stoppers"""
  24. response = self.client.get(reverse('raise_misago_403'))
  25. self.assertEqual(response.status_code, 403)
  26. self.assertIn("Page not available", response.content)
  27. def test_page_not_found_returns_404(self):
  28. """page_not_found error page has no show-stoppers"""
  29. response = self.client.get(reverse('raise_misago_404'))
  30. self.assertEqual(response.status_code, 404)
  31. self.assertIn("Page not found", response.content)
  32. def test_not_allowed_returns_405(self):
  33. """not allowed error page has no showstoppers"""
  34. response = self.client.get(reverse('raise_misago_405'))
  35. self.assertEqual(response.status_code, 405)
  36. self.assertIn("Wrong way", response.content)
  37. class CustomErrorPagesTests(TestCase):
  38. urls = 'misago.core.testproject.urlswitherrorhandlers'
  39. def setUp(self):
  40. self.misago_request = RequestFactory().get(reverse('misago:index'))
  41. self.site_request = RequestFactory().get(reverse('raise_403'))
  42. self.misago_request.user = AnonymousUser()
  43. self.site_request.user = AnonymousUser()
  44. self.misago_request.frontend_context = {}
  45. self.site_request.frontend_context = {}
  46. def test_shared_403_decorator(self):
  47. """shared_403_decorator calls correct error handler"""
  48. response = self.client.get(reverse('raise_misago_403'))
  49. self.assertEqual(response.status_code, 403)
  50. response = self.client.get(reverse('raise_403'))
  51. self.assertEqual(response.status_code, 403)
  52. self.assertIn("Custom 403", response.content)
  53. response = mock_custom_403_error_page(self.misago_request)
  54. self.assertNotIn("Custom 403", response.content)
  55. response = mock_custom_403_error_page(self.site_request)
  56. self.assertIn("Custom 403", response.content)
  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.assertEqual(response.status_code, 404)
  63. self.assertIn("Custom 404", response.content)
  64. response = mock_custom_404_error_page(self.misago_request)
  65. self.assertNotIn("Custom 404", response.content)
  66. response = mock_custom_404_error_page(self.site_request)
  67. self.assertIn("Custom 404", response.content)