Skip to content

Commit 5f040e7

Browse files
committed
Fix unit tests
1 parent 00a6640 commit 5f040e7

File tree

3 files changed

+104
-81
lines changed

3 files changed

+104
-81
lines changed

packages/react-router/test/server/createSentryHandleRequest.test.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,18 @@ import type { EntryContext } from 'react-router';
33
import { PassThrough } from 'stream';
44
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
55
import { createSentryHandleRequest } from '../../src/server/createSentryHandleRequest';
6+
import * as getMetaTagTransformerModule from '../../src/server/getMetaTagTransformer';
67
import * as wrapSentryHandleRequestModule from '../../src/server/wrapSentryHandleRequest';
78

89
vi.mock('../../src/server/wrapSentryHandleRequest', () => ({
910
wrapSentryHandleRequest: vi.fn(fn => fn),
10-
getMetaTagTransformer: vi.fn(body => {
11-
const transform = new PassThrough();
12-
transform.pipe(body);
13-
return transform;
11+
}));
12+
13+
vi.mock('../../src/server/getMetaTagTransformer', () => ({
14+
getMetaTagTransformer: vi.fn(bodyStream => {
15+
const transformer = new PassThrough();
16+
bodyStream.pipe(transformer);
17+
return transformer;
1418
}),
1519
}));
1620

@@ -247,7 +251,7 @@ describe('createSentryHandleRequest', () => {
247251
});
248252

249253
it('should pipe to the meta tag transformer', async () => {
250-
const getMetaTagTransformerSpy = vi.spyOn(wrapSentryHandleRequestModule, 'getMetaTagTransformer');
254+
const getMetaTagTransformerSpy = vi.spyOn(getMetaTagTransformerModule, 'getMetaTagTransformer');
251255

252256
const pipeSpy = vi.fn();
253257

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import {
2+
getTraceMetaTags,
3+
} from '@sentry/core';
4+
import { PassThrough } from 'stream';
5+
import { beforeEach, describe, expect, test, vi } from 'vitest';
6+
import { getMetaTagTransformer } from '../../src/server/getMetaTagTransformer';
7+
8+
vi.mock('@opentelemetry/core', () => ({
9+
RPCType: { HTTP: 'http' },
10+
getRPCMetadata: vi.fn(),
11+
}));
12+
13+
vi.mock('@sentry/core', () => ({
14+
SEMANTIC_ATTRIBUTE_SENTRY_SOURCE: 'sentry.source',
15+
SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN: 'sentry.origin',
16+
getActiveSpan: vi.fn(),
17+
getRootSpan: vi.fn(),
18+
getTraceMetaTags: vi.fn(),
19+
}));
20+
21+
22+
describe('getMetaTagTransformer', () => {
23+
beforeEach(() => {
24+
vi.clearAllMocks();
25+
(getTraceMetaTags as unknown as ReturnType<typeof vi.fn>).mockReturnValue(
26+
'<meta name="sentry-trace" content="test-trace-id">',
27+
);
28+
});
29+
30+
test('should inject meta tags before closing head tag', done => {
31+
const outputStream = new PassThrough();
32+
const bodyStream = new PassThrough();
33+
const transformer = getMetaTagTransformer(bodyStream);
34+
35+
let outputData = '';
36+
outputStream.on('data', chunk => {
37+
outputData += chunk.toString();
38+
});
39+
40+
outputStream.on('end', () => {
41+
expect(outputData).toContain('<meta name="sentry-trace" content="test-trace-id"></head>');
42+
expect(outputData).not.toContain('</head></head>');
43+
done();
44+
});
45+
46+
transformer.pipe(outputStream);
47+
48+
bodyStream.write('<html><head></head><body>Test</body></html>');
49+
bodyStream.end();
50+
});
51+
52+
test('should not modify chunks without head closing tag', done => {
53+
const outputStream = new PassThrough();
54+
const bodyStream = new PassThrough();
55+
const transformer = getMetaTagTransformer(bodyStream);
56+
57+
let outputData = '';
58+
outputStream.on('data', chunk => {
59+
outputData += chunk.toString();
60+
});
61+
62+
outputStream.on('end', () => {
63+
expect(outputData).toBe('<html><body>Test</body></html>');
64+
expect(getTraceMetaTags).toHaveBeenCalled();
65+
done();
66+
});
67+
68+
transformer.pipe(outputStream);
69+
70+
bodyStream.write('<html><body>Test</body></html>');
71+
bodyStream.end();
72+
});
73+
74+
test('should handle buffer input', done => {
75+
const outputStream = new PassThrough();
76+
const bodyStream = new PassThrough();
77+
const transformer = getMetaTagTransformer(bodyStream);
78+
79+
let outputData = '';
80+
outputStream.on('data', chunk => {
81+
outputData += chunk.toString();
82+
});
83+
84+
outputStream.on('end', () => {
85+
expect(outputData).toContain('<meta name="sentry-trace" content="test-trace-id"></head>');
86+
done();
87+
});
88+
89+
transformer.pipe(outputStream);
90+
91+
bodyStream.write(Buffer.from('<html><head></head><body>Test</body></html>'));
92+
bodyStream.end();
93+
});
94+
});

packages/react-router/test/server/wrapSentryHandleRequest.test.ts

Lines changed: 1 addition & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@ import { ATTR_HTTP_ROUTE } from '@opentelemetry/semantic-conventions';
33
import {
44
getActiveSpan,
55
getRootSpan,
6-
getTraceMetaTags,
76
SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,
87
SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,
98
} from '@sentry/core';
10-
import { PassThrough } from 'stream';
119
import { beforeEach, describe, expect, test, vi } from 'vitest';
12-
import { getMetaTagTransformer, wrapSentryHandleRequest } from '../../src/server/wrapSentryHandleRequest';
10+
import { wrapSentryHandleRequest } from '../../src/server/wrapSentryHandleRequest';
1311

1412
vi.mock('@opentelemetry/core', () => ({
1513
RPCType: { HTTP: 'http' },
@@ -124,76 +122,3 @@ describe('wrapSentryHandleRequest', () => {
124122
});
125123
});
126124

127-
describe('getMetaTagTransformer', () => {
128-
beforeEach(() => {
129-
vi.clearAllMocks();
130-
(getTraceMetaTags as unknown as ReturnType<typeof vi.fn>).mockReturnValue(
131-
'<meta name="sentry-trace" content="test-trace-id">',
132-
);
133-
});
134-
135-
test('should inject meta tags before closing head tag', done => {
136-
const outputStream = new PassThrough();
137-
const bodyStream = new PassThrough();
138-
const transformer = getMetaTagTransformer(bodyStream);
139-
140-
let outputData = '';
141-
outputStream.on('data', chunk => {
142-
outputData += chunk.toString();
143-
});
144-
145-
outputStream.on('end', () => {
146-
expect(outputData).toContain('<meta name="sentry-trace" content="test-trace-id"></head>');
147-
expect(outputData).not.toContain('</head></head>');
148-
done();
149-
});
150-
151-
transformer.pipe(outputStream);
152-
153-
bodyStream.write('<html><head></head><body>Test</body></html>');
154-
bodyStream.end();
155-
});
156-
157-
test('should not modify chunks without head closing tag', done => {
158-
const outputStream = new PassThrough();
159-
const bodyStream = new PassThrough();
160-
const transformer = getMetaTagTransformer(bodyStream);
161-
162-
let outputData = '';
163-
outputStream.on('data', chunk => {
164-
outputData += chunk.toString();
165-
});
166-
167-
outputStream.on('end', () => {
168-
expect(outputData).toBe('<html><body>Test</body></html>');
169-
expect(getTraceMetaTags).toHaveBeenCalled();
170-
done();
171-
});
172-
173-
transformer.pipe(outputStream);
174-
175-
bodyStream.write('<html><body>Test</body></html>');
176-
bodyStream.end();
177-
});
178-
179-
test('should handle buffer input', done => {
180-
const outputStream = new PassThrough();
181-
const bodyStream = new PassThrough();
182-
const transformer = getMetaTagTransformer(bodyStream);
183-
184-
let outputData = '';
185-
outputStream.on('data', chunk => {
186-
outputData += chunk.toString();
187-
});
188-
189-
outputStream.on('end', () => {
190-
expect(outputData).toContain('<meta name="sentry-trace" content="test-trace-id"></head>');
191-
done();
192-
});
193-
194-
transformer.pipe(outputStream);
195-
196-
bodyStream.write(Buffer.from('<html><head></head><body>Test</body></html>'));
197-
bodyStream.end();
198-
});
199-
});

0 commit comments

Comments
 (0)