test_djangoadmin_user.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from django.contrib.auth.models import Permission
  2. from django.test import override_settings
  3. from django.urls import reverse
  4. from django.utils import formats
  5. from ...admin.test import AdminTestCase
  6. from ..djangoadmin import UserAdminModel
  7. from ..test import create_test_user
  8. @override_settings(ROOT_URLCONF="misago.core.testproject.urls")
  9. class TestDjangoAdminUserForm(AdminTestCase):
  10. def setUp(self):
  11. super().setUp()
  12. self.test_user = create_test_user("OtherUser", "otheruser@example.com")
  13. self.edit_test_user_in_django_url = reverse(
  14. "admin:misago_users_user_change", args=[self.test_user.pk]
  15. )
  16. self.edit_test_user_in_misago_url = reverse(
  17. "misago:admin:users:accounts:edit", args=[self.test_user.pk]
  18. )
  19. def test_user_edit_view_content(self):
  20. """basic data about a user is present in Django admin"""
  21. response = self.client.get(self.edit_test_user_in_django_url)
  22. self.assertEqual(response.status_code, 200)
  23. self.assertContains(response, self.test_user.username)
  24. self.assertContains(response, self.test_user.email)
  25. self.assertContains(response, self.test_user.rank)
  26. last_login_date = formats.date_format(self.test_user.last_login)
  27. self.assertContains(response, last_login_date)
  28. register_date = formats.date_format(self.test_user.joined_on)
  29. self.assertContains(response, register_date)
  30. user_permissions = Permission.objects.all()
  31. for permission in user_permissions:
  32. self.assertContains(response, permission)
  33. def test_user_edit_view_post(self):
  34. """user permissions are editable through Django admin"""
  35. perms_all = Permission.objects.all()
  36. perms_all_pks = []
  37. for perm in perms_all:
  38. perms_all_pks.append(perm.pk)
  39. response = self.client.post(
  40. self.edit_test_user_in_django_url, data={"user_permissions": perms_all_pks}
  41. )
  42. self.assertEqual(response.status_code, 302)
  43. user_perms = self.test_user.user_permissions.all()
  44. for perm_pk in perms_all_pks:
  45. is_user_has_perm = user_perms.filter(pk=perm_pk).exists()
  46. self.assertTrue(is_user_has_perm)
  47. def test_misago_admin_url_presence_in_user_edit_view(self):
  48. """the url to Misago admin is present in Django admin user edit view"""
  49. response = self.client.get(self.edit_test_user_in_django_url)
  50. self.assertContains(response, self.edit_test_user_in_misago_url)
  51. edit_from_misago_short_desc = (
  52. UserAdminModel.get_edit_from_misago_url.short_description
  53. )
  54. self.assertContains(response, edit_from_misago_short_desc)
  55. def test_misago_admin_url_presence_in_user_list_view(self):
  56. """the url to Misago admin is present in Django admin user list view"""
  57. response = self.client.get(reverse("admin:misago_users_user_changelist"))
  58. self.assertContains(response, self.edit_test_user_in_misago_url)