• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 25505472220
65%

Build:
DEFAULT BRANCH: main
Ran 07 May 2026 03:34PM UTC
Jobs 1
Files 720
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

07 May 2026 03:28PM UTC coverage: 64.799% (+0.01%) from 64.786%
25505472220

push

github

web-flow
Add persistent DCRCredentialStore types and memory backend (#5186)

* Add persistent DCRCredentialStore types and memory backend

Phase 3 sub-issue 1 of #5183. Define the persisted DCRCredentials value
type and the storage-level DCRCredentialStore interface in
pkg/authserver/storage/, and ship the in-process memory implementation
that single-replica deployments and unit tests use. The Redis backend
(sub-issue 2) and the wiring change (sub-issue 3) build on this.

DCRKey consolidation: chose option (a) from the issue — DCRKey and its
ScopesHash constructor move to pkg/authserver/storage/ so any future
backend hashes keys identically. The runner package keeps a
package-local type alias (type DCRKey = storage.DCRKey) and a var
binding for scopesHash so existing call sites compile unchanged; the
canonical form has a single source of truth.

DCRCredentials carries ClientSecretExpiresAt so the Redis backend can
drive a SetEX TTL without re-touching the value type or regenerating
mocks. The interface contract documents this as SHOULD honor when
backend-supported; MemoryStorage retains entries verbatim for the
process lifetime.

StoreDCRCredentials rejects nil creds and zero-valued Key.Issuer or
Key.RedirectURI with fosite.ErrInvalidRequest, matching the
StoreUpstreamTokens validation pattern. Stats reports
dcrCredentials count for parity with the other in-memory maps.

The runner-side DCRCredentialStore (Get/Put *DCRResolution) is left in
place as the thin adapter sub-issue 3 will swap. This sub-issue lands
the new storage-level interface, MemoryStorage implementation, and
regenerated mock without touching the wire-up.

DCR credentials are intentionally excluded from cleanupExpired:
RFC 7591 client registrations are long-lived and the authoritative
expiry signal is client_secret_expires_at, which the Redis backend
will honor as a SetEX TTL.

* Rename runner-side DCR cache to dcrResolutionCache

Eliminates the post-merge name collision between runner.DCRCrede... (continued)

64 of 95 new or added lines in 6 files covered. (67.37%)

24 existing lines in 1 file now uncovered.

63268 of 97637 relevant lines covered (64.8%)

60.4 hits per line

Uncovered Changes

Lines Coverage ∆ File
29
58.81
-2.71% pkg/authserver/storage/mocks/mock_storage.go
2
96.53
-0.04% pkg/authserver/storage/memory.go

Coverage Regressions

Lines Coverage ∆ File
24
49.16
-2.25% pkg/workloads/manager.go
Jobs
ID Job ID Ran Files Coverage
1 25505472220.1 07 May 2026 03:34PM UTC 720
64.8
GitHub Action Run
Source Files on build 25505472220
  • Tree
  • List 720
  • Changed 13
  • Source Changed 6
  • Coverage Changed 12
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25505472220
  • 6b39256a on github
  • Prev Build on main (#25500234879)
  • Next Build on main (#25511991371)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc