|
1 | 1 | import { createTestServer } from '@sentry-internal/test-utils'; |
2 | 2 | import { describe, expect } from 'vitest'; |
3 | | -import { createEsmAndCjsTests } from '../../../utils/runner'; |
4 | | -import { extractTraceparentData, parseBaggageHeader, TRACEPARENT_REGEXP } from '@sentry/core'; |
5 | | - |
6 | | -function expectNoDuplicateSentryBaggageKeys(baggage: string | string[] | undefined): void { |
7 | | - expect(baggage).toBeDefined(); |
8 | | - const baggageStr = Array.isArray(baggage) ? baggage.join(',') : (baggage as string); |
9 | | - const sentryKeyNames = Object.keys(parseBaggageHeader(baggageStr) || {}); |
10 | | - const uniqueKeyNames = [...new Set(sentryKeyNames)]; |
11 | | - expect(sentryKeyNames).toEqual(uniqueKeyNames); |
12 | | -} |
13 | | - |
14 | | -function expectConsistentTraceId(headers: Record<string, string | string[] | undefined>): void { |
15 | | - const sentryTrace = headers['sentry-trace']; |
16 | | - expect(sentryTrace).toMatch(TRACEPARENT_REGEXP); |
17 | | - |
18 | | - const sentryTraceData = extractTraceparentData(sentryTrace as string)!; |
19 | | - expect(sentryTraceData.traceId).toMatch(/^[a-f\d]{32}$/); |
20 | | - |
21 | | - const baggage = parseBaggageHeader(headers['baggage']); |
22 | | - |
23 | | - const baggageTraceId = baggage!['sentry-trace_id']; |
24 | | - expect(baggageTraceId).toBeDefined(); |
25 | | - expect(baggageTraceId).toMatch(/^[a-f\d]{32}$/); |
26 | | - |
27 | | - expect(sentryTraceData.traceId).toEqual(baggageTraceId); |
28 | | -} |
29 | | - |
30 | | -function expectUserSetTraceId(headers: Record<string, string | string[] | undefined>): void { |
31 | | - const xSentryTrace = extractTraceparentData(headers['x-tracedata-sentry-trace'] as string); |
32 | | - const sentryTrace = extractTraceparentData(headers['sentry-trace'] as string); |
33 | | - expect(xSentryTrace?.traceId).toBe(sentryTrace?.traceId); |
34 | | - |
35 | | - const xBaggage = parseBaggageHeader(headers['x-tracedata-baggage']); |
36 | | - const baggage = parseBaggageHeader(headers['baggage']); |
37 | | - expect(xBaggage).toEqual(baggage); |
38 | | -} |
| 3 | +import { createEsmAndCjsTests } from '../../../../utils/runner'; |
| 4 | +import { expectConsistentTraceId, expectNoDuplicateSentryBaggageKeys, expectUserSetTraceId } from '../expects'; |
39 | 5 |
|
40 | 6 | describe('double baggage prevention', () => { |
41 | 7 | createEsmAndCjsTests(__dirname, 'scenario.mjs', 'instrument.mjs', (createRunner, test) => { |
|
0 commit comments