mirror of
https://github.com/shankar0123/certctl.git
synced 2026-06-07 15:41:41 +00:00
8c2d3c844e
Sprint 5 CI follow-up. Pre-fix: the Sprint 5 push tripped three Go
test failures in internal/config:
--- FAIL: TestLoad_AllEnvVarsSet (0.00s)
config_test.go:261: Load() returned error: CERTCTL_KEYGEN_MODE=server
is demo-only — ... Set CERTCTL_DEMO_MODE_ACK=true ...
--- FAIL: TestValidate_AcceptsServerKeygenWithDemoAck (0.00s)
config_test.go:2082: Validate(KeygenMode=server, DemoAck=true,
fresh TS) = job timeout interval must be at least 1 second; want nil
--- FAIL: TestValidate_AgentKeygenIgnoresDemoAck (0.00s)
config_test.go:2106: Validate(KeygenMode=agent, DemoAck=false) =
job timeout interval must be at least 1 second; want nil (production
default must boot)
All three are fallout from cross-sprint interactions:
1. TestLoad_AllEnvVarsSet is the comprehensive 'every CERTCTL_* env
var' exerciser. It sets KEYGEN_MODE=server because the per-field
assertion at line 292 pins cfg.Keygen.Mode == 'server'. Sprint 4
ARCH-003 (commit 7e98b0e) made Load()→Validate() refuse to boot
in server-keygen mode without the demo-ack pair, so this test
needed the ACK env vars added alongside the existing KEYGEN_MODE
set. Fix: add CERTCTL_DEMO_MODE_ACK=true + CERTCTL_DEMO_MODE_ACK_TS
set to time.Now().Unix() (well within the SEC-H3 24h freshness
window) right after the KEYGEN_MODE line, with an inline comment
explaining why the SEC-H3 demo-ack pair is needed here.
2. TestValidate_AcceptsServerKeygenWithDemoAck and
TestValidate_AgentKeygenIgnoresDemoAck are NEW in Sprint 4. They
construct Config directly and call Validate(), but their
Scheduler fixtures omit three load-bearing fields:
- JobTimeoutInterval (>= 1s required, config.go:1286)
- AwaitingCSRTimeout (>= 1s required, config.go:1290)
- AwaitingApprovalTimeout (>= 1s required, config.go:1294)
These three were added in earlier milestones (I-003 timeout
sweeper). The Sprint 4 fixtures pre-date the alignment that
landed elsewhere in the file (see line 1543's full template). Fix:
add the three fields with the same production-shaped values used
in the rest of the test file (10m / 24h / 168h).
Verified locally with the canonical-runner Go 1.25.10 toolchain:
go test -count=1 \
-run 'TestLoad_AllEnvVarsSet|TestValidate_AcceptsServerKeygenWithDemoAck|TestValidate_AgentKeygenIgnoresDemoAck' \
./internal/config/
# ok github.com/certctl-io/certctl/internal/config 0.005s
go test -count=1 ./internal/config/
# ok github.com/certctl-io/certctl/internal/config 0.804s
gofmt -l internal/config/config_test.go
# (empty — clean)
go vet ./internal/config/...
# (empty — clean)
Closes the internal/config leg of the Sprint 5 CI redness. Together
with the M-009 carve-out commit, this returns the Sprint 5 push to
green.