Add regression coverage for legacy CA identifier parsing
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 82/100
Research direction
Start with the existing CaIdentifierServiceTest in tests/php/Unit/Service/CaIdentifierServiceTest.php, then read lib/Service/CaIdentifierService.php to see what getCaIdParsed() and generatePkiDirectoryName() return for _e:o and _e:c IDs. Add named data-provider cases that assert every parsed field and the exact directory names, plus malformed-ID rejections. Done when composer test:unit -- --filter CaIdentifierServiceTest passes and the new assertions would fail if the parsing contract changed.
Written by the indexing model from the issue text.
Description
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
- Dominant language
- PHP
- Stars
- 844
- Forks
- 176
- Avg merge
- 13h 46m
- Merged PRs (30d)
- 299
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from LibreSign/libresign
-
OpenSSL engine: leaf certificates get O=Internet Widgits Pty Ltd, ST=Some-State from system openssl.cnfPossibly taken @vitormattos claimed this 2 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
LibreSign/libresign#9366 · 1 assignee ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 83/100
LibreSign/libresign#9007 · 2 comments · 1 reaction ·
Maintainers usually reply within 1 day
-
good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
LibreSign/libresign#8284 · 5 comments ·
Maintainers usually reply within 1 day
-
backend enhancement php
Difficulty 5/5 Over a week Newbie friendliness 12/100
Maintainers usually reply within 1 day
-
backend enhancement php
Difficulty 5/5 Over a week Newbie friendliness 12/100
Maintainers usually reply within 1 day
All issues in LibreSign/libresign
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 89/100
backdrop-contrib/commerce#65 ·
-
enhancement good first issue help wanted
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Evalogical-Inc/devReady#66 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
mollie/PrestaShop#1627 ·
Maintainers usually reply within 5 days
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
FriendsOfFlarum/follow-tags#118 ·
-
WebP — PHP 8.5 deprecation "Using null as an array offset" in url_to_path() for relative image URLsOpen✨️ai-candidate effort: [XS] module: webp cache priority: low type: bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day