diff --git a/src/Silex/Provider/RememberMeServiceProvider.php b/src/Silex/Provider/RememberMeServiceProvider.php index 07d30f7f5..96f512c7d 100644 --- a/src/Silex/Provider/RememberMeServiceProvider.php +++ b/src/Silex/Provider/RememberMeServiceProvider.php @@ -52,7 +52,7 @@ public function register(Application $app) 'security.authentication_provider.'.$name.'.remember_me', 'security.authentication_listener.'.$name.'.remember_me', null, // entry point - 'remember_me' + 'remember_me', ); }); @@ -79,7 +79,8 @@ public function register(Application $app) $app['security'], $app['security.remember_me.service.'.$providerKey], $app['security.authentication_manager'], - $app['logger'] + $app['logger'], + $app['dispatcher'] ); return $listener; diff --git a/tests/Silex/Tests/Provider/RememberMeServiceProviderTest.php b/tests/Silex/Tests/Provider/RememberMeServiceProviderTest.php index 7cf204e6d..d9bb33351 100644 --- a/tests/Silex/Tests/Provider/RememberMeServiceProviderTest.php +++ b/tests/Silex/Tests/Provider/RememberMeServiceProviderTest.php @@ -29,19 +29,28 @@ public function testRememberMeAuthentication() { $app = $this->createApplication(); + $event = false; + $app->on(\Symfony\Component\Security\Http\SecurityEvents::INTERACTIVE_LOGIN, function ($event) use ($app, &$event) { + $event = true; + }); + $client = new Client($app); $client->request('get', '/'); + $this->assertFalse($event, 'The interactive login has not been triggered yet'); $client->request('post', '/login_check', array('_username' => 'fabien', '_password' => 'foo', '_remember_me' => 'true')); $client->followRedirect(); $this->assertEquals('AUTHENTICATED_FULLY', $client->getResponse()->getContent()); + $this->assertTrue($event, 'The interactive login has been triggered'); $this->assertNotNull($client->getCookiejar()->get('REMEMBERME'), 'The REMEMBERME cookie is set'); + $event = false; $client->getCookiejar()->expire('MOCKSESSID'); $client->request('get', '/'); $this->assertEquals('AUTHENTICATED_REMEMBERED', $client->getResponse()->getContent()); + $this->assertTrue($event, 'The interactive login has been triggered'); $client->request('get', '/logout'); $client->followRedirect();