Commit d29f7399 authored by Henrik Bjornskov's avatar Henrik Bjornskov Committed by Fabien Potencier

Use Stateful object to check if Interactive Login have been triggered

parent 7facddba
...@@ -17,6 +17,7 @@ use Silex\Provider\RememberMeServiceProvider; ...@@ -17,6 +17,7 @@ use Silex\Provider\RememberMeServiceProvider;
use Silex\Provider\SecurityServiceProvider; use Silex\Provider\SecurityServiceProvider;
use Silex\Provider\SessionServiceProvider; use Silex\Provider\SessionServiceProvider;
use Symfony\Component\HttpKernel\Client; use Symfony\Component\HttpKernel\Client;
use Symfony\Component\Security\Http\SecurityEvents;
/** /**
* SecurityServiceProvider. * SecurityServiceProvider.
...@@ -29,19 +30,17 @@ class RememberMeServiceProviderTest extends WebTestCase ...@@ -29,19 +30,17 @@ class RememberMeServiceProviderTest extends WebTestCase
{ {
$app = $this->createApplication(); $app = $this->createApplication();
$event = false; $interactiveLogin = new InteractiveLoginTriggered();
$app->on(\Symfony\Component\Security\Http\SecurityEvents::INTERACTIVE_LOGIN, function ($event) use ($app, &$event) { $app->on(SecurityEvents::INTERACTIVE_LOGIN, array($interactiveLogin, 'onInteractiveLogin'));
$event = true;
});
$client = new Client($app); $client = new Client($app);
$client->request('get', '/'); $client->request('get', '/');
$this->assertFalse($event, 'The interactive login has not been triggered yet'); $this->assertFalse($interactiveLogin->triggered, 'The interactive login has not been triggered yet');
$client->request('post', '/login_check', array('_username' => 'fabien', '_password' => 'foo', '_remember_me' => 'true')); $client->request('post', '/login_check', array('_username' => 'fabien', '_password' => 'foo', '_remember_me' => 'true'));
$client->followRedirect(); $client->followRedirect();
$this->assertEquals('AUTHENTICATED_FULLY', $client->getResponse()->getContent()); $this->assertEquals('AUTHENTICATED_FULLY', $client->getResponse()->getContent());
$this->assertTrue($event, 'The interactive login has been triggered'); $this->assertTrue($interactiveLogin->triggered, 'The interactive login has been triggered');
$this->assertNotNull($client->getCookiejar()->get('REMEMBERME'), 'The REMEMBERME cookie is set'); $this->assertNotNull($client->getCookiejar()->get('REMEMBERME'), 'The REMEMBERME cookie is set');
$event = false; $event = false;
...@@ -50,7 +49,7 @@ class RememberMeServiceProviderTest extends WebTestCase ...@@ -50,7 +49,7 @@ class RememberMeServiceProviderTest extends WebTestCase
$client->request('get', '/'); $client->request('get', '/');
$this->assertEquals('AUTHENTICATED_REMEMBERED', $client->getResponse()->getContent()); $this->assertEquals('AUTHENTICATED_REMEMBERED', $client->getResponse()->getContent());
$this->assertTrue($event, 'The interactive login has been triggered'); $this->assertTrue($interactiveLogin->triggered, 'The interactive login has been triggered');
$client->request('get', '/logout'); $client->request('get', '/logout');
$client->followRedirect(); $client->followRedirect();
...@@ -96,3 +95,13 @@ class RememberMeServiceProviderTest extends WebTestCase ...@@ -96,3 +95,13 @@ class RememberMeServiceProviderTest extends WebTestCase
return $app; return $app;
} }
} }
class InteractiveLoginTriggered
{
public $triggered = false;
public function onInteractiveLogin()
{
$this->triggered = true;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment