feat: expand platform APIs, sources, and test coverage
Some checks failed
CI/CD Pipeline / Run Tests (pull_request) Successful in 1m53s
CI/CD Pipeline / Telegram Notify Success (push) Has been cancelled
CI/CD Pipeline / Run Tests (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (pull_request) Failing after 2m54s
CI/CD Pipeline / Telegram Notify Success (pull_request) Has been skipped
Some checks failed
CI/CD Pipeline / Run Tests (pull_request) Successful in 1m53s
CI/CD Pipeline / Telegram Notify Success (push) Has been cancelled
CI/CD Pipeline / Run Tests (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (pull_request) Failing after 2m54s
CI/CD Pipeline / Telegram Notify Success (pull_request) Has been skipped
This commit is contained in:
@@ -33,6 +33,8 @@ class UserServiceTest(TestCase):
|
||||
self.assertEqual(user.username, self.user_data["username"])
|
||||
self.assertTrue(user.check_password(self.user_data["password"]))
|
||||
self.assertFalse(user.is_verified) # Default value
|
||||
self.assertEqual(UserService.get_user_role(user), UserService.ROLE_USER)
|
||||
self.assertTrue(user.groups.filter(name=UserService.ROLE_USER).exists())
|
||||
|
||||
def test_create_user_with_extra_fields(self):
|
||||
"""Test user creation with extra fields"""
|
||||
@@ -47,6 +49,14 @@ class UserServiceTest(TestCase):
|
||||
self.assertEqual(user.phone, extra_data["phone"])
|
||||
self.assertTrue(user.is_verified)
|
||||
|
||||
def test_create_user_with_admin_role(self):
|
||||
"""Test admin role assignment on creation."""
|
||||
user = UserService.create_user(role=UserService.ROLE_ADMIN, **self.user_data)
|
||||
|
||||
self.assertTrue(user.is_staff)
|
||||
self.assertEqual(UserService.get_user_role(user), UserService.ROLE_ADMIN)
|
||||
self.assertTrue(user.groups.filter(name=UserService.ROLE_ADMIN).exists())
|
||||
|
||||
def test_get_user_by_email_found(self):
|
||||
"""Test getting user by existing email"""
|
||||
found_user = UserService.get_user_by_email(self.user.email)
|
||||
@@ -106,6 +116,31 @@ class UserServiceTest(TestCase):
|
||||
with self.assertRaises(NotFoundError):
|
||||
UserService.update_user(nonexistent_id, username=fake.user_name())
|
||||
|
||||
def test_update_managed_user_updates_role_and_profile(self):
|
||||
"""Test admin update flow changes role and profile names."""
|
||||
updated_user = UserService.update_managed_user(
|
||||
self.user.id,
|
||||
role=UserService.ROLE_ADMIN,
|
||||
first_name="Иван",
|
||||
last_name="Иванов",
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
UserService.get_user_role(updated_user), UserService.ROLE_ADMIN
|
||||
)
|
||||
self.assertTrue(updated_user.is_staff)
|
||||
self.assertEqual(updated_user.profile.first_name, "Иван")
|
||||
self.assertEqual(updated_user.profile.last_name, "Иванов")
|
||||
|
||||
def test_update_managed_user_updates_password(self):
|
||||
raw_password = fake.password(length=12, special_chars=False)
|
||||
updated_user = UserService.update_managed_user(
|
||||
self.user.id,
|
||||
password=raw_password,
|
||||
)
|
||||
|
||||
self.assertTrue(updated_user.check_password(raw_password))
|
||||
|
||||
def test_delete_user_success(self):
|
||||
"""Test successful user deletion"""
|
||||
user_id = self.user.id
|
||||
@@ -121,6 +156,47 @@ class UserServiceTest(TestCase):
|
||||
with self.assertRaises(NotFoundError):
|
||||
UserService.delete_user(nonexistent_id)
|
||||
|
||||
def test_deactivate_user_success(self):
|
||||
"""Test soft deactivation of user."""
|
||||
user = UserService.deactivate_user(self.user.id)
|
||||
self.assertFalse(user.is_active)
|
||||
|
||||
def test_get_user_capabilities_for_admin(self):
|
||||
"""Test admin capabilities set."""
|
||||
admin = UserFactory.create_user(is_staff=True)
|
||||
capabilities = UserService.get_user_capabilities(admin)
|
||||
|
||||
self.assertTrue(capabilities["can_manage_users"])
|
||||
self.assertTrue(capabilities["can_refresh_dashboard"])
|
||||
self.assertIn("exchange", capabilities["settings_sections"])
|
||||
|
||||
def test_get_user_capabilities_for_regular_user(self):
|
||||
"""Test regular user capabilities set."""
|
||||
capabilities = UserService.get_user_capabilities(self.user)
|
||||
|
||||
self.assertFalse(capabilities["can_manage_users"])
|
||||
self.assertFalse(capabilities["can_refresh_dashboard"])
|
||||
self.assertEqual(capabilities["settings_sections"], [])
|
||||
|
||||
def test_get_user_role_uses_admin_group(self):
|
||||
user = UserFactory.create_user(is_staff=False, is_superuser=False)
|
||||
admin_group = UserService.ensure_role_groups()[UserService.ROLE_ADMIN]
|
||||
user.groups.add(admin_group)
|
||||
|
||||
self.assertEqual(UserService.get_user_role(user), UserService.ROLE_ADMIN)
|
||||
|
||||
def test_assign_role_replaces_previous_role_group(self):
|
||||
user = UserFactory.create_user()
|
||||
|
||||
UserService.assign_role(user, UserService.ROLE_ADMIN)
|
||||
|
||||
self.assertTrue(user.groups.filter(name=UserService.ROLE_ADMIN).exists())
|
||||
self.assertFalse(user.groups.filter(name=UserService.ROLE_USER).exists())
|
||||
|
||||
def test_assign_role_rejects_unknown_role(self):
|
||||
with self.assertRaisesMessage(ValueError, "Unsupported role: root"):
|
||||
UserService.assign_role(self.user, "root")
|
||||
|
||||
def test_get_tokens_for_user(self):
|
||||
"""Test JWT token generation"""
|
||||
tokens = UserService.get_tokens_for_user(self.user)
|
||||
|
||||
Reference in New Issue
Block a user