test_rest_permissions.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from django.urls import reverse
  2. from ..models import Ban
  3. from ..test import UserTestCase
  4. class UnbannedOnlyTests(UserTestCase):
  5. def setUp(self):
  6. self.user = self.get_authenticated_user()
  7. def test_api_allows_guests(self):
  8. """policy allows guests"""
  9. response = self.client.post(
  10. reverse("misago:api:send-password-form"), data={"email": self.user.email}
  11. )
  12. self.assertEqual(response.status_code, 200)
  13. def test_api_allows_authenticated(self):
  14. """policy allows authenticated"""
  15. self.login_user(self.user)
  16. response = self.client.post(
  17. reverse("misago:api:send-password-form"), data={"email": self.user.email}
  18. )
  19. self.assertEqual(response.status_code, 200)
  20. def test_api_blocks_banned(self):
  21. """policy blocked banned ip"""
  22. Ban.objects.create(
  23. check_type=Ban.IP, banned_value="127.*", user_message="Ya got banned!"
  24. )
  25. response = self.client.post(
  26. reverse("misago:api:send-password-form"), data={"email": self.user.email}
  27. )
  28. self.assertEqual(response.status_code, 403)
  29. class UnbannedAnonOnlyTests(UserTestCase):
  30. def setUp(self):
  31. self.user = self.get_authenticated_user()
  32. def test_api_allows_guests(self):
  33. """policy allows guests"""
  34. self.user.requires_activation = 1
  35. self.user.save()
  36. response = self.client.post(
  37. reverse("misago:api:send-activation"), data={"email": self.user.email}
  38. )
  39. self.assertEqual(response.status_code, 200)
  40. def test_api_allows_authenticated(self):
  41. """policy blocks authenticated"""
  42. self.login_user(self.user)
  43. response = self.client.post(
  44. reverse("misago:api:send-activation"), data={"email": self.user.email}
  45. )
  46. self.assertEqual(response.status_code, 403)
  47. def test_api_blocks_banned(self):
  48. """policy blocked banned ip"""
  49. Ban.objects.create(
  50. check_type=Ban.IP, banned_value="127.*", user_message="Ya got banned!"
  51. )
  52. response = self.client.post(
  53. reverse("misago:api:send-activation"), data={"email": self.user.email}
  54. )
  55. self.assertEqual(response.status_code, 403)