Skip to content

Commit 4a1570d

Browse files
authored
Fix delete user rout (#206)
## Изменения При удалении юзера юзер ... удаляется. ## Детали реализации Помимо удаления юзера добавлено удаление соединений юзера с его группами (soft-delete) <!-- Resolve #204 --> ## Check-List <!-- После сохранения у следующих полей появятся галочки, которые нужно проставить мышкой --> - [ ] Вы проверили свой код перед отправкой запроса? - [ ] Вы написали тесты к реализованным функциям? - [ ] Вы не забыли применить форматирование `black` и `isort` для _Back-End_ или `Prettier` для _Front-End_?
1 parent e6154d8 commit 4a1570d

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

auth_backend/routes/user.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ async def delete_user(
160160
# Удаляем AuthMethod
161161
AuthMethod.delete(method.id, session=db.session)
162162
logger.info(f'{method=} for {user.id=} deleted')
163-
164163
User.delete(user_id, session=db.session)
164+
db.session.commit()
165165
await AuthPluginMeta.user_updated(None, old_user)
166166
logger.info(f'{user=} deleted')

tests/test_routes/test_user.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from sqlalchemy.orm import Session
55

66
from auth_backend.models import AuthMethod, User
7-
from auth_backend.models.db import Group
7+
from auth_backend.models.db import Group, GroupScope, UserGroup
88

99

1010
def test_user_email(client: TestClient, dbsession: Session, user_factory):
@@ -23,3 +23,23 @@ def test_user_email(client: TestClient, dbsession: Session, user_factory):
2323
gr = Group.get(group, session=dbsession)
2424
dbsession.delete(gr)
2525
dbsession.commit()
26+
27+
28+
def test_delete_user(client: TestClient, dbsession: Session, user_factory):
29+
user1 = user_factory(client)
30+
time1 = datetime.utcnow()
31+
email_user = AuthMethod(user_id=user1, param="email", auth_method="email", value="testemailx@x.xy")
32+
dbsession.add(email_user)
33+
dbsession.commit()
34+
body = {"name": f"group{time1}", "parent_id": None, "scopes": []}
35+
group = client.post(url="/group", json=body).json()["id"]
36+
client.patch(f"/user/{user1}", json={"groups": [group]})
37+
resp = client.delete(f"user/{user1}")
38+
assert resp.status_code == 200
39+
user = dbsession.query(User).filter(User.id == user1).one_or_none()
40+
assert user.is_deleted
41+
dbsession.delete(email_user)
42+
dbsession.query(GroupScope).filter(GroupScope.group_id == group).delete()
43+
dbsession.query(UserGroup).filter(UserGroup.group_id == group).delete()
44+
dbsession.query(Group).filter(Group.id == group).delete()
45+
dbsession.commit()

0 commit comments

Comments
 (0)