PageRenderTime 87ms CodeModel.GetById 22ms RepoModel.GetById 2ms app.codeStats 0ms

/mayan/apps/user_management/tests/test_views.py

https://gitlab.com/gerco/mayan-edms
Python | 245 lines | 179 code | 66 blank | 0 comment | 0 complexity | 74fe80ec8810c01d6a728210750cb2d6 MD5 | raw file
  1. from __future__ import unicode_literals
  2. from django.contrib.auth import get_user_model
  3. from django.contrib.auth.models import Group
  4. from common.tests.test_views import GenericViewTestCase
  5. from documents.tests.test_views import GenericDocumentViewTestCase
  6. from metadata.models import MetadataType
  7. from metadata.permissions import permission_metadata_document_edit
  8. from metadata.tests.literals import (
  9. TEST_METADATA_TYPE_LABEL, TEST_METADATA_TYPE_NAME,
  10. )
  11. from ..permissions import (
  12. permission_user_delete, permission_user_edit, permission_user_view
  13. )
  14. from .literals import (
  15. TEST_USER_PASSWORD, TEST_USER_PASSWORD_EDITED, TEST_USER_USERNAME
  16. )
  17. TEST_USER_TO_DELETE_USERNAME = 'user_to_delete'
  18. class UserManagementViewTestCase(GenericViewTestCase):
  19. def test_user_set_password_view_no_permissions(self):
  20. self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
  21. self.role.permissions.add(permission_user_view.stored_permission)
  22. response = self.post(
  23. 'user_management:user_set_password', args=(self.user.pk,), data={
  24. 'new_password_1': TEST_USER_PASSWORD_EDITED,
  25. 'new_password_2': TEST_USER_PASSWORD_EDITED
  26. }
  27. )
  28. self.assertEqual(response.status_code, 403)
  29. self.client.logout()
  30. self.client.login(
  31. username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD_EDITED
  32. )
  33. response = self.get('common:current_user_details')
  34. self.assertEqual(response.status_code, 302)
  35. def test_user_set_password_view_with_permissions(self):
  36. self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
  37. self.role.permissions.add(permission_user_edit.stored_permission)
  38. self.role.permissions.add(permission_user_view.stored_permission)
  39. response = self.post(
  40. 'user_management:user_set_password', args=(self.user.pk,), data={
  41. 'new_password_1': TEST_USER_PASSWORD_EDITED,
  42. 'new_password_2': TEST_USER_PASSWORD_EDITED
  43. }, follow=True
  44. )
  45. self.assertContains(response, text='Successfull', status_code=200)
  46. self.client.logout()
  47. self.client.login(
  48. username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD_EDITED
  49. )
  50. response = self.get('common:current_user_details')
  51. self.assertEqual(response.status_code, 200)
  52. def test_user_multiple_set_password_view_no_permissions(self):
  53. self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
  54. self.role.permissions.add(permission_user_view.stored_permission)
  55. response = self.post(
  56. 'user_management:user_multiple_set_password', data={
  57. 'id_list': self.user.pk,
  58. 'new_password_1': TEST_USER_PASSWORD_EDITED,
  59. 'new_password_2': TEST_USER_PASSWORD_EDITED
  60. }
  61. )
  62. self.assertEqual(response.status_code, 403)
  63. self.client.logout()
  64. self.client.login(
  65. username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD_EDITED
  66. )
  67. response = self.get('common:current_user_details')
  68. self.assertEqual(response.status_code, 302)
  69. def test_user_multiple_set_password_view_with_permissions(self):
  70. self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
  71. self.role.permissions.add(permission_user_edit.stored_permission)
  72. self.role.permissions.add(permission_user_view.stored_permission)
  73. response = self.post(
  74. 'user_management:user_multiple_set_password', data={
  75. 'id_list': self.user.pk,
  76. 'new_password_1': TEST_USER_PASSWORD_EDITED,
  77. 'new_password_2': TEST_USER_PASSWORD_EDITED
  78. }, follow=True
  79. )
  80. self.assertContains(response, text='Successfull', status_code=200)
  81. self.client.logout()
  82. self.client.login(
  83. username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD_EDITED
  84. )
  85. response = self.get('common:current_user_details')
  86. self.assertEqual(response.status_code, 200)
  87. def test_user_delete_view_no_permissions(self):
  88. user = get_user_model().objects.create(
  89. username=TEST_USER_TO_DELETE_USERNAME
  90. )
  91. self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
  92. self.role.permissions.add(permission_user_view.stored_permission)
  93. response = self.post(
  94. 'user_management:user_delete', args=(user.pk,)
  95. )
  96. self.assertEqual(response.status_code, 403)
  97. self.assertEqual(get_user_model().objects.count(), 3)
  98. def test_user_delete_view_with_permissions(self):
  99. user = get_user_model().objects.create(
  100. username=TEST_USER_TO_DELETE_USERNAME
  101. )
  102. self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
  103. self.role.permissions.add(permission_user_delete.stored_permission)
  104. self.role.permissions.add(permission_user_view.stored_permission)
  105. response = self.post(
  106. 'user_management:user_delete', args=(user.pk,), follow=True
  107. )
  108. self.assertContains(response, text='deleted', status_code=200)
  109. self.assertEqual(get_user_model().objects.count(), 2)
  110. def test_user_multiple_delete_view_no_permissions(self):
  111. user = get_user_model().objects.create(
  112. username=TEST_USER_TO_DELETE_USERNAME
  113. )
  114. self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
  115. self.role.permissions.add(permission_user_view.stored_permission)
  116. response = self.post(
  117. 'user_management:user_multiple_delete', data={
  118. 'id_list': user.pk
  119. }
  120. )
  121. self.assertEqual(response.status_code, 403)
  122. self.assertEqual(get_user_model().objects.count(), 3)
  123. def test_user_multiple_delete_view_with_permissions(self):
  124. user = get_user_model().objects.create(
  125. username=TEST_USER_TO_DELETE_USERNAME
  126. )
  127. self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
  128. self.role.permissions.add(permission_user_delete.stored_permission)
  129. self.role.permissions.add(permission_user_view.stored_permission)
  130. response = self.post(
  131. 'user_management:user_multiple_delete', data={
  132. 'id_list': user.pk,
  133. }, follow=True
  134. )
  135. self.assertContains(response, text='deleted', status_code=200)
  136. self.assertEqual(get_user_model().objects.count(), 2)
  137. class MetadataLookupIntegrationTestCase(GenericDocumentViewTestCase):
  138. def setUp(self):
  139. super(MetadataLookupIntegrationTestCase, self).setUp()
  140. self.metadata_type = MetadataType.objects.create(
  141. name=TEST_METADATA_TYPE_NAME, label=TEST_METADATA_TYPE_LABEL
  142. )
  143. self.document_type.metadata.create(metadata_type=self.metadata_type)
  144. def test_user_list_lookup_render(self):
  145. self.login(
  146. username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD
  147. )
  148. self.metadata_type.lookup = '{{ users }}'
  149. self.metadata_type.save()
  150. self.document.metadata.create(metadata_type=self.metadata_type)
  151. self.role.permissions.add(
  152. permission_metadata_document_edit.stored_permission
  153. )
  154. response = self.get(
  155. viewname='metadata:metadata_edit', args=(self.document.pk,)
  156. )
  157. self.assertContains(
  158. response, text='<option value="{}">{}</option>'.format(
  159. TEST_USER_USERNAME, TEST_USER_USERNAME
  160. ), status_code=200
  161. )
  162. def test_group_list_lookup_render(self):
  163. self.login(
  164. username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD
  165. )
  166. self.metadata_type.lookup = '{{ groups }}'
  167. self.metadata_type.save()
  168. self.document.metadata.create(metadata_type=self.metadata_type)
  169. self.role.permissions.add(
  170. permission_metadata_document_edit.stored_permission
  171. )
  172. response = self.get(
  173. viewname='metadata:metadata_edit', args=(self.document.pk,)
  174. )
  175. self.assertContains(
  176. response, text='<option value="{}">{}</option>'.format(
  177. Group.objects.first().name, Group.objects.first().name
  178. ), status_code=200
  179. )