test: real GCS-adapter tests for certstore (fake-gcs-server)#14
Merged
Conversation
Cover OUR certmagic.Storage adapter contract against a real GCS-compatible
backend (fsouza/fake-gcs-server, started by TestMain over docker) — not the
GCS client itself:
- Load/Stat of a missing key map to fs.ErrNotExist (certmagic depends on this)
- Store→Load→Delete round-trip; Exists reflects it
- List returns keys with our internal prefix trimmed off
- directory-prefix Delete removes all keys beneath it
- the distributed Lock provides mutual exclusion (conditional create) and is
re-acquirable after Unlock
Runs in CI (runners have docker); skips loudly if docker/emulator unavailable.
Audited bona fide: dropping the List prefix-trim makes TestListTrimsPrefix go
red ("certs/site/a.pem" vs "site/a.pem").
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this PR does
Adds real tests for our GCS certmagic.Storage adapter (
internal/certstore) — previously 0% covered — against a live GCS-compatible backend (fsouza/fake-gcs-server, started byTestMainover Docker).Principled scope: these assert our adapter's contract, not the GCS client:
Load/Statof a missing key →fs.ErrNotExist(certmagic relies on this mapping)Store→Load→Deleteround-trip;Existsreflects itListreturns keys with our internalcerts/prefix trimmedDeleteremoves everything beneath itLockis mutually exclusive (conditional create) and re-acquirable afterUnlockBona fide (audited)
Mutation-tested: removing our List prefix-trim makes
TestListTrimsPrefixgo red (certs/site/a.pemvssite/a.pem); the lock test fails if mutual exclusion breaks. Runs in CI (a new step; runners have Docker), skips loudly only if Docker/emulator is unavailable.🤖 Generated with Claude Code