@@ -240,6 +240,46 @@ describe('licensing plugin', () => {
240
240
expect ( coreSetup . http . get ) . toHaveBeenCalledTimes ( 1 ) ;
241
241
} ) ;
242
242
243
+ it ( 'http interceptor does not trigger re-fetch if signature header is not present' , async ( ) => {
244
+ const sessionStorage = coreMock . createStorage ( ) ;
245
+ plugin = new LicensingPlugin ( coreMock . createPluginInitializerContext ( ) , sessionStorage ) ;
246
+
247
+ const coreSetup = coreMock . createSetup ( ) ;
248
+
249
+ coreSetup . http . get . mockResolvedValue ( licenseMock . createLicense ( { signature : 'signature-1' } ) ) ;
250
+
251
+ let registeredInterceptor : HttpInterceptor ;
252
+ coreSetup . http . intercept . mockImplementation ( ( interceptor : HttpInterceptor ) => {
253
+ registeredInterceptor = interceptor ;
254
+ return ( ) => undefined ;
255
+ } ) ;
256
+
257
+ await plugin . setup ( coreSetup ) ;
258
+ await plugin . start ( coreStart ) ;
259
+ expect ( registeredInterceptor ! . response ) . toBeDefined ( ) ;
260
+
261
+ const httpResponse = {
262
+ response : {
263
+ headers : {
264
+ get ( name : string ) {
265
+ if ( name === 'kbn-license-sig' ) {
266
+ return undefined ;
267
+ }
268
+ throw new Error ( 'unexpected header' ) ;
269
+ } ,
270
+ } ,
271
+ } ,
272
+ request : {
273
+ url : 'http://10.10.10.10:5601/api/hello' ,
274
+ } ,
275
+ } ;
276
+ expect ( coreSetup . http . get ) . toHaveBeenCalledTimes ( 0 ) ;
277
+
278
+ await registeredInterceptor ! . response ! ( httpResponse as any , null as any ) ;
279
+
280
+ expect ( coreSetup . http . get ) . toHaveBeenCalledTimes ( 0 ) ;
281
+ } ) ;
282
+
243
283
it ( 'http interceptor does not trigger license re-fetch for anonymous pages' , async ( ) => {
244
284
const sessionStorage = coreMock . createStorage ( ) ;
245
285
plugin = new LicensingPlugin ( coreMock . createPluginInitializerContext ( ) , sessionStorage ) ;
0 commit comments