@@ -15,7 +15,7 @@ import {describeWithMockConnection} from '../../testing/MockConnection.js';
1515import { createNetworkPanelForMockConnection } from '../../testing/NetworkHelpers.js' ;
1616import * as Coordinator from '../../ui/components/render_coordinator/render_coordinator.js' ;
1717
18- import { allowHeader , DrJonesNetworkAgent , ResponseType } from './freestyler.js' ;
18+ import { allowHeader , DrJonesNetworkAgent , formatInitiatorUrl , ResponseType } from './freestyler.js' ;
1919
2020const coordinator = Coordinator . RenderCoordinator . RenderCoordinator . instance ( ) ;
2121
@@ -236,7 +236,7 @@ describeWithMockConnection('DrJonesNetworkAgent', () => {
236236 } ,
237237 {
238238 title : 'Request initiator chain' ,
239- text : `- URL: https://www. initiator.com
239+ text : `- URL: <redacted cross-origin initiator URL>
240240\t- URL: https://www.example.com
241241\t\t- URL: https://www.example.com/1
242242\t\t- URL: https://www.example.com/2` ,
@@ -246,7 +246,7 @@ describeWithMockConnection('DrJonesNetworkAgent', () => {
246246 {
247247 type : ResponseType . QUERYING ,
248248 query :
249- '# Selected network request \nRequest: https://www.example.com\n\nRequest headers:\ncontent-type: bar1\n\nResponse headers:\ncontent-type: bar2\nx-forwarded-for: bar3\n\nResponse status: 200 \n\nRequest timing:\nQueued at (timestamp): 0 μs\nStarted at (timestamp): 8.3 min\nQueueing (duration): 8.3 min\nConnection start (stalled) (duration): 800.00 ms\nRequest sent (duration): 100.00 ms\nDuration (duration): 8.3 min\n\nRequest initiator chain:\n- URL: https://www. initiator.com \n\t- URL: https://www.example.com\n\t\t- URL: https://www.example.com/1\n\t\t- URL: https://www.example.com/2\n\n# User request\n\ntest' ,
249+ '# Selected network request \nRequest: https://www.example.com\n\nRequest headers:\ncontent-type: bar1\n\nResponse headers:\ncontent-type: bar2\nx-forwarded-for: bar3\n\nResponse status: 200 \n\nRequest timing:\nQueued at (timestamp): 0 μs\nStarted at (timestamp): 8.3 min\nQueueing (duration): 8.3 min\nConnection start (stalled) (duration): 800.00 ms\nRequest sent (duration): 100.00 ms\nDuration (duration): 8.3 min\n\nRequest initiator chain:\n- URL: <redacted cross-origin initiator URL> \n\t- URL: https://www.example.com\n\t\t- URL: https://www.example.com/1\n\t\t- URL: https://www.example.com/2\n\n# User request\n\ntest' ,
250250 } ,
251251 {
252252 type : ResponseType . ANSWER ,
@@ -277,7 +277,7 @@ Request sent (duration): 100.00 ms
277277Duration (duration): 8.3 min
278278
279279Request initiator chain:
280- - URL: https://www. initiator.com
280+ - URL: <redacted cross-origin initiator URL>
281281\t- URL: https://www.example.com
282282\t\t- URL: https://www.example.com/1
283283\t\t- URL: https://www.example.com/2
@@ -305,4 +305,51 @@ test`,
305305 assert . isFalse ( allowHeader ( { name : 'authorization' , value : 'foo' } ) ) ;
306306 } ) ;
307307 } ) ;
308+
309+ describe ( 'formatInitiatorUrl' , ( ) => {
310+ const tests = [
311+ {
312+ allowedResource : 'https://example.test' ,
313+ targetResource : 'https://example.test' ,
314+ shouldBeRedacted : false ,
315+ } ,
316+ {
317+ allowedResource : 'https://example.test' ,
318+ targetResource : 'https://another-example.test' ,
319+ shouldBeRedacted : true ,
320+ } ,
321+ {
322+ allowedResource : 'file://test' ,
323+ targetResource : 'https://another-example.test' ,
324+ shouldBeRedacted : true ,
325+ } ,
326+ {
327+ allowedResource : 'https://another-example.test' ,
328+ targetResource : 'file://test' ,
329+ shouldBeRedacted : true ,
330+ } ,
331+ {
332+ allowedResource : 'https://test.example.test' ,
333+ targetResource : 'https://example.test' ,
334+ shouldBeRedacted : true ,
335+ } ,
336+ {
337+ allowedResource : 'https://test.example.test:9900' ,
338+ targetResource : 'https://test.example.test:9901' ,
339+ shouldBeRedacted : true ,
340+ } ,
341+ ] ;
342+
343+ for ( const t of tests ) {
344+ it ( `${ t . targetResource } test when allowed resource is ${ t . allowedResource } ` , ( ) => {
345+ const formatted = formatInitiatorUrl ( new URL ( t . targetResource ) . origin , new URL ( t . allowedResource ) . origin ) ;
346+ if ( t . shouldBeRedacted ) {
347+ assert . strictEqual (
348+ formatted , '<redacted cross-origin initiator URL>' , `${ JSON . stringify ( t ) } was not redacted` ) ;
349+ } else {
350+ assert . strictEqual ( formatted , t . targetResource , `${ JSON . stringify ( t ) } was redacted` ) ;
351+ }
352+ } ) ;
353+ }
354+ } ) ;
308355} ) ;
0 commit comments