Add regression coverage for legacy CA identifier parsing
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 82/100
Línea de trabajo
Empieza con la CaIdentifierServiceTest existente en tests/php/Unit/Service/CaIdentifierServiceTest.php y luego lee lib/Service/CaIdentifierService.php para ver qué devuelven getCaIdParsed() y generatePkiDirectoryName() para los IDs _e:o y _e:c. Añade casos con nombre en el data provider que comprueben cada campo analizado y los nombres exactos de los directorios, además de rechazos de IDs mal formados. Está terminado cuando composer test:unit -- --filter CaIdentifierServiceTest pasa y las nuevas aserciones fallarían si cambiara el contrato de análisis.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Goal
Add deterministic regression tests for legacy LibreSign CA identifiers, protecting current OpenSSL and CFSSL behavior before the multi-CA registry is introduced.
Current implementation
Start with:
lib/Service/CaIdentifierService.phptests/php/Unit/Service/CaIdentifierServiceTest.php
Existing tests already cover CA ID generation, some validation cases and one OpenSSL PKI-directory name. They do not thoroughly assert the parsed fields returned by getCaIdParsed() or cover both engine types in directory-name generation.
Scope
Extend the existing unit test class with named data providers where helpful. Verify:
- Correct parsing through public
getCaIdParsed()for legacy OpenSSL (_e:o) and CFSSL (_e:c) IDs, includinginstanceId,generation,engineTypeandengineName. - Expected directory paths from
generatePkiDirectoryName()for both engine types and representative generations. - Rejection of malformed or unsupported IDs by the public parsing path.
- Preservation of the existing ID shape and output without modifying production code.
Use synthetic identifiers and mocked IAppConfig. Do not invoke private methods directly or generate real CA keys.
Acceptance criteria
- Tests cover both engines and at least one positive and negative parsing scenario.
- Assertions compare all important parsed fields and exact directory-name outputs, not just non-null values.
- Tests fail when the legacy parsing or directory-path contract is unintentionally changed.
- Existing
CaIdentifierServiceTestremains deterministic and passes. - No production CA logic, public identifier format, storage layout or CRL URL is modified.
Tests
Run composer test:unit -- --filter CaIdentifierServiceTest and applicable PHP syntax/static checks. Include the command results in the PR.
Next steps in the parent epic (not this task)
The multi-CA epic will later create a persistent issuer registry, retain compatibility with these legacy identifiers, and introduce context-aware CA operations and CRL routing. These tests are a baseline for compatibility, not the new registry implementation.
Good first issue
All work stays inside an established PHPUnit test class with a small public service contract. Follow its existing DataProvider examples. No database, encryption, authorization or CA lifecycle changes are required. Check for an active PR; questions and coordination are optional.
Additional context
- Questions can be asked directly in this issue.
- LibreSign community: https://t.me/LibreSign
- Lenguaje dominante
- PHP
- Estrellas
- 844
- Forks
- 176
- Merge medio
- 13 h 46 min
- PR fusionados (30 d)
- 299
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de LibreSign/libresign
-
OpenSSL engine: leaf certificates get O=Internet Widgits Pty Ltd, ST=Some-State from system openssl.cnfPosiblemente ocupada @vitormattos la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
LibreSign/libresign#9366 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 83/100
LibreSign/libresign#9007 · 2 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
LibreSign/libresign#8284 · 5 comentarios ·
Los mantenedores suelen responder en 1 día
-
backend enhancement php
Dificultad 5/5 Más de una semana Aptitud para principiantes 12/100
Los mantenedores suelen responder en 1 día
-
backend enhancement php
Dificultad 5/5 Más de una semana Aptitud para principiantes 12/100
Los mantenedores suelen responder en 1 día
Todos los issues de LibreSign/libresign
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 89/100
backdrop-contrib/commerce#65 ·
-
enhancement good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Evalogical-Inc/devReady#66 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
mollie/PrestaShop#1627 ·
Los mantenedores suelen responder en 5 días
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
FriendsOfFlarum/follow-tags#118 ·
-
WebP — PHP 8.5 deprecation "Using null as an array offset" in url_to_path() for relative image URLsAbierto✨️ai-candidate effort: [XS] module: webp cache priority: low type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día