test_user_middleware.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from django.urls import reverse
  2. from misago.users.bans import ban_ip, ban_user
  3. from misago.users.models import Ban
  4. from misago.users.testutils import AuthenticatedUserTestCase
  5. class UserMiddlewareTest(AuthenticatedUserTestCase):
  6. def setUp(self):
  7. super(UserMiddlewareTest, self).setUp()
  8. self.api_link = reverse('misago:api:auth')
  9. self.test_link = reverse('misago:index')
  10. def test_banned_user(self):
  11. """middleware handles user that has been banned in meantime"""
  12. ban_user(self.user)
  13. response = self.client.get(self.test_link)
  14. self.assertEqual(response.status_code, 200)
  15. response = self.client.get(self.api_link)
  16. self.assertEqual(response.status_code, 200)
  17. self.assertIsNone(response.json()['id'])
  18. def test_banned_staff(self):
  19. """middleware handles staff user that has been banned in meantime"""
  20. self.user.is_staff = True
  21. self.user.save()
  22. ban_user(self.user)
  23. response = self.client.get(self.test_link)
  24. self.assertEqual(response.status_code, 200)
  25. response = self.client.get(self.api_link)
  26. self.assertEqual(response.status_code, 200)
  27. self.assertEqual(response.json()['id'], self.user.pk)
  28. def test_registration_only_ban(self):
  29. """middleware ignores registration only bans"""
  30. Ban.objects.create(
  31. check_type=Ban.USERNAME,
  32. banned_value='{}*'.format(self.user.username[:3]),
  33. registration_only=True,
  34. )
  35. response = self.client.get(self.test_link)
  36. self.assertEqual(response.status_code, 200)
  37. response = self.client.get(self.api_link)
  38. self.assertEqual(response.status_code, 200)
  39. self.assertEqual(response.json()['id'], self.user.pk)
  40. def test_ip_banned_user(self):
  41. """middleware handles user that has been banned in meantime"""
  42. ban_ip('127.0.0.1')
  43. response = self.client.get(self.test_link)
  44. self.assertEqual(response.status_code, 200)
  45. response = self.client.get(self.api_link)
  46. self.assertEqual(response.status_code, 200)
  47. self.assertIsNone(response.json()['id'])
  48. def test_ip_banned_staff(self):
  49. """middleware handles staff user that has been banned in meantime"""
  50. self.user.is_staff = True
  51. self.user.save()
  52. ban_ip('127.0.0.1')
  53. response = self.client.get(self.test_link)
  54. self.assertEqual(response.status_code, 200)
  55. response = self.client.get(self.api_link)
  56. self.assertEqual(response.status_code, 200)
  57. self.assertEqual(response.json()['id'], self.user.pk)