test_djangoadmin_user.py 3.0 KB

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