Skip to content

Commit e1a03e3

Browse files
committed
fix: forward tracing headers in verify middleware
1 parent e46058d commit e1a03e3

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/middlewares/__tests__/verifyMiddleware.integration.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,25 @@ describe('verifyMiddleware', () => {
9898
expect((res as NextResponse).headers.get('location')).toContain('notify=verify-account-failed');
9999
});
100100

101+
it('forwards tracing headers to the verify API', async () => {
102+
const session = makeSession();
103+
const fetchSpy = mockFetch({ message: 'success' });
104+
const req = new NextRequest('https://example.com/user/account/verify/change-email/tok', {
105+
headers: {
106+
cookie: `${cookieName}=cookie-value`,
107+
'X-Amzn-Trace-Id': 'Root=1-abc-def',
108+
'X-Forwarded-For': '10.0.0.1',
109+
},
110+
});
111+
112+
await verifyMiddleware(req, NextResponse.next(), session);
113+
114+
const fetchCall = fetchSpy.mock.calls[0];
115+
const headers = fetchCall[1].headers;
116+
expect(headers.get('X-Amzn-Trace-Id')).toBe('Root=1-abc-def');
117+
expect(headers.get('X-Forwarded-For')).toBe('10.0.0.1');
118+
});
119+
101120
describe('msw contract coverage', () => {
102121
it('calls the verify API with bearer and session cookie and forwards Set-Cookie', async () => {
103122
const setCookieValue = `${cookieName}=verified; Domain=example.com; Secure; Path=/; SameSite=None; HttpOnly`;

src/middlewares/verifyMiddleware.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { edgeLogger } from '@/logger';
44
import { ApiTargets } from '@/api/models';
55
import { IVerifyAccountResponse } from '@/api/user/types';
66
import { createErrorHandler, ErrorSource, ErrorSeverity } from '@/lib/errorHandler.edge';
7+
import { pickTracingHeadersEdge } from '@/utils/tracing.edge';
78
import setCookie from 'set-cookie-parser';
89

910
const log = edgeLogger.child({}, { msgPrefix: '[verifyMiddleware] ' });
@@ -63,6 +64,12 @@ export const verifyMiddleware = async (req: NextRequest, res: NextResponse, sess
6364
headers.set('x-test-scenario', testScenario);
6465
}
6566

67+
// Forward tracing headers for distributed tracing
68+
const tracingHeaders = pickTracingHeadersEdge(req.headers);
69+
Object.entries(tracingHeaders).forEach(([key, value]) => {
70+
headers.set(key, value);
71+
});
72+
6673
const result = await fetch(url, {
6774
method: 'GET',
6875
headers,

0 commit comments

Comments
 (0)