77use CodeZero \LocalizedRoutes \Tests \TestCase ;
88use CodeZero \LocalizedRoutes \UrlGenerator ;
99use Config ;
10+ use Illuminate \Support \Facades \URL ;
1011use InvalidArgumentException ;
1112use Route ;
1213
@@ -21,10 +22,10 @@ protected function setUp(): void
2122 App::setLocale ('en ' );
2223 }
2324
24- protected function registerRoute ($ url , $ name )
25+ protected function registerRoute ($ url , $ name, $ callback = null )
2526 {
2627 Route::getRoutes ()->add (
27- Route::name ($ name )->get ($ url , function () use ( $ name ) { return $ name ; })
28+ Route::name ($ name )->get ($ url , $ callback ?: function ( ) {})
2829 );
2930 }
3031
@@ -128,4 +129,23 @@ public function it_temporarily_changes_the_app_locale_when_generating_a_route_ur
128129 $ this ->assertEquals (url ('en/route/en-slug ' ), route ('route.name ' , [new Model ], true , 'en ' ));
129130 $ this ->assertEquals (url ('nl/route/nl-slug ' ), route ('route.name ' , [new Model ], true , 'nl ' ));
130131 }
132+
133+ /** @test */
134+ public function it_generates_a_localized_signed_route_url ()
135+ {
136+ $ callback = function () {
137+ return request ()->hasValidSignature ()
138+ ? 'Valid Signature '
139+ : 'Invalid Signature ' ;
140+ };
141+
142+ $ this ->registerRoute ('en/route ' , 'en.route.name ' , $ callback );
143+ $ this ->registerRoute ('en/other/route ' , 'en.other.route.name ' , $ callback );
144+
145+ $ validUrl = URL ::signedRoute ('route.name ' );
146+ $ tamperedUrl = str_replace ('en/route ' , 'en/other/route ' , $ validUrl );
147+
148+ $ this ->get ($ validUrl )->assertSee ('Valid Signature ' );
149+ $ this ->get ($ tamperedUrl )->assertSee ('Invalid Signature ' );
150+ }
131151}
0 commit comments