test_djangoadmin_user.py 3.2 KB

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