Fix admin API gaps for users, exchange checks, and parser logs
This commit is contained in:
@@ -224,6 +224,34 @@ class AdminUserManagementViewTest(APITestCase):
|
||||
self.assertIn(self.admin.username, usernames)
|
||||
self.assertIn(self.user.username, usernames)
|
||||
|
||||
def test_admin_can_search_users(self):
|
||||
ProfileFactory.create_profile(
|
||||
user=self.user,
|
||||
first_name="Сергей",
|
||||
middle_name="Петрович",
|
||||
last_name="Иванов",
|
||||
)
|
||||
another = UserFactory.create_user()
|
||||
ProfileFactory.create_profile(user=another, first_name="Илья")
|
||||
|
||||
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]
|
||||
self.assertEqual(usernames, [self.user.username])
|
||||
|
||||
def test_admin_can_order_users(self):
|
||||
first = UserFactory.create_user()
|
||||
second = UserFactory.create_user()
|
||||
ProfileFactory.create_profile(user=first, first_name="Борис")
|
||||
ProfileFactory.create_profile(user=second, first_name="Алексей")
|
||||
|
||||
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]
|
||||
self.assertLess(ordered_ids.index(second.id), ordered_ids.index(first.id))
|
||||
|
||||
def test_admin_can_create_user_with_role(self):
|
||||
password = fake.password(length=12, special_chars=False)
|
||||
payload = {
|
||||
@@ -233,6 +261,7 @@ class AdminUserManagementViewTest(APITestCase):
|
||||
"password": password,
|
||||
"role": "admin",
|
||||
"first_name": "Петр",
|
||||
"middle_name": "Петрович",
|
||||
"last_name": "Петров",
|
||||
}
|
||||
|
||||
@@ -243,13 +272,19 @@ class AdminUserManagementViewTest(APITestCase):
|
||||
self.assertTrue(created.is_staff)
|
||||
self.assertEqual(response.data["role"], "admin")
|
||||
self.assertEqual(created.profile.first_name, "Петр")
|
||||
self.assertEqual(created.profile.middle_name, "Петрович")
|
||||
|
||||
def test_admin_can_update_user_and_role(self):
|
||||
url = reverse("api_v1:user:admin-user-detail", args=[self.user.id])
|
||||
|
||||
response = self.client.patch(
|
||||
url,
|
||||
{"role": "admin", "first_name": "Иван", "is_verified": True},
|
||||
{
|
||||
"role": "admin",
|
||||
"first_name": "Иван",
|
||||
"middle_name": "Иванович",
|
||||
"is_verified": True,
|
||||
},
|
||||
format="json",
|
||||
)
|
||||
|
||||
@@ -258,6 +293,7 @@ class AdminUserManagementViewTest(APITestCase):
|
||||
self.assertTrue(self.user.is_staff)
|
||||
self.assertTrue(self.user.is_verified)
|
||||
self.assertEqual(self.user.profile.first_name, "Иван")
|
||||
self.assertEqual(self.user.profile.middle_name, "Иванович")
|
||||
|
||||
def test_admin_can_get_user_detail(self):
|
||||
url = reverse("api_v1:user:admin-user-detail", args=[self.user.id])
|
||||
@@ -302,6 +338,17 @@ class AdminUserManagementViewTest(APITestCase):
|
||||
self.user.refresh_from_db()
|
||||
self.assertFalse(self.user.is_active)
|
||||
|
||||
def test_admin_can_activate_user(self):
|
||||
self.user.is_active = False
|
||||
self.user.save(update_fields=["is_active"])
|
||||
url = reverse("api_v1:user:admin-user-activate", args=[self.user.id])
|
||||
|
||||
response = self.client.post(url, {}, format="json")
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.user.refresh_from_db()
|
||||
self.assertTrue(self.user.is_active)
|
||||
|
||||
def test_admin_cannot_deactivate_self(self):
|
||||
url = reverse("api_v1:user:admin-user-deactivate", args=[self.admin.id])
|
||||
|
||||
@@ -330,6 +377,7 @@ class ProfileDetailViewTest(APITestCase):
|
||||
|
||||
self.update_data = {
|
||||
"first_name": fake.first_name(),
|
||||
"middle_name": fake.first_name(),
|
||||
"last_name": fake.last_name(),
|
||||
"bio": fake.text(max_nb_chars=200),
|
||||
}
|
||||
@@ -340,6 +388,7 @@ class ProfileDetailViewTest(APITestCase):
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(response.data["first_name"], self.profile.first_name)
|
||||
self.assertEqual(response.data["middle_name"], self.profile.middle_name)
|
||||
|
||||
def test_update_profile_success(self):
|
||||
"""Test successful profile update"""
|
||||
@@ -347,6 +396,7 @@ class ProfileDetailViewTest(APITestCase):
|
||||
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(response.data["first_name"], self.update_data["first_name"])
|
||||
self.assertEqual(response.data["middle_name"], self.update_data["middle_name"])
|
||||
self.assertEqual(response.data["last_name"], self.update_data["last_name"])
|
||||
|
||||
# Verify in database
|
||||
|
||||
Reference in New Issue
Block a user