test_user_details_api.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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(
  11. 'misago:api:user-details',
  12. kwargs={
  13. 'pk': self.user.pk,
  14. }
  15. )
  16. )
  17. self.assertEqual(response.status_code, 200)
  18. self.assertTrue(response.json()['edit'])
  19. def test_api_has_no_showstoppers_old_user(self):
  20. """api outputs response for freshly created user"""
  21. self.user.profile_fields = {
  22. 'gender': 'f',
  23. 'bio': 'Lorem ipsum dolor met, sit amet elit, si vis pacem bellum.'
  24. }
  25. self.user.save()
  26. response = self.client.get(
  27. reverse(
  28. 'misago:api:user-details',
  29. kwargs={
  30. 'pk': self.user.pk,
  31. }
  32. )
  33. )
  34. self.assertEqual(response.status_code, 200)
  35. self.assertTrue(response.json()['edit'])
  36. @patch_user_acl
  37. def test_other_user(self, patch_user_acl):
  38. """api handles scenario when its other user looking at profile"""
  39. test_user = UserModel.objects.create_user('BobBoberson', 'bob@test.com', 'bob123456')
  40. api_link = reverse(
  41. 'misago:api:user-details',
  42. kwargs={
  43. 'pk': test_user.pk,
  44. }
  45. )
  46. # moderator has permission to edit details
  47. patch_user_acl(self.user, {
  48. 'can_moderate_profile_details': True,
  49. })
  50. response = self.client.get(api_link)
  51. self.assertEqual(response.status_code, 200)
  52. self.assertTrue(response.json()['edit'])
  53. # non-moderator has no permission to edit details
  54. patch_user_acl(self.user, {
  55. 'can_moderate_profile_details': False,
  56. })
  57. response = self.client.get(api_link)
  58. self.assertEqual(response.status_code, 200)
  59. self.assertFalse(response.json()['edit'])
  60. def test_nonexistant_user(self):
  61. """api handles nonexistant users"""
  62. api_link = reverse(
  63. 'misago:api:user-details',
  64. kwargs={
  65. 'pk': self.user.pk + 123,
  66. }
  67. )
  68. response = self.client.get(api_link)
  69. self.assertEqual(response.status_code, 404)