@@ -449,6 +449,134 @@ public function testCanSetRoute()
449449 $ this ->assertEquals ($ this ->app ->getRoute (), $ route );
450450 }
451451
452+ public function testRouteInjectionAvailableInInit (): void
453+ {
454+ $ request = (new Request ())
455+ ->setMethod ('GET ' )
456+ ->setURI ('/route-inject-init ' );
457+
458+ Http::init ()
459+ ->inject ('route ' )
460+ ->inject ('response ' )
461+ ->action (function (Route $ route , Response $ response ) {
462+ $ response
463+ ->addHeader ('X-Init-Route ' , $ route ->getPath ())
464+ ->addHeader ('X-Init-Method ' , $ route ->getMethod ());
465+ });
466+
467+ Http::get ('/route-inject-init ' )
468+ ->action (function () {
469+ });
470+
471+ $ response = new Response ();
472+ $ this ->app ->run ($ request , $ response );
473+ $ headers = $ response ->getHeaders ();
474+
475+ $ this ->assertSame ('/route-inject-init ' , $ headers ['X-Init-Route ' ] ?? null );
476+ $ this ->assertSame ('GET ' , $ headers ['X-Init-Method ' ] ?? null );
477+ }
478+
479+ public function testRouteInjectionAvailableInRouteAction (): void
480+ {
481+ $ request = (new Request ())
482+ ->setMethod ('GET ' )
483+ ->setURI ('/route-inject-action ' );
484+
485+ Http::get ('/route-inject-action ' )
486+ ->inject ('route ' )
487+ ->inject ('response ' )
488+ ->action (function (Route $ route , Response $ response ) {
489+ $ response
490+ ->addHeader ('X-Action-Route ' , $ route ->getPath ())
491+ ->addHeader ('X-Action-Method ' , $ route ->getMethod ());
492+ });
493+
494+ $ response = new Response ();
495+ $ this ->app ->run ($ request , $ response );
496+ $ headers = $ response ->getHeaders ();
497+
498+ $ this ->assertSame ('/route-inject-action ' , $ headers ['X-Action-Route ' ] ?? null );
499+ $ this ->assertSame ('GET ' , $ headers ['X-Action-Method ' ] ?? null );
500+ }
501+
502+ public function testRouteInjectionAvailableForOptions (): void
503+ {
504+ $ request = (new Request ())
505+ ->setMethod ('OPTIONS ' )
506+ ->setURI ('/options-route ' );
507+
508+ Http::options ()
509+ ->inject ('route ' )
510+ ->inject ('response ' )
511+ ->action (function (Route $ route , Response $ response ) {
512+ $ response
513+ ->addHeader ('X-Options-Route ' , $ route ->getPath ())
514+ ->addHeader ('X-Options-Method ' , $ route ->getMethod ());
515+ });
516+
517+ $ response = new Response ();
518+ $ this ->app ->run ($ request , $ response );
519+ $ headers = $ response ->getHeaders ();
520+
521+ $ this ->assertSame ('/options-route ' , $ headers ['X-Options-Route ' ] ?? null );
522+ $ this ->assertSame ('OPTIONS ' , $ headers ['X-Options-Method ' ] ?? null );
523+ }
524+
525+ public function testRouteInjectionAvailableInShutdown (): void
526+ {
527+ $ request = (new Request ())
528+ ->setMethod ('GET ' )
529+ ->setURI ('/route-inject-shutdown ' );
530+
531+ Http::shutdown ()
532+ ->inject ('route ' )
533+ ->inject ('response ' )
534+ ->action (function (Route $ route , Response $ response ) {
535+ $ response
536+ ->addHeader ('X-Shutdown-Route ' , $ route ->getPath ())
537+ ->addHeader ('X-Shutdown-Method ' , $ route ->getMethod ());
538+ });
539+
540+ Http::get ('/route-inject-shutdown ' )
541+ ->action (function () {
542+ });
543+
544+ $ response = new Response ();
545+ $ this ->app ->run ($ request , $ response );
546+ $ headers = $ response ->getHeaders ();
547+
548+ $ this ->assertSame ('/route-inject-shutdown ' , $ headers ['X-Shutdown-Route ' ] ?? null );
549+ $ this ->assertSame ('GET ' , $ headers ['X-Shutdown-Method ' ] ?? null );
550+ }
551+
552+ public function testRouteInjectionAvailableInError (): void
553+ {
554+ $ request = (new Request ())
555+ ->setMethod ('GET ' )
556+ ->setURI ('/route-inject-error ' );
557+
558+ Http::error ()
559+ ->inject ('route ' )
560+ ->inject ('response ' )
561+ ->action (function (Route $ route , Response $ response ) {
562+ $ response
563+ ->addHeader ('X-Error-Route ' , $ route ->getPath ())
564+ ->addHeader ('X-Error-Method ' , $ route ->getMethod ());
565+ });
566+
567+ Http::get ('/route-inject-error ' )
568+ ->action (function () {
569+ throw new Exception ('Error ' );
570+ });
571+
572+ $ response = new Response ();
573+ $ this ->app ->run ($ request , $ response );
574+ $ headers = $ response ->getHeaders ();
575+
576+ $ this ->assertSame ('/route-inject-error ' , $ headers ['X-Error-Route ' ] ?? null );
577+ $ this ->assertSame ('GET ' , $ headers ['X-Error-Method ' ] ?? null );
578+ }
579+
452580 public function providerRouteMatching (): array
453581 {
454582 return [
0 commit comments