@@ -444,6 +444,97 @@ export class SenderTests extends AITestClass {
444444 }
445445 } ) ;
446446
447+ this . testCase ( {
448+ name : "zip test: gzip encode is working and content-encode header is set (feature opt-in)" ,
449+ pollDelay : 10 ,
450+ useFakeTimers : true ,
451+ useFakeServer : true ,
452+ test : ( ) => {
453+ this . genericSpy = this . sandbox . spy ( this . xhrOverride , 'sendPOST' ) ;
454+ let core = new AppInsightsCore ( ) ;
455+
456+ let coreConfig = {
457+ instrumentationKey : "000e0000-e000-0000-a000-000000000000" ,
458+ featureOptIn : { [ "zipPayload" ] : { mode : 3 } } ,
459+ extensionConfig : {
460+ [ this . _sender . identifier ] : {
461+ httpXHROverride : this . xhrOverride ,
462+ alwaysUseXhrOverride : true ,
463+ }
464+ }
465+ }
466+
467+ core . initialize ( coreConfig , [ this . _sender ] ) ;
468+
469+ const telemetryItem : ITelemetryItem = {
470+ name : 'fake item with some really long name to take up space quickly' ,
471+ iKey : 'iKey' ,
472+ baseType : 'some type' ,
473+ baseData : { }
474+ } ;
475+ this . _sender . processTelemetry ( telemetryItem ) ;
476+ this . _sender . flush ( ) ;
477+ this . clock . tick ( 10 ) ;
478+
479+ return this . _asyncQueue ( ) . concat ( PollingAssert . asyncTaskPollingAssert ( ( ) => {
480+ if ( this . genericSpy . called ) {
481+ let request = this . genericSpy . getCall ( 0 ) . args [ 0 ] ;
482+ let gzipData = request . data ;
483+ QUnit . assert . ok ( gzipData , "data should be set" ) ;
484+ QUnit . assert . equal ( true , gzipData [ 0 ] === 0x1F && gzipData [ 1 ] === 0x8B , "telemetry should be gzip encoded" ) ;
485+ QUnit . assert . equal ( request . headers [ "Content-Encoding" ] , "gzip" , "telemetry should be gzip encoded" ) ;
486+ return true ;
487+ }
488+ return false ;
489+ } , "Wait for promise response" + new Date ( ) . toISOString ( ) , 60 , 1000 ) ) ;
490+ }
491+ } ) ;
492+
493+ this . testCase ( {
494+ name : "zip test: gzip encode is disabled (feature opt-in not set)" ,
495+ pollDelay : 10 ,
496+ useFakeTimers : true ,
497+ useFakeServer : true ,
498+ test : ( ) => {
499+ this . genericSpy = this . sandbox . spy ( this . xhrOverride , 'sendPOST' ) ;
500+ let core = new AppInsightsCore ( ) ;
501+
502+ let coreConfig = {
503+ instrumentationKey : "000e0000-e000-0000-a000-000000000000" ,
504+ extensionConfig : {
505+ [ this . _sender . identifier ] : {
506+ httpXHROverride : this . xhrOverride ,
507+ alwaysUseXhrOverride : true ,
508+ }
509+ }
510+ }
511+
512+ core . initialize ( coreConfig , [ this . _sender ] ) ;
513+
514+ const telemetryItem : ITelemetryItem = {
515+ name : 'fake item with some really long name to take up space quickly' ,
516+ iKey : 'iKey' ,
517+ baseType : 'some type' ,
518+ baseData : { }
519+ } ;
520+ this . _sender . processTelemetry ( telemetryItem ) ;
521+ this . _sender . flush ( ) ;
522+ this . clock . tick ( 10 ) ;
523+
524+ return this . _asyncQueue ( ) . concat ( PollingAssert . asyncTaskPollingAssert ( ( ) => {
525+ if ( this . genericSpy . called ) {
526+ let request = this . genericSpy . getCall ( 0 ) . args [ 0 ] ;
527+ let gzipData = request . data ;
528+ QUnit . assert . ok ( gzipData , "data should be set" ) ;
529+ QUnit . assert . equal ( false , gzipData [ 0 ] === 0x1F && gzipData [ 1 ] === 0x8B , "telemetry should not be gzip encoded" ) ;
530+ QUnit . assert . ok ( ! ( "Content-Encoding" in request . headers ) , "telemetry should not be gzip encoded" ) ;
531+ return true ;
532+ }
533+ return false ;
534+ } , "Wait for promise response" + new Date ( ) . toISOString ( ) , 60 , 1000 ) ) ;
535+ }
536+ } ) ;
537+
447538 this . testCase ( {
448539 name : "Channel Config: Endpoint Url can be set from root dynamically" ,
449540 useFakeTimers : true ,
0 commit comments