Skip to content

Commit dd55860

Browse files
authored
test(node): Remove last example.com requests in node integration tests (#15333)
Refactors two flaky Node integration tests that made requests to example.com. Now we just spin up our own test server instead.
1 parent cbc9da9 commit dd55860

File tree

2 files changed

+57
-42
lines changed

2 files changed

+57
-42
lines changed

dev-packages/node-integration-tests/suites/tracing/httpIntegration/server-ignoreOutgoingRequests.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
const { loggingTransport } = require('@sentry-internal/node-integration-tests');
22
const Sentry = require('@sentry/node');
33

4+
const url = process.env.SERVER_URL;
5+
46
Sentry.init({
57
dsn: 'https://public@dsn.ingest.sentry.io/1337',
68
release: '1.0',
@@ -10,11 +12,11 @@ Sentry.init({
1012
integrations: [
1113
Sentry.httpIntegration({
1214
ignoreOutgoingRequests: (url, request) => {
13-
if (url === 'https://example.com/blockUrl') {
15+
if (url.endsWith('/blockUrl')) {
1416
return true;
1517
}
1618

17-
if (request.hostname === 'example.com' && request.path === '/blockRequest') {
19+
if (request.path === '/blockRequest') {
1820
return true;
1921
}
2022
return false;
@@ -23,7 +25,7 @@ Sentry.init({
2325
],
2426
});
2527

26-
const https = require('https');
28+
const http = require('http');
2729

2830
// express must be required after Sentry is initialized
2931
const express = require('express');
@@ -35,16 +37,16 @@ const app = express();
3537
app.use(cors());
3638

3739
app.get('/testUrl', (_req, response) => {
38-
makeHttpRequest('https://example.com/blockUrl').then(() => {
39-
makeHttpRequest('https://example.com/pass').then(() => {
40+
makeHttpRequest(`${url}/blockUrl`).then(() => {
41+
makeHttpRequest(`${url}/pass`).then(() => {
4042
response.send({ response: 'done' });
4143
});
4244
});
4345
});
4446

4547
app.get('/testRequest', (_req, response) => {
46-
makeHttpRequest('https://example.com/blockRequest').then(() => {
47-
makeHttpRequest('https://example.com/pass').then(() => {
48+
makeHttpRequest(`${url}/blockRequest`).then(() => {
49+
makeHttpRequest(`${url}/pass`).then(() => {
4850
response.send({ response: 'done' });
4951
});
5052
});
@@ -56,7 +58,7 @@ startExpressServerAndSendPortToRunner(app);
5658

5759
function makeHttpRequest(url) {
5860
return new Promise((resolve, reject) => {
59-
https
61+
http
6062
.get(url, res => {
6163
res.on('data', () => {});
6264
res.on('end', () => {

dev-packages/node-integration-tests/suites/tracing/httpIntegration/test.ts

Lines changed: 47 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { cleanupChildProcesses, createRunner } from '../../../utils/runner';
2+
import { createTestServer } from '../../../utils/server';
23

34
describe('httpIntegration', () => {
45
afterAll(() => {
@@ -130,43 +131,55 @@ describe('httpIntegration', () => {
130131

131132
describe("doesn't create child spans or breadcrumbs for outgoing requests ignored via `ignoreOutgoingRequests`", () => {
132133
test('via the url param', done => {
133-
const runner = createRunner(__dirname, 'server-ignoreOutgoingRequests.js')
134-
.expect({
135-
transaction: event => {
136-
expect(event.transaction).toBe('GET /testUrl');
137-
138-
const requestSpans = event.spans?.filter(span => span.op === 'http.client');
139-
expect(requestSpans).toHaveLength(1);
140-
expect(requestSpans![0]?.description).toBe('GET https://example.com/pass');
141-
142-
const breadcrumbs = event.breadcrumbs?.filter(b => b.category === 'http');
143-
expect(breadcrumbs).toHaveLength(1);
144-
expect(breadcrumbs![0]?.data?.url).toEqual('https://example.com/pass');
145-
},
146-
})
147-
.start(done);
148-
149-
runner.makeRequest('get', '/testUrl');
134+
createTestServer(done)
135+
.get('/blockUrl', () => {}, 200)
136+
.get('/pass', () => {}, 200)
137+
.start()
138+
.then(([SERVER_URL, closeTestServer]) => {
139+
createRunner(__dirname, 'server-ignoreOutgoingRequests.js')
140+
.withEnv({ SERVER_URL })
141+
.expect({
142+
transaction: event => {
143+
expect(event.transaction).toBe('GET /testUrl');
144+
145+
const requestSpans = event.spans?.filter(span => span.op === 'http.client');
146+
expect(requestSpans).toHaveLength(1);
147+
expect(requestSpans![0]?.description).toBe(`GET ${SERVER_URL}/pass`);
148+
149+
const breadcrumbs = event.breadcrumbs?.filter(b => b.category === 'http');
150+
expect(breadcrumbs).toHaveLength(1);
151+
expect(breadcrumbs![0]?.data?.url).toEqual(`${SERVER_URL}/pass`);
152+
},
153+
})
154+
.start(closeTestServer)
155+
.makeRequest('get', '/testUrl');
156+
});
150157
});
151158

152159
test('via the request param', done => {
153-
const runner = createRunner(__dirname, 'server-ignoreOutgoingRequests.js')
154-
.expect({
155-
transaction: event => {
156-
expect(event.transaction).toBe('GET /testRequest');
157-
158-
const requestSpans = event.spans?.filter(span => span.op === 'http.client');
159-
expect(requestSpans).toHaveLength(1);
160-
expect(requestSpans![0]?.description).toBe('GET https://example.com/pass');
161-
162-
const breadcrumbs = event.breadcrumbs?.filter(b => b.category === 'http');
163-
expect(breadcrumbs).toHaveLength(1);
164-
expect(breadcrumbs![0]?.data?.url).toEqual('https://example.com/pass');
165-
},
166-
})
167-
.start(done);
168-
169-
runner.makeRequest('get', '/testRequest');
160+
createTestServer(done)
161+
.get('/blockUrl', () => {}, 200)
162+
.get('/pass', () => {}, 200)
163+
.start()
164+
.then(([SERVER_URL, closeTestServer]) => {
165+
createRunner(__dirname, 'server-ignoreOutgoingRequests.js')
166+
.withEnv({ SERVER_URL })
167+
.expect({
168+
transaction: event => {
169+
expect(event.transaction).toBe('GET /testRequest');
170+
171+
const requestSpans = event.spans?.filter(span => span.op === 'http.client');
172+
expect(requestSpans).toHaveLength(1);
173+
expect(requestSpans![0]?.description).toBe(`GET ${SERVER_URL}/pass`);
174+
175+
const breadcrumbs = event.breadcrumbs?.filter(b => b.category === 'http');
176+
expect(breadcrumbs).toHaveLength(1);
177+
expect(breadcrumbs![0]?.data?.url).toEqual(`${SERVER_URL}/pass`);
178+
},
179+
})
180+
.start(closeTestServer)
181+
.makeRequest('get', '/testRequest');
182+
});
170183
});
171184
});
172185
});

0 commit comments

Comments
 (0)