@@ -7,20 +7,7 @@ import * as Instabug from '../../src/modules/Instabug';
77import * as NetworkLogger from '../../src/modules/NetworkLogger' ;
88import { NativeCrashReporting } from '../../src/native/NativeCrashReporting' ;
99import { 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
2512import {
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 - 9 a - 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