Skip to content

Commit 23ca869

Browse files
committed
test(node): Add captureMessage integration tests.
1 parent 1c84fce commit 23ca869

File tree

5 files changed

+75
-12
lines changed

5 files changed

+75
-12
lines changed

packages/node-integration-tests/suites/public-api/capture-message/test.ts renamed to packages/node-integration-tests/suites/public-api/captureMessage/simple_message/test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { assertSentryEvent, getEventRequest, runServer } from '../../../utils';
1+
import { assertSentryEvent, getEventRequest, runServer } from '../../../../utils';
22

3-
test('should send captureMessage', async () => {
3+
test('should capture a simple message string', async () => {
44
const url = await runServer(__dirname);
55
const requestBody = await getEventRequest(url);
66

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import * as Sentry from '@sentry/node';
2+
3+
Sentry.init({
4+
dsn: 'https://public@dsn.ingest.sentry.io/1337',
5+
release: '1.0',
6+
});
7+
8+
Sentry.captureMessage('debug_message', Sentry.Severity.Debug);
9+
Sentry.captureMessage('info_message', Sentry.Severity.Info);
10+
Sentry.captureMessage('warning_message', Sentry.Severity.Warning);
11+
Sentry.captureMessage('error_message', Sentry.Severity.Error);
12+
Sentry.captureMessage('fatal_message', Sentry.Severity.Fatal);
13+
Sentry.captureMessage('critical_message', Sentry.Severity.Critical);
14+
Sentry.captureMessage('log_message', Sentry.Severity.Log);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { assertSentryEvent, getMultipleEventRequests, runServer } from '../../../../utils';
2+
3+
test('should capture with different severity levels', async () => {
4+
const url = await runServer(__dirname);
5+
const events = await getMultipleEventRequests(url, 7);
6+
7+
assertSentryEvent(events[0], {
8+
message: 'debug_message',
9+
level: 'debug',
10+
});
11+
12+
assertSentryEvent(events[1], {
13+
message: 'info_message',
14+
level: 'info',
15+
});
16+
17+
assertSentryEvent(events[2], {
18+
message: 'warning_message',
19+
level: 'warning',
20+
});
21+
22+
assertSentryEvent(events[3], {
23+
message: 'error_message',
24+
level: 'error',
25+
});
26+
27+
assertSentryEvent(events[4], {
28+
message: 'fatal_message',
29+
level: 'fatal',
30+
});
31+
32+
assertSentryEvent(events[5], {
33+
message: 'critical_message',
34+
level: 'critical',
35+
});
36+
37+
assertSentryEvent(events[6], {
38+
message: 'log_message',
39+
level: 'log',
40+
});
41+
});

packages/node-integration-tests/utils/index.ts

+18-10
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ import nock from 'nock';
55
import * as path from 'path';
66
import { getPortPromise } from 'portfinder';
77

8-
const assertSentryEvent = (actual: Record<string, unknown>, expected: Record<string, unknown>): void => {
8+
export const assertSentryEvent = (actual: Record<string, unknown>, expected: Record<string, unknown>): void => {
99
expect(actual).toMatchObject({
1010
event_id: expect.any(String),
1111
timestamp: expect.any(Number),
1212
...expected,
1313
});
1414
};
1515

16-
const assertSentryTransaction = (actual: Record<string, unknown>, expected: Record<string, unknown>): void => {
16+
export const assertSentryTransaction = (actual: Record<string, unknown>, expected: Record<string, unknown>): void => {
1717
expect(actual).toMatchObject({
1818
event_id: expect.any(String),
1919
timestamp: expect.any(Number),
@@ -24,24 +24,34 @@ const assertSentryTransaction = (actual: Record<string, unknown>, expected: Reco
2424
});
2525
};
2626

27-
const parseEnvelope = (body: string): Array<Record<string, unknown>> => {
27+
export const parseEnvelope = (body: string): Array<Record<string, unknown>> => {
2828
return body.split('\n').map(e => JSON.parse(e));
2929
};
3030

31-
const getEventRequest = async (url: string): Promise<Record<string, unknown>> => {
31+
export const getMultipleEventRequests = async (url: string, count: number): Promise<Array<Record<string, unknown>>> => {
32+
const events: Record<string, unknown>[] = [];
33+
3234
return new Promise(resolve => {
3335
nock('https://dsn.ingest.sentry.io')
3436
.post('/api/1337/store/', body => {
35-
resolve(body);
37+
events.push(body);
38+
39+
if (events.length === count) {
40+
resolve(events);
41+
}
3642
return true;
3743
})
44+
.times(7)
3845
.reply(200);
39-
4046
http.get(url);
4147
});
4248
};
4349

44-
const getEnvelopeRequest = async (url: string): Promise<Array<Record<string, unknown>>> => {
50+
export const getEventRequest = async (url: string): Promise<Record<string, unknown>> => {
51+
return (await getMultipleEventRequests(url, 1))[0];
52+
};
53+
54+
export const getEnvelopeRequest = async (url: string): Promise<Array<Record<string, unknown>>> => {
4555
return new Promise(resolve => {
4656
nock('https://dsn.ingest.sentry.io')
4757
.post('/api/1337/envelope/', body => {
@@ -55,7 +65,7 @@ const getEnvelopeRequest = async (url: string): Promise<Array<Record<string, unk
5565
});
5666
};
5767

58-
async function runServer(testDir: string, serverPath?: string, scenarioPath?: string): Promise<string> {
68+
export async function runServer(testDir: string, serverPath?: string, scenarioPath?: string): Promise<string> {
5969
const port = await getPortPromise();
6070
const url = `http://localhost:${port}/test`;
6171
const defaultServerPath = path.resolve(process.cwd(), 'utils', 'defaults', 'server');
@@ -77,5 +87,3 @@ async function runServer(testDir: string, serverPath?: string, scenarioPath?: st
7787

7888
return url;
7989
}
80-
81-
export { assertSentryEvent, assertSentryTransaction, parseEnvelope, getEventRequest, getEnvelopeRequest, runServer };

0 commit comments

Comments
 (0)