test(metrics): cover stats breakdown pagination and error paths - #418
Merged
mikewheeleer merged 4 commits intoJul 28, 2026
Merged
Conversation
The health/deep checks handler inlined its own base64url cursor encode/decode and page-slicing logic. Extracted it into a generic paginateByCursor() in src/cursorPagination.ts (mirroring the offset pagination helper already shared between the api-keys and webhooks list endpoints) and refactored the health handler to use it. No behavior change; this is the shared entry point subsequent metrics pagination work will build on.
/api/v1/metrics and /api/v1/stats now reject any query parameter with a structured 400 invalid_request; neither route accepts parameters today.
Adds servicesBreakdown (per-service tenantId/serviceId/priceStroops/ requestsOutstanding) to GET /api/v1/stats, cursor-paginated via the shared paginateByCursor() helper (limit default 50, max 500, stable nextServicesBreakdownCursor). /api/v1/metrics itself stays unpaginated Prometheus exposition text, since paginating a scrape target would break standard Prometheus clients.
Adds src/stats-breakdown.test.ts covering the servicesBreakdown pagination (first/second page, total, stable cursor), malformed-cursor rejection, unknown-query-param rejection on both /api/v1/stats and /api/v1/metrics, and an idempotent-repeat check.
2 tasks
Contributor
|
great contribution @thlpkee20-wq! smooth review. merging 🙏 |
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.
Closes #389
Adds
src/stats-breakdown.test.tscovering theservicesBreakdownpagination (first/second page, total, stable cursor), malformed-cursor
rejection, unknown-query-param rejection on both
/api/v1/statsand/api/v1/metrics, and an idempotent-repeat check.Test plan
npm run buildnpm run lintnpm test— targeted run ofstats-breakdown.test.js,routes/operational.test.js: 10/10 passing.Note
Stacked on #415/#416/#417 (same fork-only caveat noted on other PRs in
this series). The test-specific change is the single new file,
src/stats-breakdown.test.ts.