[Mineur] Channels d'event : orphelins, suppression en cascade inverse et nom vide #127
Labels
No labels
bug
enhancement
feature
groupe/chat-data
groupe/friends-blocking
groupe/input-validation
groupe/realtime-presence
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Transcendence/backend#127
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Gravité : Mineur
Rapports QA d'origine : EVENTS-08, EVENTS-09, EVENTS-16, EVENTS-05
Le channel survit à la suppression de l'event ; un échec de création laisse un channel orphelin diffusé à tous ; supprimer le channel supprime l'event ; un nom
!!!donne un channel au nom vide.Détails des rapports
[EVENTS-08] Channels orphelins : le channel d'un event survit à la suppression de l'event (messages inclus) — Gravité : Mineur
DELETE /api/events/{id}(et CleanUp)DELETE /events/E2-> 204. 4.GET /channels/GET /channels/C2/messages.GET /channelscontient toujours C2 aveceventId= id de l'event supprimé ;GET /channels/C2/messages-> 200 avec les messages, lisibles par tout user connecté qui connaît l'id. Avant mes tests la base contenait déjà 5 channels d'events disparus (default-event,testx3,super).!ch.eventId(frontend/src/components/Sidebar/Sidebar.tsx:60), donc le channel orphelin n'apparaît pas dans l'UI, mais s'accumule en base.Event.ChannelIdenOnDelete(Cascade)(backend/API/Database.cs:30-32) : supprimer le channel supprime l'event, pas l'inverse.DeleteEventCommand.cs:18etCleanUp/CleanUp.cs:64ne suppriment pas le channel.[EVENTS-09] Échec de création d'event -> channel orphelin créé et diffusé à tout le monde — Gravité : Mineur
POST /api/eventsqui échoue après la création du channel (ex.tags: nulloudescription: null-> 500)qa_events_null_tags,qa_events_nulltags2, ...) reste dansGET /api/channelsavec uneventIdinexistant ; en plusCreateChannelCommandenvoieNewChannelà tous les clients connectés (le channel apparaît dans leur liste).CreateEventCommand.cs:46-57crée/sauvegarde le channel (viaCreateChannelCommand, qui fait son propreSaveChanges+ broadcasthub.Clients.All) avant de sauver l'event ; pas de transaction.[EVENTS-16] Supprimer le channel d'un event (DELETE /channels/{id}) supprime l'event et ses inscriptions en cascade — Gravité : Mineur
DELETE /channels/{C3}(admin) -> 204 ;GET /events/{E3}-> 404. Le sens de la FK est inversé par rapport à l'attente (event supprimé -> channel conservé ; channel supprimé -> event supprimé).Database.cs:28-32. Pas de garde dansDeleteChannelCommand.cspour les channels portant unEventId, ni de mise à jour RAG.[EVENTS-05] Nom composé uniquement de caractères spéciaux (ex. `!!!`) -> channel d'event avec nom vide — Gravité : Mineur
POST /api/eventsavecname: "!!!"name: "".CreateEventCommand.cs:46(ChannelSlug.Sanitizerenvoie "" etCreateChannelCommandne rejette pas le nom vide, regexChannelNameValidationne matche pas "").Trouvé par une campagne de tests QA automatisés (agents Claude, Playwright) sur l'environnement de dev. Les captures citées sont locales et non jointes.