@@ -7,20 +7,7 @@ import * as Instabug from '../../src/modules/Instabug';
7
7
import * as NetworkLogger from '../../src/modules/NetworkLogger' ;
8
8
import { NativeCrashReporting } from '../../src/native/NativeCrashReporting' ;
9
9
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' ;
24
11
25
12
import {
26
13
NativeNetworkLogger ,
@@ -207,9 +194,9 @@ describe('Instabug Utils', () => {
207
194
const remoteSenderCallback = NativeCrashReporting . sendHandledJSCrash ;
208
195
Platform . OS = 'android' ;
209
196
const errorMock = new TypeError ( 'Invalid type' ) ;
210
- const jsStackTrace = getStackTrace ( errorMock ) ;
197
+ const jsStackTrace = InstabugUtils . getStackTrace ( errorMock ) ;
211
198
212
- sendCrashReport ( errorMock , ( data ) =>
199
+ InstabugUtils . sendCrashReport ( errorMock , ( data ) =>
213
200
remoteSenderCallback ( data , null , null , NonFatalErrorLevel . error ) ,
214
201
) ;
215
202
@@ -235,9 +222,9 @@ describe('Instabug Utils', () => {
235
222
const remoteSenderCallback = NativeCrashReporting . sendHandledJSCrash ;
236
223
Platform . OS = 'ios' ;
237
224
const errorMock = new TypeError ( 'Invalid type' ) ;
238
- const jsStackTrace = getStackTrace ( errorMock ) ;
225
+ const jsStackTrace = InstabugUtils . getStackTrace ( errorMock ) ;
239
226
240
- sendCrashReport ( errorMock , ( data ) =>
227
+ InstabugUtils . sendCrashReport ( errorMock , ( data ) =>
241
228
remoteSenderCallback ( data , null , null , NonFatalErrorLevel . error ) ,
242
229
) ;
243
230
const expectedMap = {
@@ -294,7 +281,7 @@ describe('reportNetworkLog', () => {
294
281
295
282
const requestHeaders = JSON . stringify ( network . requestHeaders ) ;
296
283
const responseHeaders = JSON . stringify ( network . responseHeaders ) ;
297
- reportNetworkLog ( network ) ;
284
+ InstabugUtils . reportNetworkLog ( network ) ;
298
285
299
286
expect ( NativeInstabug . networkLogAndroid ) . toHaveBeenCalledTimes ( 1 ) ;
300
287
expect ( NativeInstabug . networkLogAndroid ) . toHaveBeenCalledWith (
@@ -339,7 +326,7 @@ describe('reportNetworkLog', () => {
339
326
it ( 'reportNetworkLog should send network logs to native with the correct parameters on iOS' , ( ) => {
340
327
Platform . OS = 'ios' ;
341
328
342
- reportNetworkLog ( network ) ;
329
+ InstabugUtils . reportNetworkLog ( network ) ;
343
330
344
331
expect ( NativeInstabug . networkLogIOS ) . toHaveBeenCalledTimes ( 1 ) ;
345
332
expect ( NativeInstabug . networkLogIOS ) . toHaveBeenCalledWith (
@@ -401,7 +388,7 @@ describe('test registerNetworkLogsListener usage', () => {
401
388
} ;
402
389
403
390
it ( 'registerObfuscationListener should call NetworkLogger.registerNetworkLogsListener() with NetworkListenerType = NetworkListenerType.obfuscation' , ( ) => {
404
- registerObfuscationListener ( ) ;
391
+ InstabugUtils . registerObfuscationListener ( ) ;
405
392
expect ( NetworkLogger . registerNetworkLogsListener ) . toBeCalledTimes ( 1 ) ;
406
393
expect ( NetworkLogger . registerNetworkLogsListener ) . toBeCalledWith (
407
394
NetworkListenerType . obfuscation ,
@@ -411,7 +398,7 @@ describe('test registerNetworkLogsListener usage', () => {
411
398
412
399
it ( 'registerFilteringListener should call NetworkLogger.registerNetworkLogsListener() with NetworkListenerType = NetworkListenerType.filtering' , ( ) => {
413
400
const testText = 'true' ;
414
- registerFilteringListener ( testText ) ;
401
+ InstabugUtils . registerFilteringListener ( testText ) ;
415
402
416
403
expect ( NetworkLogger . registerNetworkLogsListener ) . toBeCalledTimes ( 1 ) ;
417
404
expect ( NetworkLogger . registerNetworkLogsListener ) . toBeCalledWith (
@@ -422,7 +409,7 @@ describe('test registerNetworkLogsListener usage', () => {
422
409
423
410
it ( 'registerFilteringAndObfuscationListener should call NetworkLogger.registerNetworkLogsListener() with NetworkListenerType = NetworkListenerType.both' , ( ) => {
424
411
const testText = 'true' ;
425
- registerFilteringAndObfuscationListener ( testText ) ;
412
+ InstabugUtils . registerFilteringAndObfuscationListener ( testText ) ;
426
413
427
414
expect ( NetworkLogger . registerNetworkLogsListener ) . toBeCalledTimes ( 1 ) ;
428
415
expect ( NetworkLogger . registerNetworkLogsListener ) . toBeCalledWith (
@@ -433,23 +420,23 @@ describe('test registerNetworkLogsListener usage', () => {
433
420
434
421
it ( 'should call NetworkLoggerEmitter.removeAllListeners when call resetNativeObfuscationListener' , ( ) => {
435
422
jest . spyOn ( NetworkLoggerEmitter , 'removeAllListeners' ) . mockImplementation ( ) ;
436
- resetNativeObfuscationListener ( ) ;
423
+ InstabugUtils . resetNativeObfuscationListener ( ) ;
437
424
expect ( NetworkLoggerEmitter . removeAllListeners ) . toBeCalledTimes ( 1 ) ;
438
425
} ) ;
439
426
440
427
it ( 'should call NativeNetworkLogger.resetNetworkLogsListener when call resetNativeObfuscationListener on android platform' , ( ) => {
441
428
Platform . OS = 'android' ;
442
429
jest . spyOn ( NativeNetworkLogger , 'resetNetworkLogsListener' ) . mockImplementation ( ) ;
443
430
jest . spyOn ( NetworkLoggerEmitter , 'removeAllListeners' ) . mockImplementation ( ) ;
444
- resetNativeObfuscationListener ( ) ;
431
+ InstabugUtils . resetNativeObfuscationListener ( ) ;
445
432
expect ( NativeNetworkLogger . resetNetworkLogsListener ) . toBeCalledTimes ( 1 ) ;
446
433
expect ( NetworkLoggerEmitter . removeAllListeners ) . toBeCalledTimes ( 1 ) ;
447
434
} ) ;
448
435
449
436
it ( 'should call NativeNetworkLogger.updateNetworkLogSnapshot when call updateNetworkLogSnapshot with correct parameters' , ( ) => {
450
437
jest . spyOn ( NativeNetworkLogger , 'updateNetworkLogSnapshot' ) . mockImplementation ( ) ;
451
438
452
- updateNetworkLogSnapshot ( network ) ;
439
+ InstabugUtils . updateNetworkLogSnapshot ( network ) ;
453
440
expect ( NativeNetworkLogger . updateNetworkLogSnapshot ) . toBeCalledTimes ( 1 ) ;
454
441
expect ( NativeNetworkLogger . updateNetworkLogSnapshot ) . toHaveBeenCalledWith (
455
442
network . url ,
@@ -463,19 +450,19 @@ describe('test registerNetworkLogsListener usage', () => {
463
450
} ) ;
464
451
} ) ;
465
452
466
- describe ( 'InstabugUtils - Additional Coverage ' , ( ) => {
453
+ describe ( 'InstabugUtils' , ( ) => {
467
454
it ( 'setApmNetworkFlagsIfChanged should return true if flags change' , ( ) => {
468
455
const flags = {
469
456
isNativeInterceptionFeatureEnabled : true ,
470
457
hasAPMNetworkPlugin : true ,
471
458
shouldEnableNativeInterception : true ,
472
459
} ;
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 ) ;
475
462
} ) ;
476
463
477
464
it ( 'generateTracePartialId should return a non-zero hex string and number' , ( ) => {
478
- const { numberPartilId, hexStringPartialId } = generateTracePartialId ( ) ;
465
+ const { numberPartilId, hexStringPartialId } = InstabugUtils . generateTracePartialId ( ) ;
479
466
expect ( hexStringPartialId ) . toMatch ( / ^ [ 0 - 9 a - f ] { 8 } $ / ) ;
480
467
expect ( hexStringPartialId ) . not . toBe ( '00000000' ) ;
481
468
expect ( typeof numberPartilId ) . toBe ( 'number' ) ;
@@ -484,7 +471,7 @@ describe('InstabugUtils - Additional Coverage', () => {
484
471
485
472
it ( 'generateW3CHeader should return a valid w3c header object' , ( ) => {
486
473
const now = Date . now ( ) ;
487
- const result = generateW3CHeader ( now ) ;
474
+ const result = InstabugUtils . generateW3CHeader ( now ) ;
488
475
expect ( result ) . toHaveProperty ( 'timestampInSeconds' ) ;
489
476
expect ( result ) . toHaveProperty ( 'partialId' ) ;
490
477
expect ( result ) . toHaveProperty ( 'w3cHeader' ) ;
@@ -493,9 +480,67 @@ describe('InstabugUtils - Additional Coverage', () => {
493
480
} ) ;
494
481
495
482
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 ( ) ;
500
545
} ) ;
501
546
} ) ;
0 commit comments