test_user_dataexport_api.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from django.test.utils import override_settings
  2. from misago.users.dataexport import start_data_export_for_user
  3. from misago.users.testutils import AuthenticatedUserTestCase
  4. class UserStartDataExportApiTests(AuthenticatedUserTestCase):
  5. def setUp(self):
  6. super(UserStartDataExportApiTests, self).setUp()
  7. self.link = '/api/users/%s/start-data-export/' % self.user.pk
  8. def test_start_other_user_export_anonymous(self):
  9. """requests to api fails if user is anonymous"""
  10. self.logout_user()
  11. response = self.client.post(self.link)
  12. self.assertEqual(response.status_code, 403)
  13. self.assertEqual(response.json(), {
  14. 'detail': "This action is not available to guests.",
  15. })
  16. def test_start_other_user_export(self):
  17. """requests to api fails if user tries to access other user"""
  18. other_user = self.get_superuser()
  19. link = '/api/users/%s/start-data-export/' % other_user.pk
  20. response = self.client.post(link)
  21. self.assertEqual(response.status_code, 403)
  22. self.assertEqual(response.json(), {
  23. 'detail': "You can\'t request data export for other users.",
  24. })
  25. @override_settings(MISAGO_ENABLE_EXPORT_OWN_DATA=False)
  26. def test_start_export_disabled(self):
  27. """request to api fails if own data exports are disabled"""
  28. response = self.client.post(self.link)
  29. self.assertEqual(response.status_code, 403)
  30. self.assertEqual(response.json(), {
  31. 'detail': "You can't export your own data.",
  32. })
  33. def test_start_export_in_progress(self):
  34. """request to api fails if user already has export in progress"""
  35. start_data_export_for_user(self.user)
  36. response = self.client.post(self.link)
  37. self.assertEqual(response.status_code, 403)
  38. self.assertEqual(response.json(), {
  39. 'detail': "You already have an data export in progress.",
  40. })
  41. def test_start_export(self):
  42. """request to api fails if user already has export in progress"""
  43. response = self.client.post(self.link)
  44. self.assertEqual(response.status_code, 200)
  45. self.assertEqual(response.json(), {
  46. 'detail': "ok",
  47. })
  48. self.assertTrue(self.user.dataexport_set.exists())