test_decorators.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from django.urls import reverse
  2. from misago.core.utils import encode_json_html
  3. from misago.users.models import Ban
  4. from misago.users.testutils import UserTestCase
  5. class DenyAuthenticatedTests(UserTestCase):
  6. def test_success(self):
  7. """deny_authenticated decorator allowed guest request"""
  8. response = self.client.post(reverse("misago:request-activation"))
  9. self.assertEqual(response.status_code, 200)
  10. def test_fail(self):
  11. """deny_authenticated decorator denied authenticated request"""
  12. self.login_user(self.get_authenticated_user())
  13. response = self.client.post(reverse("misago:request-activation"))
  14. self.assertEqual(response.status_code, 403)
  15. class DenyGuestsTests(UserTestCase):
  16. def test_success(self):
  17. """deny_guests decorator allowed authenticated request"""
  18. self.login_user(self.get_authenticated_user())
  19. response = self.client.post(reverse("misago:options"))
  20. self.assertEqual(response.status_code, 200)
  21. def test_fail(self):
  22. """deny_guests decorator blocked guest request"""
  23. response = self.client.post(reverse("misago:options"))
  24. self.assertEqual(response.status_code, 403)
  25. def test_ref_login(self):
  26. """deny_guests decorator redirected guest request to homepage if ref=login"""
  27. response = self.client.post("%s?ref=login" % reverse("misago:options"))
  28. self.assertEqual(response.status_code, 302)
  29. self.assertEqual(response["location"], reverse("misago:index"))
  30. class DenyBannedIPTests(UserTestCase):
  31. def test_success(self):
  32. """deny_banned_ips decorator allowed unbanned request"""
  33. Ban.objects.create(
  34. check_type=Ban.IP, banned_value="83.*", user_message="Ya got banned!"
  35. )
  36. response = self.client.post(reverse("misago:request-activation"))
  37. self.assertEqual(response.status_code, 200)
  38. def test_fail(self):
  39. """deny_banned_ips decorator denied banned request"""
  40. Ban.objects.create(
  41. check_type=Ban.IP, banned_value="127.*", user_message="Ya got banned!"
  42. )
  43. response = self.client.post(reverse("misago:request-activation"))
  44. self.assertContains(
  45. response, encode_json_html("<p>Ya got banned!</p>"), status_code=403
  46. )