test_api.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. from django.contrib.auth.models import Group, User
  2. from django.contrib.contenttypes.models import ContentType
  3. from django.test import override_settings
  4. from django.urls import reverse
  5. from rest_framework import status
  6. from users.models import ObjectPermission
  7. from utilities.testing import APIViewTestCases, APITestCase, disable_warnings
  8. class AppTest(APITestCase):
  9. def test_root(self):
  10. url = reverse('users-api:api-root')
  11. response = self.client.get('{}?format=api'.format(url), **self.header)
  12. self.assertEqual(response.status_code, 200)
  13. class UserTest(APIViewTestCases.APIViewTestCase):
  14. model = User
  15. view_namespace = 'users'
  16. brief_fields = ['id', 'url', 'username']
  17. validation_excluded_fields = ['password']
  18. create_data = [
  19. {
  20. 'username': 'User_4',
  21. 'password': 'password4',
  22. },
  23. {
  24. 'username': 'User_5',
  25. 'password': 'password5',
  26. },
  27. {
  28. 'username': 'User_6',
  29. 'password': 'password6',
  30. },
  31. ]
  32. @classmethod
  33. def setUpTestData(cls):
  34. users = (
  35. User(username='User_1'),
  36. User(username='User_2'),
  37. User(username='User_3'),
  38. )
  39. User.objects.bulk_create(users)
  40. class GroupTest(APIViewTestCases.APIViewTestCase):
  41. model = Group
  42. view_namespace = 'users'
  43. brief_fields = ['id', 'name', 'url']
  44. create_data = [
  45. {
  46. 'name': 'Group 4',
  47. },
  48. {
  49. 'name': 'Group 5',
  50. },
  51. {
  52. 'name': 'Group 6',
  53. },
  54. ]
  55. @classmethod
  56. def setUpTestData(cls):
  57. users = (
  58. Group(name='Group 1'),
  59. Group(name='Group 2'),
  60. Group(name='Group 3'),
  61. )
  62. Group.objects.bulk_create(users)
  63. class ObjectPermissionTest(APIViewTestCases.APIViewTestCase):
  64. model = ObjectPermission
  65. brief_fields = ['actions', 'enabled', 'groups', 'id', 'name', 'object_types', 'url', 'users']
  66. @classmethod
  67. def setUpTestData(cls):
  68. groups = (
  69. Group(name='Group 1'),
  70. Group(name='Group 2'),
  71. Group(name='Group 3'),
  72. )
  73. Group.objects.bulk_create(groups)
  74. users = (
  75. User(username='User 1', is_active=True),
  76. User(username='User 2', is_active=True),
  77. User(username='User 3', is_active=True),
  78. )
  79. User.objects.bulk_create(users)
  80. object_type = ContentType.objects.get(app_label='dcim', model='device')
  81. for i in range(0, 3):
  82. objectpermission = ObjectPermission(
  83. name=f'Permission {i+1}',
  84. actions=['view', 'add', 'change', 'delete'],
  85. constraints={'name': f'TEST{i+1}'}
  86. )
  87. objectpermission.save()
  88. objectpermission.object_types.add(object_type)
  89. objectpermission.groups.add(groups[i])
  90. objectpermission.users.add(users[i])
  91. cls.create_data = [
  92. {
  93. 'name': 'Permission 4',
  94. 'object_types': ['dcim.site'],
  95. 'groups': [groups[0].pk],
  96. 'users': [users[0].pk],
  97. 'actions': ['view', 'add', 'change', 'delete'],
  98. 'constraints': {'name': 'TEST4'},
  99. },
  100. {
  101. 'name': 'Permission 5',
  102. 'object_types': ['dcim.site'],
  103. 'groups': [groups[1].pk],
  104. 'users': [users[1].pk],
  105. 'actions': ['view', 'add', 'change', 'delete'],
  106. 'constraints': {'name': 'TEST5'},
  107. },
  108. {
  109. 'name': 'Permission 6',
  110. 'object_types': ['dcim.site'],
  111. 'groups': [groups[2].pk],
  112. 'users': [users[2].pk],
  113. 'actions': ['view', 'add', 'change', 'delete'],
  114. 'constraints': {'name': 'TEST6'},
  115. },
  116. ]