|
|
@@ -16,29 +16,13 @@ class AppTest(APITestCase):
|
|
|
|
|
|
url = reverse('users-api:api-root')
|
|
|
response = self.client.get(f'{url}?format=api', **self.header)
|
|
|
-
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
|
|
|
class UserTest(APIViewTestCases.APIViewTestCase):
|
|
|
model = User
|
|
|
- view_namespace = 'users'
|
|
|
brief_fields = ['display', 'id', 'url', 'username']
|
|
|
validation_excluded_fields = ['password']
|
|
|
- create_data = [
|
|
|
- {
|
|
|
- 'username': 'User_4',
|
|
|
- 'password': 'password4',
|
|
|
- },
|
|
|
- {
|
|
|
- 'username': 'User_5',
|
|
|
- 'password': 'password5',
|
|
|
- },
|
|
|
- {
|
|
|
- 'username': 'User_6',
|
|
|
- 'password': 'password6',
|
|
|
- },
|
|
|
- ]
|
|
|
bulk_update_data = {
|
|
|
'email': 'test@example.com',
|
|
|
}
|
|
|
@@ -46,13 +30,41 @@ class UserTest(APIViewTestCases.APIViewTestCase):
|
|
|
@classmethod
|
|
|
def setUpTestData(cls):
|
|
|
|
|
|
+ permissions = (
|
|
|
+ ObjectPermission(name='Permission 1', actions=['view']),
|
|
|
+ ObjectPermission(name='Permission 2', actions=['view']),
|
|
|
+ ObjectPermission(name='Permission 3', actions=['view']),
|
|
|
+ )
|
|
|
+ ObjectPermission.objects.bulk_create(permissions)
|
|
|
+ permissions[0].object_types.add(ObjectType.objects.get_by_natural_key('dcim', 'site'))
|
|
|
+ permissions[1].object_types.add(ObjectType.objects.get_by_natural_key('dcim', 'location'))
|
|
|
+ permissions[2].object_types.add(ObjectType.objects.get_by_natural_key('dcim', 'rack'))
|
|
|
+
|
|
|
users = (
|
|
|
- User(username='User_1', password='password1'),
|
|
|
- User(username='User_2', password='password2'),
|
|
|
- User(username='User_3', password='password3'),
|
|
|
+ User(username='User1', password='password1'),
|
|
|
+ User(username='User2', password='password2'),
|
|
|
+ User(username='User3', password='password3'),
|
|
|
)
|
|
|
User.objects.bulk_create(users)
|
|
|
|
|
|
+ cls.create_data = [
|
|
|
+ {
|
|
|
+ 'username': 'User4',
|
|
|
+ 'password': 'password4',
|
|
|
+ 'permissions': [permissions[0].pk],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'username': 'User5',
|
|
|
+ 'password': 'password5',
|
|
|
+ 'permissions': [permissions[1].pk],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'username': 'User6',
|
|
|
+ 'password': 'password6',
|
|
|
+ 'permissions': [permissions[2].pk],
|
|
|
+ },
|
|
|
+ ]
|
|
|
+
|
|
|
def test_that_password_is_changed(self):
|
|
|
"""
|
|
|
Test that password is changed
|
|
|
@@ -67,7 +79,7 @@ class UserTest(APIViewTestCases.APIViewTestCase):
|
|
|
obj_perm.object_types.add(ObjectType.objects.get_for_model(self.model))
|
|
|
|
|
|
user_credentials = {
|
|
|
- 'username': 'user1',
|
|
|
+ 'username': 'newuser',
|
|
|
'password': 'abc123',
|
|
|
}
|
|
|
user = User.objects.create_user(**user_credentials)
|
|
|
@@ -76,41 +88,56 @@ class UserTest(APIViewTestCases.APIViewTestCase):
|
|
|
'password': 'newpassword'
|
|
|
}
|
|
|
url = reverse('users-api:user-detail', kwargs={'pk': user.id})
|
|
|
-
|
|
|
response = self.client.patch(url, data, format='json', **self.header)
|
|
|
-
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
-
|
|
|
- updated_user = User.objects.get(id=user.id)
|
|
|
-
|
|
|
- self.assertTrue(updated_user.check_password(data['password']))
|
|
|
+ user.refresh_from_db()
|
|
|
+ self.assertTrue(user.check_password(data['password']))
|
|
|
|
|
|
|
|
|
class GroupTest(APIViewTestCases.APIViewTestCase):
|
|
|
model = Group
|
|
|
- view_namespace = 'users'
|
|
|
brief_fields = ['display', 'id', 'name', 'url']
|
|
|
- create_data = [
|
|
|
- {
|
|
|
- 'name': 'Group 4',
|
|
|
- },
|
|
|
- {
|
|
|
- 'name': 'Group 5',
|
|
|
- },
|
|
|
- {
|
|
|
- 'name': 'Group 6',
|
|
|
- },
|
|
|
- ]
|
|
|
|
|
|
@classmethod
|
|
|
def setUpTestData(cls):
|
|
|
|
|
|
- users = (
|
|
|
+ permissions = (
|
|
|
+ ObjectPermission(name='Permission 1', actions=['view']),
|
|
|
+ ObjectPermission(name='Permission 2', actions=['view']),
|
|
|
+ ObjectPermission(name='Permission 3', actions=['view']),
|
|
|
+ )
|
|
|
+ ObjectPermission.objects.bulk_create(permissions)
|
|
|
+ permissions[0].object_types.add(ObjectType.objects.get_by_natural_key('dcim', 'site'))
|
|
|
+ permissions[1].object_types.add(ObjectType.objects.get_by_natural_key('dcim', 'location'))
|
|
|
+ permissions[2].object_types.add(ObjectType.objects.get_by_natural_key('dcim', 'rack'))
|
|
|
+
|
|
|
+ groups = (
|
|
|
Group(name='Group 1'),
|
|
|
Group(name='Group 2'),
|
|
|
Group(name='Group 3'),
|
|
|
)
|
|
|
- Group.objects.bulk_create(users)
|
|
|
+ Group.objects.bulk_create(groups)
|
|
|
+
|
|
|
+ cls.create_data = [
|
|
|
+ {
|
|
|
+ 'name': 'Group 4',
|
|
|
+ 'permissions': [permissions[0].pk],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'name': 'Group 5',
|
|
|
+ 'permissions': [permissions[1].pk],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 'name': 'Group 6',
|
|
|
+ 'permissions': [permissions[2].pk],
|
|
|
+ },
|
|
|
+ ]
|
|
|
+
|
|
|
+ def model_to_dict(self, instance, *args, **kwargs):
|
|
|
+ # Overwrite permissions attr to work around the serializer field having a different name
|
|
|
+ data = super().model_to_dict(instance, *args, **kwargs)
|
|
|
+ data['permissions'] = list(instance.object_permissions.values_list('id', flat=True))
|
|
|
+ return data
|
|
|
|
|
|
def test_bulk_update_objects(self):
|
|
|
"""
|
|
|
@@ -142,9 +169,9 @@ class TokenTest(
|
|
|
@classmethod
|
|
|
def setUpTestData(cls):
|
|
|
users = (
|
|
|
- create_test_user('User 1'),
|
|
|
- create_test_user('User 2'),
|
|
|
- create_test_user('User 3'),
|
|
|
+ create_test_user('User1'),
|
|
|
+ create_test_user('User2'),
|
|
|
+ create_test_user('User3'),
|
|
|
)
|
|
|
|
|
|
tokens = (
|
|
|
@@ -240,9 +267,7 @@ class ObjectPermissionTest(
|
|
|
APIViewTestCases.DeleteObjectViewTestCase
|
|
|
):
|
|
|
model = ObjectPermission
|
|
|
- brief_fields = [
|
|
|
- 'actions', 'description', 'display', 'enabled', 'groups', 'id', 'name', 'object_types', 'url', 'users',
|
|
|
- ]
|
|
|
+ brief_fields = ['actions', 'description', 'display', 'enabled', 'id', 'name', 'object_types', 'url']
|
|
|
|
|
|
@classmethod
|
|
|
def setUpTestData(cls):
|
|
|
@@ -255,9 +280,9 @@ class ObjectPermissionTest(
|
|
|
Group.objects.bulk_create(groups)
|
|
|
|
|
|
users = (
|
|
|
- User(username='User 1', is_active=True),
|
|
|
- User(username='User 2', is_active=True),
|
|
|
- User(username='User 3', is_active=True),
|
|
|
+ User(username='User1', is_active=True),
|
|
|
+ User(username='User2', is_active=True),
|
|
|
+ User(username='User3', is_active=True),
|
|
|
)
|
|
|
User.objects.bulk_create(users)
|
|
|
|