test_user_details_api.py 2.1 KB

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