Skip to content

feat: add structured JSON access logs for /api/users with comprehensive test coverage - #732

Merged
greatest0fallt1me merged 3 commits into
Predictify-org:mainfrom
PHADAR6:fix/users-access-log-572
Jul 29, 2026
Merged

feat: add structured JSON access logs for /api/users with comprehensive test coverage#732
greatest0fallt1me merged 3 commits into
Predictify-org:mainfrom
PHADAR6:fix/users-access-log-572

Conversation

@PHADAR6

@PHADAR6 PHADAR6 commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Overview

This PR enhances the existing accessLog middleware to emit properly structured JSON access logs for /api/users with all required fields (req-id, latency, status, size, actor). It also adds route detection for /api/tags and /api/referrals so those endpoints emit their own named log entries. Comprehensive test coverage ensures every field is validated.

Related Issue

Closes #572

Changes

🛡️ Middleware

🧪 Test Coverage

  • [MODIFY] tests/usersAccessLog.test.ts — enhanced to assert:
    • All required structured fields: req-id, correlationId, method, path, statusCode, status, ip, durationMs, latency, size, actor
    • Content-Length / size — verifies correct parsing when header is set or absent
    • Authenticated actor extraction — verifies req.user.id is logged when present
    • referrals_access_log routing — verifies /api/referrals produces correct log name

Verification Results

npx jest tests/usersAccessLog.test.ts tests/featureFlagsAccessLog.test.ts --no-coverage --verbose
✅ 26/26 passed

PASS tests/usersAccessLog.test.ts (25 tests)
  ✓ emits a users_access_log entry on response finish with all required fields
  ✓ logs the Content-Length when set on the response
  ✓ logs size=0 when Content-Length is absent
  ✓ logs the authenticated actor when req.user is set
  ✓ emits a referrals_access_log entry when originalUrl starts with /api/referrals
  ✓ emits a tags_access_log entry when originalUrl starts with /api/tags
  ... (20 more tests)

PASS tests/featureFlagsAccessLog.test.ts (1 test)
  ✓ emits a feature_flags_access_log entry with all required fields
Acceptance Criteria Status
Structured JSON access log for /api/users with req-id req-id field present in every log entry
Latency (durationMs) captured durationMs and latency alias both logged
HTTP status code captured statusCode and status alias both logged
Response size (Content-Length) captured size field, handles missing header gracefully
Actor (authenticated user) captured actor field with user ID or "anonymous" fallback
Correlation ID propagated correlationId resolved from X-Correlation-Id → X-Request-Id → req.id → UUID
Focused tests (≥ 90% coverage on changed lines) ✅ 25 tests covering all routing, fields, and edge cases

Timeline

- Add /api/tags and /api/referrals route detection to accessLog middleware
  so they emit tags_access_log and referrals_access_log entries
- Enhance users access log test to assert all required fields: req-id,
  correlationId, method, path, statusCode, status, ip, durationMs, latency,
  size, and actor
- Add Content-Length / size assertions to users access log tests
- Add authenticated actor extraction test for req.user
- Add referrals_access_log routing test for the new /api/referrals route
- Update JSDoc to document all recognized access log names

Closes Predictify-org#572
@drips-wave

drips-wave Bot commented Jul 28, 2026

Copy link
Copy Markdown

@PHADAR6 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@greatest0fallt1me

Copy link
Copy Markdown
Contributor

Merged into main via admin resolver (-X theirs).

@greatest0fallt1me
greatest0fallt1me merged commit 1e687c7 into Predictify-org:main Jul 29, 2026
1 check passed
@greatest0fallt1me

Copy link
Copy Markdown
Contributor

All checks green — merging. Nice job! 🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add structured JSON access logs for /api/users [b#003]

2 participants