Skip to content

Commit 3859b04

Browse files
committed
fix: increase coverage
1 parent 7647368 commit 3859b04

File tree

2 files changed

+81
-36
lines changed

2 files changed

+81
-36
lines changed

src/utils/InstabugUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export const getActiveRouteName = (navigationState: NavigationStateV4): string |
7474
return route.routeName;
7575
};
7676

77-
function getFullRoute(state: NavigationStateV5 | PartialState<NavigationStateV5>): string {
77+
export function getFullRoute(state: NavigationStateV5 | PartialState<NavigationStateV5>): string {
7878
try {
7979
if (!state.routes[state.index!].state) {
8080
return state.routes[state.index!].name;

test/utils/InstabugUtils.spec.ts

Lines changed: 80 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,7 @@ import * as Instabug from '../../src/modules/Instabug';
77
import * as NetworkLogger from '../../src/modules/NetworkLogger';
88
import { NativeCrashReporting } from '../../src/native/NativeCrashReporting';
99
import { InvocationEvent, NetworkData, NonFatalErrorLevel } from '../../src';
10-
import InstabugUtils, {
11-
getStackTrace,
12-
registerFilteringAndObfuscationListener,
13-
registerFilteringListener,
14-
registerObfuscationListener,
15-
reportNetworkLog,
16-
resetNativeObfuscationListener,
17-
sendCrashReport,
18-
updateNetworkLogSnapshot,
19-
setApmNetworkFlagsIfChanged,
20-
generateTracePartialId,
21-
generateW3CHeader,
22-
isContentTypeNotAllowed,
23-
} from '../../src/utils/InstabugUtils';
10+
import * as InstabugUtils from '../../src/utils/InstabugUtils';
2411

2512
import {
2613
NativeNetworkLogger,
@@ -207,9 +194,9 @@ describe('Instabug Utils', () => {
207194
const remoteSenderCallback = NativeCrashReporting.sendHandledJSCrash;
208195
Platform.OS = 'android';
209196
const errorMock = new TypeError('Invalid type');
210-
const jsStackTrace = getStackTrace(errorMock);
197+
const jsStackTrace = InstabugUtils.getStackTrace(errorMock);
211198

212-
sendCrashReport(errorMock, (data) =>
199+
InstabugUtils.sendCrashReport(errorMock, (data) =>
213200
remoteSenderCallback(data, null, null, NonFatalErrorLevel.error),
214201
);
215202

@@ -235,9 +222,9 @@ describe('Instabug Utils', () => {
235222
const remoteSenderCallback = NativeCrashReporting.sendHandledJSCrash;
236223
Platform.OS = 'ios';
237224
const errorMock = new TypeError('Invalid type');
238-
const jsStackTrace = getStackTrace(errorMock);
225+
const jsStackTrace = InstabugUtils.getStackTrace(errorMock);
239226

240-
sendCrashReport(errorMock, (data) =>
227+
InstabugUtils.sendCrashReport(errorMock, (data) =>
241228
remoteSenderCallback(data, null, null, NonFatalErrorLevel.error),
242229
);
243230
const expectedMap = {
@@ -294,7 +281,7 @@ describe('reportNetworkLog', () => {
294281

295282
const requestHeaders = JSON.stringify(network.requestHeaders);
296283
const responseHeaders = JSON.stringify(network.responseHeaders);
297-
reportNetworkLog(network);
284+
InstabugUtils.reportNetworkLog(network);
298285

299286
expect(NativeInstabug.networkLogAndroid).toHaveBeenCalledTimes(1);
300287
expect(NativeInstabug.networkLogAndroid).toHaveBeenCalledWith(
@@ -339,7 +326,7 @@ describe('reportNetworkLog', () => {
339326
it('reportNetworkLog should send network logs to native with the correct parameters on iOS', () => {
340327
Platform.OS = 'ios';
341328

342-
reportNetworkLog(network);
329+
InstabugUtils.reportNetworkLog(network);
343330

344331
expect(NativeInstabug.networkLogIOS).toHaveBeenCalledTimes(1);
345332
expect(NativeInstabug.networkLogIOS).toHaveBeenCalledWith(
@@ -401,7 +388,7 @@ describe('test registerNetworkLogsListener usage', () => {
401388
};
402389

403390
it('registerObfuscationListener should call NetworkLogger.registerNetworkLogsListener() with NetworkListenerType = NetworkListenerType.obfuscation', () => {
404-
registerObfuscationListener();
391+
InstabugUtils.registerObfuscationListener();
405392
expect(NetworkLogger.registerNetworkLogsListener).toBeCalledTimes(1);
406393
expect(NetworkLogger.registerNetworkLogsListener).toBeCalledWith(
407394
NetworkListenerType.obfuscation,
@@ -411,7 +398,7 @@ describe('test registerNetworkLogsListener usage', () => {
411398

412399
it('registerFilteringListener should call NetworkLogger.registerNetworkLogsListener() with NetworkListenerType = NetworkListenerType.filtering', () => {
413400
const testText = 'true';
414-
registerFilteringListener(testText);
401+
InstabugUtils.registerFilteringListener(testText);
415402

416403
expect(NetworkLogger.registerNetworkLogsListener).toBeCalledTimes(1);
417404
expect(NetworkLogger.registerNetworkLogsListener).toBeCalledWith(
@@ -422,7 +409,7 @@ describe('test registerNetworkLogsListener usage', () => {
422409

423410
it('registerFilteringAndObfuscationListener should call NetworkLogger.registerNetworkLogsListener() with NetworkListenerType = NetworkListenerType.both', () => {
424411
const testText = 'true';
425-
registerFilteringAndObfuscationListener(testText);
412+
InstabugUtils.registerFilteringAndObfuscationListener(testText);
426413

427414
expect(NetworkLogger.registerNetworkLogsListener).toBeCalledTimes(1);
428415
expect(NetworkLogger.registerNetworkLogsListener).toBeCalledWith(
@@ -433,23 +420,23 @@ describe('test registerNetworkLogsListener usage', () => {
433420

434421
it('should call NetworkLoggerEmitter.removeAllListeners when call resetNativeObfuscationListener', () => {
435422
jest.spyOn(NetworkLoggerEmitter, 'removeAllListeners').mockImplementation();
436-
resetNativeObfuscationListener();
423+
InstabugUtils.resetNativeObfuscationListener();
437424
expect(NetworkLoggerEmitter.removeAllListeners).toBeCalledTimes(1);
438425
});
439426

440427
it('should call NativeNetworkLogger.resetNetworkLogsListener when call resetNativeObfuscationListener on android platform', () => {
441428
Platform.OS = 'android';
442429
jest.spyOn(NativeNetworkLogger, 'resetNetworkLogsListener').mockImplementation();
443430
jest.spyOn(NetworkLoggerEmitter, 'removeAllListeners').mockImplementation();
444-
resetNativeObfuscationListener();
431+
InstabugUtils.resetNativeObfuscationListener();
445432
expect(NativeNetworkLogger.resetNetworkLogsListener).toBeCalledTimes(1);
446433
expect(NetworkLoggerEmitter.removeAllListeners).toBeCalledTimes(1);
447434
});
448435

449436
it('should call NativeNetworkLogger.updateNetworkLogSnapshot when call updateNetworkLogSnapshot with correct parameters', () => {
450437
jest.spyOn(NativeNetworkLogger, 'updateNetworkLogSnapshot').mockImplementation();
451438

452-
updateNetworkLogSnapshot(network);
439+
InstabugUtils.updateNetworkLogSnapshot(network);
453440
expect(NativeNetworkLogger.updateNetworkLogSnapshot).toBeCalledTimes(1);
454441
expect(NativeNetworkLogger.updateNetworkLogSnapshot).toHaveBeenCalledWith(
455442
network.url,
@@ -463,19 +450,19 @@ describe('test registerNetworkLogsListener usage', () => {
463450
});
464451
});
465452

466-
describe('InstabugUtils - Additional Coverage', () => {
453+
describe('InstabugUtils', () => {
467454
it('setApmNetworkFlagsIfChanged should return true if flags change', () => {
468455
const flags = {
469456
isNativeInterceptionFeatureEnabled: true,
470457
hasAPMNetworkPlugin: true,
471458
shouldEnableNativeInterception: true,
472459
};
473-
expect(setApmNetworkFlagsIfChanged(flags)).toBe(true);
474-
expect(setApmNetworkFlagsIfChanged(flags)).toBe(false);
460+
expect(InstabugUtils.setApmNetworkFlagsIfChanged(flags)).toBe(true);
461+
expect(InstabugUtils.setApmNetworkFlagsIfChanged(flags)).toBe(false);
475462
});
476463

477464
it('generateTracePartialId should return a non-zero hex string and number', () => {
478-
const { numberPartilId, hexStringPartialId } = generateTracePartialId();
465+
const { numberPartilId, hexStringPartialId } = InstabugUtils.generateTracePartialId();
479466
expect(hexStringPartialId).toMatch(/^[0-9a-f]{8}$/);
480467
expect(hexStringPartialId).not.toBe('00000000');
481468
expect(typeof numberPartilId).toBe('number');
@@ -484,7 +471,7 @@ describe('InstabugUtils - Additional Coverage', () => {
484471

485472
it('generateW3CHeader should return a valid w3c header object', () => {
486473
const now = Date.now();
487-
const result = generateW3CHeader(now);
474+
const result = InstabugUtils.generateW3CHeader(now);
488475
expect(result).toHaveProperty('timestampInSeconds');
489476
expect(result).toHaveProperty('partialId');
490477
expect(result).toHaveProperty('w3cHeader');
@@ -493,9 +480,67 @@ describe('InstabugUtils - Additional Coverage', () => {
493480
});
494481

495482
it('isContentTypeNotAllowed should return false for allowed types and true for not allowed', () => {
496-
expect(isContentTypeNotAllowed('application/json')).toBe(false);
497-
expect(isContentTypeNotAllowed('text/plain')).toBe(false);
498-
expect(isContentTypeNotAllowed('image/png')).toBe(true);
499-
expect(isContentTypeNotAllowed('application/pdf')).toBe(true);
483+
expect(InstabugUtils.isContentTypeNotAllowed('application/json')).toBe(false);
484+
expect(InstabugUtils.isContentTypeNotAllowed('text/plain')).toBe(false);
485+
expect(InstabugUtils.isContentTypeNotAllowed('image/png')).toBe(true);
486+
expect(InstabugUtils.isContentTypeNotAllowed('application/pdf')).toBe(true);
487+
});
488+
});
489+
490+
describe('checkNetworkRequestHandlers', () => {
491+
let registerNetworkLogsListenerSpy: jest.SpyInstance;
492+
493+
beforeEach(() => {
494+
jest.clearAllMocks();
495+
registerNetworkLogsListenerSpy = jest
496+
.spyOn(NetworkLogger, 'registerNetworkLogsListener')
497+
.mockImplementation(jest.fn());
498+
});
499+
500+
it('should register for both if obfuscation handler and filter expression exist', () => {
501+
jest.spyOn(NetworkLogger, 'getNetworkDataObfuscationHandler').mockReturnValue(jest.fn());
502+
jest.spyOn(NetworkLogger, 'hasRequestFilterExpression').mockReturnValue(true);
503+
jest.spyOn(NetworkLogger, 'getRequestFilterExpression').mockReturnValue('true');
504+
505+
InstabugUtils.checkNetworkRequestHandlers();
506+
507+
expect(registerNetworkLogsListenerSpy).toHaveBeenCalledWith(
508+
NetworkListenerType.both,
509+
expect.any(Function),
510+
);
511+
});
512+
513+
it('should register for obfuscation only if only obfuscation handler exists', () => {
514+
jest.spyOn(NetworkLogger, 'getNetworkDataObfuscationHandler').mockReturnValue(jest.fn());
515+
jest.spyOn(NetworkLogger, 'hasRequestFilterExpression').mockReturnValue(false);
516+
517+
InstabugUtils.checkNetworkRequestHandlers();
518+
519+
expect(registerNetworkLogsListenerSpy).toHaveBeenCalledWith(
520+
NetworkListenerType.obfuscation,
521+
expect.any(Function),
522+
);
523+
});
524+
525+
it('should register for filtering only if only filter expression exists', () => {
526+
jest.spyOn(NetworkLogger, 'getNetworkDataObfuscationHandler').mockReturnValue(undefined);
527+
jest.spyOn(NetworkLogger, 'hasRequestFilterExpression').mockReturnValue(true);
528+
jest.spyOn(NetworkLogger, 'getRequestFilterExpression').mockReturnValue('true');
529+
530+
InstabugUtils.checkNetworkRequestHandlers();
531+
532+
expect(registerNetworkLogsListenerSpy).toHaveBeenCalledWith(
533+
NetworkListenerType.filtering,
534+
expect.any(Function),
535+
);
536+
});
537+
538+
it('should not register any listener if neither exist', () => {
539+
jest.spyOn(NetworkLogger, 'getNetworkDataObfuscationHandler').mockReturnValue(undefined);
540+
jest.spyOn(NetworkLogger, 'hasRequestFilterExpression').mockReturnValue(false);
541+
542+
InstabugUtils.checkNetworkRequestHandlers();
543+
544+
expect(registerNetworkLogsListenerSpy).not.toHaveBeenCalled();
500545
});
501546
});

0 commit comments

Comments
 (0)