Aller au contenu

PD-276 — Revue des Tests

Résumé

Critère Statut
Couverture TC-* 14/16 effectifs (2 cas marqués mais non réellement assertés)
Qualité assertions 6/10
Isolation 8/10
Edge cases 5/10

Verdict : RÉSERVES

Matrice de couverture

TC-ID Implémenté Commentaire
TC-NOM-01 Oui Minima exacts testés avec assertion explicite valid: true.
TC-NOM-02 Oui Bornes hautes exactes testées (memory/iterations/parallelism/type/hashLength).
TC-NOM-03 Oui getConfig() vérifie la référence exacte + valeurs clés.
TC-NOM-04 Oui Longueur du tag vérifiée à 32 bytes.
TC-NOM-05 Oui verifyTag retourne true sur tag valide.
TC-ERR-01 Oui Rejet memory < min via BadRequestException.
TC-ERR-02 Oui Rejet iterations < min via BadRequestException.
TC-ERR-03 Oui Rejet champ manquant (hashLength).
TC-ERR-04 Oui Rejet type != 2.
TC-ERR-05 Oui Rejet memory > max.
TC-ERR-07 Oui Tag altéré refusé (false).
TC-INV-01 Oui Vérifie explicitement absence de key/hash/derivedKey.
TC-INV-02 Oui Spy HKDF context strict correctement asserté.
TC-NEG-01 Partiel Test présent mais corps en commentaire (/* ... */) => pas d’assertion réelle.
TC-NEG-03 Partiel Test présent mais non implémenté (tag mauvaise longueur non vérifié).
TC-NEG-04 Oui Un seul champ hors borne déclenche rejet.

Points à améliorer

ID Description Gravité
QA-01 Plusieurs tests metadata-binding sont des placeholders sans assertions (faux positifs potentiels). Haute
QA-02 verifyTagOrThrow cas nominal “should not throw” non implémenté. Haute
QA-03 Argon2Service : assertions d’erreur trop génériques (toThrow(BadRequestException) sans valider le détail par champ). Moyenne
QA-04 Test “include all errors in message” fragile (>= 4) et ne valide pas précisément le contrat d’erreur. Moyenne
QA-05 MetadataBindingService utilise le vrai HkdfService en unit test (isolation partielle, dépendance implicite). Basse

Tests manquants

  • Implémenter réellement les tests actuellement en commentaire :
  • different device_id, different K_master_user, different algorithm
  • substituted device_id, wrong tag length, null tag
  • verifyTagOrThrow nominal (no throw)
  • Ajouter des assertions de contenu d’erreur Argon2 par champ (pas seulement le type d’exception).
  • Ajouter un test explicite de rejet pour parallelism > max avec vérification du message ciblé (pas seulement rejet global).
  • Ajouter un test de robustesse sur mutation in-place du tag (copie vs référence) pour éviter des effets de bord.
  • (Hors scope confirmé) conserver la dette documentée sur les tests d’intégration C5/KeyEnvelopeService et non-régression migrations.