test_user_details_api.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from django.contrib.auth import get_user_model
  2. from django.urls import reverse
  3. from misago.acl.test import patch_user_acl
  4. from misago.users.testutils import AuthenticatedUserTestCase
  5. UserModel = get_user_model()
  6. class UserDetailsApiTests(AuthenticatedUserTestCase):
  7. def test_api_has_no_showstoppers(self):
  8. """api outputs response for freshly created user"""
  9. response = self.client.get(
  10. reverse("misago:api:user-details", kwargs={"pk": self.user.pk})
  11. )
  12. self.assertEqual(response.status_code, 200)
  13. self.assertTrue(response.json()["edit"])
  14. def test_api_has_no_showstoppers_old_user(self):
  15. """api outputs response for freshly created user"""
  16. self.user.profile_fields = {
  17. "gender": "f",
  18. "bio": "Lorem ipsum dolor met, sit amet elit, si vis pacem bellum.",
  19. }
  20. self.user.save()
  21. response = self.client.get(
  22. reverse("misago:api:user-details", kwargs={"pk": self.user.pk})
  23. )
  24. self.assertEqual(response.status_code, 200)
  25. self.assertTrue(response.json()["edit"])
  26. def test_other_user(self):
  27. """api handles scenario when its other user looking at profile"""
  28. test_user = UserModel.objects.create_user(
  29. "BobBoberson", "bob@test.com", "bob123456"
  30. )
  31. api_link = reverse("misago:api:user-details", kwargs={"pk": test_user.pk})
  32. # moderator has permission to edit details
  33. with patch_user_acl({"can_moderate_profile_details": True}):
  34. response = self.client.get(api_link)
  35. self.assertEqual(response.status_code, 200)
  36. self.assertTrue(response.json()["edit"])
  37. # non-moderator has no permission to edit details
  38. with patch_user_acl({"can_moderate_profile_details": False}):
  39. response = self.client.get(api_link)
  40. self.assertEqual(response.status_code, 200)
  41. self.assertFalse(response.json()["edit"])
  42. def test_nonexistant_user(self):
  43. """api handles nonexistant users"""
  44. api_link = reverse("misago:api:user-details", kwargs={"pk": self.user.pk + 123})
  45. response = self.client.get(api_link)
  46. self.assertEqual(response.status_code, 404)