@@ -361,4 +361,43 @@ public function test_responsable_with_invalid_key(): void
361361 $ page ['props ' ]['resource ' ]
362362 );
363363 }
364+
365+ public function test_the_page_url_is_prefixed_with_the_proxy_prefix (): void
366+ {
367+ if (version_compare (app ()->version (), '7 ' , '< ' )) {
368+ $ this ->markTestSkipped ('This test requires Laravel 7 or higher. ' );
369+ }
370+
371+ Request::setTrustedProxies (['1.2.3.4 ' ], Request::HEADER_X_FORWARDED_PREFIX );
372+
373+ $ request = Request::create ('/user/123 ' , 'GET ' );
374+ $ request ->server ->set ('REMOTE_ADDR ' , '1.2.3.4 ' );
375+ $ request ->headers ->set ('X_FORWARDED_PREFIX ' , '/sub/directory ' );
376+
377+ $ user = ['name ' => 'Jonathan ' ];
378+ $ response = new Response ('User/Edit ' , ['user ' => $ user ], 'app ' , '123 ' );
379+ $ response = $ response ->toResponse ($ request );
380+ $ view = $ response ->getOriginalContent ();
381+ $ page = $ view ->getData ()['page ' ];
382+
383+ $ this ->assertInstanceOf (BaseResponse::class, $ response );
384+ $ this ->assertInstanceOf (View::class, $ view );
385+
386+ $ this ->assertSame ('/sub/directory/user/123 ' , $ page ['url ' ]);
387+ }
388+
389+ public function test_the_page_url_doesnt_double_up (): void
390+ {
391+ $ request = Request::create ('/subpath/product/123 ' , 'GET ' , [], [], [], [
392+ 'SCRIPT_FILENAME ' => '/project/public/index.php ' ,
393+ 'SCRIPT_NAME ' => '/subpath/index.php ' ,
394+ ]);
395+ $ request ->headers ->add (['X-Inertia ' => 'true ' ]);
396+
397+ $ response = new Response ('Product/Show ' , []);
398+ $ response = $ response ->toResponse ($ request );
399+ $ page = $ response ->getData ();
400+
401+ $ this ->assertSame ('/subpath/product/123 ' , $ page ->url );
402+ }
364403}
0 commit comments