fix(api): align admin users contracts
This commit is contained in:
@@ -254,7 +254,7 @@ class AdminUserManagementViewTest(APITestCase):
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(
|
||||
set(response.data["results"][0].keys()),
|
||||
set(response.data[0].keys()),
|
||||
{
|
||||
"id",
|
||||
"username",
|
||||
@@ -263,14 +263,9 @@ class AdminUserManagementViewTest(APITestCase):
|
||||
"is_active",
|
||||
"role",
|
||||
"role_label",
|
||||
"profile",
|
||||
},
|
||||
)
|
||||
self.assertEqual(
|
||||
set(response.data["results"][0]["profile"].keys()),
|
||||
{"first_name", "middle_name", "last_name", "full_name"},
|
||||
)
|
||||
usernames = {item["username"] for item in response.data["results"]}
|
||||
usernames = {item["username"] for item in response.data}
|
||||
self.assertIn(self.admin.username, usernames)
|
||||
self.assertIn(self.user.username, usernames)
|
||||
|
||||
@@ -287,7 +282,7 @@ class AdminUserManagementViewTest(APITestCase):
|
||||
response = self.client.get(self.list_url, {"search": "Петрович"})
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
usernames = [item["username"] for item in response.data["results"]]
|
||||
usernames = [item["username"] for item in response.data]
|
||||
self.assertEqual(usernames, [self.user.username])
|
||||
|
||||
def test_admin_can_order_users(self):
|
||||
@@ -299,7 +294,7 @@ class AdminUserManagementViewTest(APITestCase):
|
||||
response = self.client.get(self.list_url, {"ordering": "first_name"})
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
ordered_ids = [item["id"] for item in response.data["results"]]
|
||||
ordered_ids = [item["id"] for item in response.data]
|
||||
self.assertLess(ordered_ids.index(second.id), ordered_ids.index(first.id))
|
||||
|
||||
def test_admin_can_create_user_with_role(self):
|
||||
@@ -336,6 +331,51 @@ class AdminUserManagementViewTest(APITestCase):
|
||||
self.assertEqual(created.profile.first_name, "Петр")
|
||||
self.assertEqual(created.profile.middle_name, "Петрович")
|
||||
|
||||
def test_admin_create_user_returns_duplicate_email_error(self):
|
||||
payload = {
|
||||
"email": self.user.email,
|
||||
"username": fake.unique.user_name(),
|
||||
"password": fake.password(length=12, special_chars=False),
|
||||
"role": "user",
|
||||
"first_name": "Петр",
|
||||
"last_name": "Петров",
|
||||
}
|
||||
|
||||
response = self.client.post(self.list_url, payload, format="json")
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertIn("email", response.data["errors"][0]["details"]["fields"])
|
||||
|
||||
def test_admin_create_user_returns_duplicate_username_error(self):
|
||||
payload = {
|
||||
"email": fake.unique.email(),
|
||||
"username": self.user.username,
|
||||
"password": fake.password(length=12, special_chars=False),
|
||||
"role": "user",
|
||||
"first_name": "Петр",
|
||||
"last_name": "Петров",
|
||||
}
|
||||
|
||||
response = self.client.post(self.list_url, payload, format="json")
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertIn("username", response.data["errors"][0]["details"]["fields"])
|
||||
|
||||
def test_admin_create_user_returns_password_validation_error(self):
|
||||
payload = {
|
||||
"email": fake.unique.email(),
|
||||
"username": fake.unique.user_name(),
|
||||
"password": "123",
|
||||
"role": "user",
|
||||
"first_name": "Петр",
|
||||
"last_name": "Петров",
|
||||
}
|
||||
|
||||
response = self.client.post(self.list_url, payload, format="json")
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertIn("password", response.data["errors"][0]["details"]["fields"])
|
||||
|
||||
def test_admin_can_update_user_and_role(self):
|
||||
url = reverse("api_v1:user:admin-user-detail", args=[self.user.id])
|
||||
|
||||
@@ -382,6 +422,44 @@ class AdminUserManagementViewTest(APITestCase):
|
||||
{"first_name", "middle_name", "last_name", "full_name"},
|
||||
)
|
||||
|
||||
def test_admin_patch_user_returns_duplicate_email_error(self):
|
||||
another = UserFactory.create_user()
|
||||
url = reverse("api_v1:user:admin-user-detail", args=[another.id])
|
||||
|
||||
response = self.client.patch(
|
||||
url,
|
||||
{"email": self.user.email},
|
||||
format="json",
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertIn("email", response.data["errors"][0]["details"]["fields"])
|
||||
|
||||
def test_admin_patch_user_returns_duplicate_username_error(self):
|
||||
another = UserFactory.create_user()
|
||||
url = reverse("api_v1:user:admin-user-detail", args=[another.id])
|
||||
|
||||
response = self.client.patch(
|
||||
url,
|
||||
{"username": self.user.username},
|
||||
format="json",
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertIn("username", response.data["errors"][0]["details"]["fields"])
|
||||
|
||||
def test_admin_patch_user_returns_password_validation_error(self):
|
||||
url = reverse("api_v1:user:admin-user-detail", args=[self.user.id])
|
||||
|
||||
response = self.client.patch(
|
||||
url,
|
||||
{"password": "123"},
|
||||
format="json",
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
||||
self.assertIn("password", response.data["errors"][0]["details"]["fields"])
|
||||
|
||||
def test_admin_cannot_patch_self_to_inactive(self):
|
||||
url = reverse("api_v1:user:admin-user-detail", args=[self.admin.id])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user