| Archivo · Línea | Función | Señal Mutation | Señal Necessist | CC | Acción |
|---|---|---|---|---|---|
|
src/auth/jwt_handler.py L:142 |
verify_token_signature | CompareOp: >= → > — boundary en exp check | Assertion assert result.valid removida, test pasó |
14 | Fuzz harness JWT |
|
src/auth/token_parser.py L:87 |
parse_access_token | AugAssign: += → -= — offset acumulado | Llamada a _validate_header() eliminada, sin fallo |
18 | Fuzz parser binario |
|
src/auth/rbac.py L:203 |
evaluate_policy_chain | BoolOp: and → or — cortocircuito DENY | Aserción de permiso denegado removida, test pasó | 22 | Fuzz policy engine |
|
src/auth/password_utils.py L:56 |
validate_password_policy | Constant: 8 → 9 — umbral longitud mínima | Llamada a check_complexity() eliminada |
9 | Property-based test |
| Archivo · Línea | Mutación | Razón | Fuente |
|---|---|---|---|
| src/auth/jwt_handler.py L:18 | Constant: "HS256" → "HS255" | Solo callers de test; código de logging, sin callers en prod | mutation |
| src/auth/rate_limiter.py L:34 | BinOp: // → / | Función dead code — sin callers en grafo | mutation |
| src/auth/rate_limiter.py L:71 | Str: "window_ms" → "" | String de log display; comportamiento cosmético | mutation |
| src/auth/rbac.py L:12 | Constant: 100 → 101 | Mutante equivalente — resultado idéntico para todos los inputs observables | mutation |
| src/auth/password_utils.py L:9 | Sentencia logger.debug(...) eliminada |
Sentencia de debug genuinamente innecesaria para comportamiento | necessist |
| src/auth/jwt_handler.py L:29 | UnaryOp: not → — | Código de feature flag desactivado; rama inalcanzable | mutation |
| src/auth/rate_limiter.py L:91–107 | Varios (5 mutantes) | Módulo legado sin callers activos — marcar para eliminación | mutation |
| src/auth/token_parser.py L:14–19 | Sentencias setup (3 removals) | Setup redundante en fixture: estado ya inicializado por conftest | necessist |
| src/auth/rbac.py L:44 | Compare: != → == | Solo callers de infraestructura de test; sin path en producción | mutation |
| tests/test_auth_unit.py varios | Removals de print/log (3 removals) | No mapeable a función de producción; debug puro | necessist |
| Archivo · Línea | Función | CC | Callers | Test sugerido | Fuente |
|---|---|---|---|---|---|
| src/auth/password_utils.py L:72 | check_complexity | 7 | Property-based (Hypothesis) | mutation | |
| src/auth/password_utils.py L:48 | hash_password | 3 | Test negativo bcrypt rounds | mutation | |
| src/auth/jwt_handler.py L:98 | decode_payload | 6 | Test claims expirados/inválidos | mutation | |
| src/auth/rate_limiter.py L:55 | is_rate_limited | 4 | Test boundary ventana temporal | mutation | |
| src/auth/rbac.py L:88 | get_effective_roles | 5 | Test herencia roles anidados | mutation | |
| src/auth/rbac.py L:155 | has_permission | 4 | Test permisos denegados + wildcards | necessist | |
| src/auth/jwt_handler.py L:170 | refresh_token | 8 | Test refresco con token revocado | necessist | |
| src/auth/rate_limiter.py L:116 | get_retry_after | 3 | Test off-by-one segundos restantes | mutation | |
| + 20 ítems adicionales · Consultar GENOTOXIC_REPORT_FULL.md para lista completa | |||||
| Archivo · Línea | Función | CC | Path entrypoint | Blast radius | Harness sugerido | Fuente |
|---|---|---|---|---|---|---|
| src/auth/token_parser.py L:87 | parse_access_token | 18 | POST /auth/token → parse_access_token |
Alto (23 nodos) | atheris — formato binario prop. | ★ corroborado |
| src/auth/jwt_handler.py L:142 | verify_token_signature | 14 | middleware.auth → verify_token_signature |
Alto (19 nodos) | atheris — corpus JWT malformado | ★ corroborado |
| src/auth/rbac.py L:203 | evaluate_policy_chain | 22 | API gateway → evaluate_policy_chain |
Muy alto (31 nodos) | atheris — policy JSON arbitrario | ★ corroborado |
| src/auth/token_parser.py L:34 | _parse_claims_section | 12 | parse_access_token → _parse_claims_section |
Medio (9 nodos) | atheris — claims arbitrarios | mutation |
| src/auth/jwt_handler.py L:60 | decode_header | 10 | verify_token_signature → decode_header |
Medio (8 nodos) | atheris — headers base64 malformados | mutation |
| + 9 ítems adicionales · Consultar GENOTOXIC_REPORT_FULL.md para lista completa | ||||||