Skip to content

Commit 5b2be56

Browse files
authored
Merge branch 'main' into alwx/fix/6076
2 parents c35ab54 + 5770407 commit 5b2be56

4 files changed

Lines changed: 45 additions & 46 deletions

File tree

dev-packages/e2e-tests/maestro/captureReplay.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,3 @@ jsEngine: graaljs
77
replaysOnErrorSampleRate: 1.0
88
- tapOn: "Capture Exception"
99
- runFlow: utils/assertEventIdVisible.yml
10-
- runFlow:
11-
file: utils/assertReplay.yml
12-
when:
13-
platform: iOS

dev-packages/e2e-tests/maestro/utils/assertReplay.yml

Lines changed: 0 additions & 23 deletions
This file was deleted.

packages/core/src/js/wrapper.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,11 @@ export const NATIVE: SentryNativeWrapper = {
262262
return false;
263263
}
264264

265+
if (options.dsn && options.dsn !== options.dsn.trim()) {
266+
debug.warn('The DSN contains whitespace which can cause native crashes. Whitespace has been trimmed.');
267+
options.dsn = options.dsn.trim();
268+
}
269+
265270
if (!options.dsn) {
266271
debug.warn(
267272
'Warning: No DSN was provided. The Sentry SDK will be disabled. Native SDK will also not be initalized.',

packages/core/test/wrapper.test.ts

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import type { ReactNativeOptions } from '../src/js/options';
1818
import { base64StringFromByteArray, utf8ToBytes } from '../src/js/vendor';
1919
import { NATIVE } from '../src/js/wrapper';
2020

21+
const VALID_DSN = 'https://key@sentry.io/123';
22+
2123
jest.mock('react-native', () => {
2224
let initPayload: ReactNativeOptions | null = null;
2325

@@ -109,7 +111,7 @@ describe('Tests Native Wrapper', () => {
109111
describe('startWithOptions', () => {
110112
test('calls native module', async () => {
111113
await NATIVE.initNativeSdk({
112-
dsn: 'test',
114+
dsn: VALID_DSN,
113115
enableNative: true,
114116
devServerUrl: undefined,
115117
defaultSidecarUrl: undefined,
@@ -135,11 +137,30 @@ describe('Tests Native Wrapper', () => {
135137
);
136138
});
137139

140+
test('trims whitespace from dsn and warns', async () => {
141+
debug.warn = jest.fn();
142+
143+
await NATIVE.initNativeSdk({
144+
dsn: ` ${VALID_DSN} `,
145+
enableNative: true,
146+
devServerUrl: undefined,
147+
defaultSidecarUrl: undefined,
148+
mobileReplayOptions: undefined,
149+
});
150+
151+
expect(debug.warn).toHaveBeenCalledWith(
152+
'The DSN contains whitespace which can cause native crashes. Whitespace has been trimmed.',
153+
);
154+
expect(RNSentry.initNativeSdk).toHaveBeenCalled();
155+
const initParameter = (RNSentry.initNativeSdk as jest.MockedFunction<any>).mock.calls[0][0];
156+
expect(initParameter.dsn).toBe(VALID_DSN);
157+
});
158+
138159
test('does not call native module with enableNative: false', async () => {
139160
debug.warn = jest.fn();
140161

141162
await NATIVE.initNativeSdk({
142-
dsn: 'test',
163+
dsn: VALID_DSN,
143164
enableNative: false,
144165
enableNativeNagger: true,
145166
devServerUrl: undefined,
@@ -154,7 +175,7 @@ describe('Tests Native Wrapper', () => {
154175

155176
test('filter beforeSend when initializing Native SDK', async () => {
156177
await NATIVE.initNativeSdk({
157-
dsn: 'test',
178+
dsn: VALID_DSN,
158179
enableNative: true,
159180
autoInitializeNativeSdk: true,
160181
beforeSend: jest.fn(),
@@ -172,7 +193,7 @@ describe('Tests Native Wrapper', () => {
172193

173194
test('filter beforeBreadcrumb when initializing Native SDK', async () => {
174195
await NATIVE.initNativeSdk({
175-
dsn: 'test',
196+
dsn: VALID_DSN,
176197
enableNative: true,
177198
autoInitializeNativeSdk: true,
178199
beforeBreadcrumb: jest.fn(),
@@ -190,7 +211,7 @@ describe('Tests Native Wrapper', () => {
190211

191212
test('filter beforeSendTransaction when initializing Native SDK', async () => {
192213
await NATIVE.initNativeSdk({
193-
dsn: 'test',
214+
dsn: VALID_DSN,
194215
enableNative: true,
195216
autoInitializeNativeSdk: true,
196217
beforeSendTransaction: jest.fn(),
@@ -208,7 +229,7 @@ describe('Tests Native Wrapper', () => {
208229

209230
test('filter beforeSendMetric when initializing Native SDK', async () => {
210231
await NATIVE.initNativeSdk({
211-
dsn: 'test',
232+
dsn: VALID_DSN,
212233
enableNative: true,
213234
autoInitializeNativeSdk: true,
214235
beforeSendMetric: jest.fn(),
@@ -226,7 +247,7 @@ describe('Tests Native Wrapper', () => {
226247

227248
test('passes attachAllThreads to native SDK', async () => {
228249
await NATIVE.initNativeSdk({
229-
dsn: 'test',
250+
dsn: VALID_DSN,
230251
enableNative: true,
231252
autoInitializeNativeSdk: true,
232253
attachAllThreads: true,
@@ -243,7 +264,7 @@ describe('Tests Native Wrapper', () => {
243264

244265
test('filter integrations when initializing Native SDK', async () => {
245266
await NATIVE.initNativeSdk({
246-
dsn: 'test',
267+
dsn: VALID_DSN,
247268
enableNative: true,
248269
autoInitializeNativeSdk: true,
249270
integrations: [],
@@ -264,7 +285,7 @@ describe('Tests Native Wrapper', () => {
264285
debug.warn = jest.fn();
265286

266287
await NATIVE.initNativeSdk({
267-
dsn: 'test',
288+
dsn: VALID_DSN,
268289
enableNative: true,
269290
autoInitializeNativeSdk: false,
270291
devServerUrl: undefined,
@@ -311,7 +332,7 @@ describe('Tests Native Wrapper', () => {
311332
devServerUrl: undefined,
312333
defaultSidecarUrl: undefined,
313334
mobileReplayOptions: undefined,
314-
dsn: 'test',
335+
dsn: VALID_DSN,
315336
enableNative: false,
316337
autoInitializeNativeSdk: false,
317338
});
@@ -333,7 +354,7 @@ describe('Tests Native Wrapper', () => {
333354
const regex1 = /foo/;
334355
const regex2 = new RegExp('bar');
335356
await NATIVE.initNativeSdk({
336-
dsn: 'test',
357+
dsn: VALID_DSN,
337358
enableNative: true,
338359
ignoreErrors: ['string1', regex1, 'string2', regex2],
339360
devServerUrl: undefined,
@@ -348,7 +369,7 @@ describe('Tests Native Wrapper', () => {
348369

349370
test('does not set ignoreErrorsStr or ignoreErrorsRegex if ignoreErrors is not provided', async () => {
350371
await NATIVE.initNativeSdk({
351-
dsn: 'test',
372+
dsn: VALID_DSN,
352373
enableNative: true,
353374
devServerUrl: undefined,
354375
defaultSidecarUrl: undefined,
@@ -362,7 +383,7 @@ describe('Tests Native Wrapper', () => {
362383

363384
test('does not set enableLogs when option is undefined', async () => {
364385
await NATIVE.initNativeSdk({
365-
dsn: 'test',
386+
dsn: VALID_DSN,
366387
enableNative: true,
367388
autoInitializeNativeSdk: true,
368389
devServerUrl: undefined,
@@ -382,7 +403,7 @@ describe('Tests Native Wrapper', () => {
382403
['with logsOrigin set to JS', 'js' as const, false],
383404
])('handles enableLogs %s', async (_description, logsOrigin, expectedEnableLogs) => {
384405
await NATIVE.initNativeSdk({
385-
dsn: 'test',
406+
dsn: VALID_DSN,
386407
enableNative: true,
387408
autoInitializeNativeSdk: true,
388409
enableLogs: true,
@@ -400,7 +421,7 @@ describe('Tests Native Wrapper', () => {
400421

401422
test('passes strictTraceContinuation option to native SDK', async () => {
402423
await NATIVE.initNativeSdk({
403-
dsn: 'test',
424+
dsn: VALID_DSN,
404425
enableNative: true,
405426
autoInitializeNativeSdk: true,
406427
strictTraceContinuation: true,
@@ -416,7 +437,7 @@ describe('Tests Native Wrapper', () => {
416437

417438
test('passes screenshot options to native SDK', async () => {
418439
await NATIVE.initNativeSdk({
419-
dsn: 'test',
440+
dsn: VALID_DSN,
420441
enableNative: true,
421442
autoInitializeNativeSdk: true,
422443
screenshot: {
@@ -442,7 +463,7 @@ describe('Tests Native Wrapper', () => {
442463

443464
test('passes orgId option to native SDK', async () => {
444465
await NATIVE.initNativeSdk({
445-
dsn: 'test',
466+
dsn: VALID_DSN,
446467
enableNative: true,
447468
autoInitializeNativeSdk: true,
448469
orgId: '12345',
@@ -520,7 +541,7 @@ describe('Tests Native Wrapper', () => {
520541
test('does not call RNSentry at all if enableNative is false', async () => {
521542
try {
522543
await NATIVE.initNativeSdk({
523-
dsn: 'test-dsn',
544+
dsn: VALID_DSN,
524545
enableNative: false,
525546
devServerUrl: undefined,
526547
defaultSidecarUrl: undefined,
@@ -825,7 +846,7 @@ describe('Tests Native Wrapper', () => {
825846
});
826847
test('does not call crash if enableNative is false', async () => {
827848
await NATIVE.initNativeSdk({
828-
dsn: 'test-dsn',
849+
dsn: VALID_DSN,
829850
enableNative: false,
830851
devServerUrl: undefined,
831852
defaultSidecarUrl: undefined,

0 commit comments

Comments
 (0)