PD-84 — Matrice de traçabilité TC-* → Fichiers de test¶
Services¶
| Test Case | Description | Fichier de test | Invariant/CA |
|---|---|---|---|
| TC-01 | Create folder — FREE, under quota | test/unit/modules/freemium/services/folder.service.spec.ts | CA-84-01, CA-84-02, F-84-01 |
| TC-02 | Create folder — quota limit → 422 + CTA | test/unit/modules/freemium/services/folder.service.spec.ts | INV-84-04, INV-84-07, INV-84-11 |
| TC-03 | Close folder — ACTIVE → CLOSED_READ_ONLY | test/unit/modules/freemium/services/folder.service.spec.ts | INV-84-08, CA-84-07 |
| TC-04 | Close folder — already closed → 409 | test/unit/modules/freemium/services/folder.service.spec.ts | ECT-12 |
| TC-05 | List folders — active + closed | test/unit/modules/freemium/services/folder.service.spec.ts | CA-84-06 |
| TC-06 | Add document — under quota | test/unit/modules/freemium/services/folder-document.service.spec.ts | CA-84-03, F-84-02 |
| TC-07 | Add document — quota limit → 422 + CTA | test/unit/modules/freemium/services/folder-document.service.spec.ts | INV-84-04, INV-84-11 |
| TC-08 | Add document to closed folder → 422 | test/unit/modules/freemium/services/folder-document.service.spec.ts | CA-84-08 |
| TC-09 | FREE capabilities (all false) | test/unit/modules/freemium/services/capability.service.spec.ts | INV-84-06 |
| TC-09-bis | PREMIUM capabilities (all true) | test/unit/modules/freemium/services/capability.service.spec.ts | INV-84-06 |
| TC-10 | Change plan FREE → PREMIUM | test/unit/modules/freemium/services/plan.service.spec.ts | INV-84-05, INV-84-06 |
| TC-10-bis | PlanStubGuard blocks when disabled | test/unit/modules/freemium/guards/plan-stub.guard.spec.ts | ECT-v2-05, SEC-84-02 |
Limites et Concurrence¶
| Test Case | Description | Fichier de test | Invariant/CA |
|---|---|---|---|
| TC-LIM-01 | pg_advisory_xact_lock on folder creation | test/unit/modules/freemium/services/folder.service.spec.ts | INV-84-04 |
| TC-LIM-02 | pg_advisory_xact_lock on document addition | test/unit/modules/freemium/services/folder-document.service.spec.ts | INV-84-04 |
SLA¶
| Test Case | Description | Fichier de test | Invariant/CA |
|---|---|---|---|
| TC-SLA-01 | duration_ms tracking | test/unit/modules/freemium/services/plan.service.spec.ts | SLA-84-01 |
Audit¶
| Test Case | Description | Fichier de test | Invariant/CA |
|---|---|---|---|
| TC-AUD-01 | Audit folder creation | test/unit/modules/freemium/services/folder.service.spec.ts | INV-84-15 |
| TC-AUD-02 | Audit quota refusal (folder) | test/unit/modules/freemium/services/folder.service.spec.ts | INV-84-15, SEC-84-03 |
| TC-AUD-03 | Audit folder closure | test/unit/modules/freemium/services/folder.service.spec.ts | INV-84-15 |
| TC-AUD-04 | Audit document quota refusal | test/unit/modules/freemium/services/folder-document.service.spec.ts | INV-84-15 |
| TC-AUD-05 | Audit plan change | test/unit/modules/freemium/services/plan.service.spec.ts | INV-84-15 |
| TC-AUD-06 | Audit export refusal | test/unit/modules/freemium/controllers/export.controller.spec.ts | ECT-11, INV-84-15 |
Sécurité¶
| Test Case | Description | Fichier de test | Invariant/CA |
|---|---|---|---|
| TC-SEC-01 | Owner can access folder | test/unit/modules/freemium/guards/folder-owner.guard.spec.ts | SEC-84-02 |
| TC-SEC-02 | Non-owner → 404 (neutral error) | test/unit/modules/freemium/guards/folder-owner.guard.spec.ts | SEC-84-02, INV-84-12 |
| TC-SEC-03 | No userId → 404 | test/unit/modules/freemium/guards/folder-owner.guard.spec.ts | SEC-84-02 |
| TC-SEC-04 | Stub endpoint returns 404 (invisible) | test/unit/modules/freemium/guards/plan-stub.guard.spec.ts | INV-84-09, SEC-84-02 |
| TC-SEC-05 | Triple verrou — runtime guard | test/unit/modules/freemium/guards/plan-stub.guard.spec.ts | INV-84-09 |
Erreurs¶
| Test Case | Description | Fichier de test | Invariant/CA |
|---|---|---|---|
| TC-ERR-01 | Error response: code + non-empty message | test/unit/modules/freemium/exceptions/freemium.exception.spec.ts | Spec §6.1 |
| TC-ERR-02 | HTTP status mapping | test/unit/modules/freemium/exceptions/freemium.exception.spec.ts | Spec §6.1 |
| TC-ERR-03 | upgrade_cta for quota/premium errors | test/unit/modules/freemium/exceptions/freemium.exception.spec.ts | INV-84-07 |
Export¶
| Test Case | Description | Fichier de test | Invariant/CA |
|---|---|---|---|
| TC-EXP-01 | FREE → export refused (422) | test/unit/modules/freemium/controllers/export.controller.spec.ts | INV-84-14, CA-84-05 |
| TC-EXP-02 | PREMIUM → 501 (PD-85 stub) | test/unit/modules/freemium/controllers/export.controller.spec.ts | PD-85 |
Contrôleurs¶
| Test Case | Description | Fichier de test | Invariant/CA |
|---|---|---|---|
| TC-CTRL-01 | POST /folders delegation | test/unit/modules/freemium/controllers/folder.controller.spec.ts | CA-84-01 |
| TC-CTRL-02 | GET /folders delegation | test/unit/modules/freemium/controllers/folder.controller.spec.ts | CA-84-06 |
| TC-CTRL-03 | GET /folders/:id delegation | test/unit/modules/freemium/controllers/folder.controller.spec.ts | — |
| TC-CTRL-04 | POST /folders/:id/close delegation | test/unit/modules/freemium/controllers/folder.controller.spec.ts | CA-84-07 |
| TC-CTRL-05 | GET /capabilities | test/unit/modules/freemium/controllers/capability.controller.spec.ts | INV-84-06 |
| TC-CTRL-06 | PUT /account/plan delegation | test/unit/modules/freemium/controllers/plan.controller.spec.ts | INV-84-05 |
| TC-CTRL-07 | POST /folders/:id/documents delegation | test/unit/modules/freemium/controllers/folder-document.controller.spec.ts | CA-84-03 |
DTOs¶
| Test Case | Description | Fichier de test | Invariant/CA |
|---|---|---|---|
| TC-DTO-01 | CreateFolderDto valid input | test/unit/modules/freemium/dto/create-folder.dto.spec.ts | — |
| TC-DTO-02 | CreateFolderDto missing display_name | test/unit/modules/freemium/dto/create-folder.dto.spec.ts | — |
| TC-DTO-03 | CreateFolderDto invalid category | test/unit/modules/freemium/dto/create-folder.dto.spec.ts | F-84-19 |
| TC-DTO-04 | CreateFolderDto max length | test/unit/modules/freemium/dto/create-folder.dto.spec.ts | — |
| TC-DTO-05 | ChangePlanDto valid plan_type | test/unit/modules/freemium/dto/change-plan.dto.spec.ts | — |
| TC-DTO-06 | ChangePlanDto invalid plan_type | test/unit/modules/freemium/dto/change-plan.dto.spec.ts | — |
| TC-DTO-07 | FolderResponseDto field mapping | test/unit/modules/freemium/dto/folder-response.dto.spec.ts | — |
Invariants¶
| Test Case | Description | Fichier de test | Invariant/CA |
|---|---|---|---|
| TC-INV-01 | Same sealing pipeline FREE/PREMIUM | test/unit/modules/freemium/services/folder-document.service.spec.ts | INV-84-01, INV-84-02 |
| TC-INV-05 | Premium upgrade immediate | test/unit/modules/freemium/services/plan.service.spec.ts | INV-84-05 |
| TC-INV-06 | Capabilities computed (never cached) | test/unit/modules/freemium/services/capability.service.spec.ts | INV-84-06 |
| TC-INV-07 | export_cta for FREE plan | test/unit/modules/freemium/dto/folder-response.dto.spec.ts | INV-84-07 |
| TC-INV-12 | No content field in response | test/unit/modules/freemium/dto/folder-response.dto.spec.ts | INV-84-12 |
Non-régression¶
| Test Case | Description | Fichier de test | Invariant/CA |
|---|---|---|---|
| TC-NR-01 | Enum values stability | test/unit/modules/freemium/freemium-nonreg.spec.ts | Migration compat |
| TC-NR-02 | Error codes completeness | test/unit/modules/freemium/freemium-nonreg.spec.ts | Spec §6.1 |
| TC-NR-03 | FREE plan export_cta contract | test/unit/modules/freemium/freemium-nonreg.spec.ts | INV-84-07 |
| TC-NR-04 | Folder status transitions (2 states only) | test/unit/modules/freemium/freemium-nonreg.spec.ts | INV-84-08 |
Résumé¶
| Catégorie | Nombre de TC |
|---|---|
| Services | 12 |
| Limites/Concurrence | 2 |
| SLA | 1 |
| Audit | 6 |
| Sécurité | 5 |
| Erreurs | 3 |
| Export | 2 |
| Contrôleurs | 7 |
| DTOs | 7 |
| Invariants | 5 |
| Non-régression | 4 |
| TOTAL | 54 |
Fichiers de test¶
| Fichier | TC couverts |
|---|---|
services/folder.service.spec.ts | TC-01, TC-02, TC-03, TC-04, TC-05, TC-LIM-01, TC-AUD-01, TC-AUD-02, TC-AUD-03 |
services/folder-document.service.spec.ts | TC-06, TC-07, TC-08, TC-INV-01, TC-LIM-02, TC-AUD-04 |
services/capability.service.spec.ts | TC-09, TC-09-bis, TC-INV-06 |
services/plan.service.spec.ts | TC-10, TC-SLA-01, TC-INV-05, TC-AUD-05 |
guards/folder-owner.guard.spec.ts | TC-SEC-01, TC-SEC-02, TC-SEC-03 |
guards/plan-stub.guard.spec.ts | TC-10-bis, TC-SEC-04, TC-SEC-05 |
exceptions/freemium.exception.spec.ts | TC-ERR-01, TC-ERR-02, TC-ERR-03 |
controllers/folder.controller.spec.ts | TC-CTRL-01, TC-CTRL-02, TC-CTRL-03, TC-CTRL-04 |
controllers/export.controller.spec.ts | TC-EXP-01, TC-EXP-02, TC-AUD-06 |
controllers/capability.controller.spec.ts | TC-CTRL-05 |
controllers/plan.controller.spec.ts | TC-CTRL-06 |
controllers/folder-document.controller.spec.ts | TC-CTRL-07 |
dto/create-folder.dto.spec.ts | TC-DTO-01, TC-DTO-02, TC-DTO-03, TC-DTO-04 |
dto/change-plan.dto.spec.ts | TC-DTO-05, TC-DTO-06 |
dto/folder-response.dto.spec.ts | TC-DTO-07, TC-INV-07, TC-INV-12 |
freemium-nonreg.spec.ts | TC-NR-01, TC-NR-02, TC-NR-03, TC-NR-04 |