Skip to content

Commit c8f5803

Browse files
fregataaclaude
andcommitted
fix(BA-3696): Fix UserCreateSpec/UserUpdateSpec imports and add missing user_uuid to DeleteUserAction
Import UserCreateSpec and UserUpdateSpec from their canonical location (services/user/types) instead of action submodules that don't re-export them. Add required user_uuid argument to DeleteUserAction calls in tests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent f5a0e5a commit c8f5803

5 files changed

Lines changed: 10 additions & 17 deletions

File tree

src/ai/backend/manager/api/gql/user/resolver/mutation.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,9 @@
3939
from ai.backend.manager.repositories.base.creator import Creator
4040
from ai.backend.manager.repositories.user.creators import UserCreatorSpec
4141
from ai.backend.manager.repositories.user.updaters import UserUpdaterSpec
42-
from ai.backend.manager.services.user.actions.create_user import (
43-
BulkCreateUserAction,
44-
UserCreateSpec,
45-
)
46-
from ai.backend.manager.services.user.actions.modify_user import (
47-
BulkModifyUserAction,
48-
UserUpdateSpec,
49-
)
42+
from ai.backend.manager.services.user.actions.create_user import BulkCreateUserAction
43+
from ai.backend.manager.services.user.actions.modify_user import BulkModifyUserAction
44+
from ai.backend.manager.services.user.types import UserCreateSpec, UserUpdateSpec
5045
from ai.backend.manager.services.user.actions.purge_user import BulkPurgeUserAction
5146
from ai.backend.manager.types import OptionalState, TriState
5247

tests/unit/manager/repositories/user/test_user_repository.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@
5151
from ai.backend.manager.repositories.user.creators import UserCreatorSpec
5252
from ai.backend.manager.repositories.user.repository import UserRepository
5353
from ai.backend.manager.repositories.user.updaters import UserUpdaterSpec
54-
from ai.backend.manager.services.user.actions.create_user import UserCreateSpec
55-
from ai.backend.manager.services.user.actions.modify_user import UserUpdateSpec
54+
from ai.backend.manager.services.user.types import UserCreateSpec, UserUpdateSpec
5655
from ai.backend.manager.types import OptionalState
5756
from ai.backend.testutils.db import with_tables
5857

tests/unit/manager/services/test_users.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ async def test_delete_existing_user_returns_success(
358358
"""Delete existing user should return success result."""
359359
mock_user_repository.soft_delete_user_validated = AsyncMock(return_value=None)
360360

361-
action = DeleteUserAction(email="test@example.com")
361+
action = DeleteUserAction(user_uuid=uuid.uuid4(), email="test@example.com")
362362

363363
result = await service.delete_user(action)
364364

@@ -377,7 +377,7 @@ async def test_delete_nonexistent_user_raises_error(
377377
side_effect=UserNotFound("User not found")
378378
)
379379

380-
action = DeleteUserAction(email="nonexistent@example.com")
380+
action = DeleteUserAction(user_uuid=uuid.uuid4(), email="nonexistent@example.com")
381381

382382
with pytest.raises(UserNotFound):
383383
await service.delete_user(action)

tests/unit/manager/services/user/test_user.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ async def test_delete_user_action_structure(
189189
"""Test that DeleteUserAction works as expected."""
190190
mock_dependencies["user_repository"].soft_delete_user_validated = AsyncMock()
191191

192-
action = DeleteUserAction(email="user@example.com")
192+
action = DeleteUserAction(user_uuid=uuid.uuid4(), email="user@example.com")
193193
await user_service.delete_user(action)
194194

195195
mock_dependencies["user_repository"].soft_delete_user_validated.assert_called_once_with(

tests/unit/manager/services/user/test_user_service.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,13 @@
4646
from ai.backend.manager.services.user.actions.create_user import (
4747
BulkCreateUserAction,
4848
CreateUserAction,
49-
UserCreateSpec,
5049
)
50+
from ai.backend.manager.services.user.types import UserCreateSpec, UserUpdateSpec
5151
from ai.backend.manager.services.user.actions.delete_user import DeleteUserAction
5252
from ai.backend.manager.services.user.actions.get_user import GetUserAction
5353
from ai.backend.manager.services.user.actions.modify_user import (
5454
BulkModifyUserAction,
5555
ModifyUserAction,
56-
UserUpdateSpec,
5756
)
5857
from ai.backend.manager.services.user.actions.purge_user import (
5958
BulkPurgeUserAction,
@@ -744,7 +743,7 @@ async def test_soft_delete_succeeds(
744743
"""Email soft delete calls repository."""
745744
mock_user_repository.soft_delete_user_validated = AsyncMock(return_value=None)
746745

747-
action = DeleteUserAction(email="user@example.com")
746+
action = DeleteUserAction(user_uuid=uuid.uuid4(), email="user@example.com")
748747
result = await service.delete_user(action)
749748

750749
assert result is not None
@@ -762,7 +761,7 @@ async def test_nonexistent_email_raises_not_found(
762761
side_effect=UserNotFound("User not found")
763762
)
764763

765-
action = DeleteUserAction(email="missing@example.com")
764+
action = DeleteUserAction(user_uuid=uuid.uuid4(), email="missing@example.com")
766765

767766
with pytest.raises(UserNotFound):
768767
await service.delete_user(action)

0 commit comments

Comments
 (0)