public function testRememberMeAuthentication()
 {
     $app = $this->createApplication();
     $client = new Client($app);
     $client->request('get', '/');
     $client->request('post', '/login_check', array('_username' => 'fabien', '_password' => 'foo', '_remember_me' => 'true'));
     $client->followRedirect();
     $this->assertEquals('AUTHENTICATED_FULLY', $client->getResponse()->getContent());
     $this->assertNotNull($client->getCookiejar()->get('REMEMBERME'), 'The REMEMBERME cookie is set');
     $client->getCookiejar()->expire('MOCKSESSID');
     $client->request('get', '/');
     $this->assertEquals('AUTHENTICATED_REMEMBERED', $client->getResponse()->getContent());
     $client->request('get', '/logout');
     $client->followRedirect();
     $this->assertNull($client->getCookiejar()->get('REMEMBERME'), 'The REMEMBERME cookie has been removed');
 }
 public function testLogin()
 {
     $loginUrl = $this->urlGenerator->generate('login');
     $crawler = $this->client->request('GET', $loginUrl);
     $this->assertTrue($this->client->getResponse()->isOk());
     $form = $crawler->filter('#form-signin')->form();
     $form['key'] = 'foo';
     $form['secret'] = 'bar';
     $this->client->submit($form);
     // setup cookie and redirect to referer
     $this->assertTrue($this->client->getResponse()->isRedirect('http://localhost' . $loginUrl));
     $cookies = $this->client->getResponse()->headers->getCookies();
     $this->assertCount(1, $cookies);
     $this->assertEquals($this->app['amazon_s3_credentials_cookie_name'], $cookies[0]->getName());
     $this->assertEquals(json_encode(array_map(function ($field) {
         return $field->getValue();
     }, $form->all())), $cookies[0]->getValue());
     // redirect to homepage
     $this->client->followRedirect();
     $this->assertTrue($this->client->getResponse()->isRedirect($this->urlGenerator->generate('list')));
 }
 public function testRememberMeAuthentication()
 {
     $app = $this->createApplication();
     $interactiveLogin = new InteractiveLoginTriggered();
     $app->on(SecurityEvents::INTERACTIVE_LOGIN, array($interactiveLogin, 'onInteractiveLogin'));
     $client = new Client($app);
     $client->request('get', '/');
     $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->followRedirect();
     $this->assertEquals('AUTHENTICATED_FULLY', $client->getResponse()->getContent());
     $this->assertTrue($interactiveLogin->triggered, '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($interactiveLogin->triggered, 'The interactive login has been triggered');
     $client->request('get', '/logout');
     $client->followRedirect();
     $this->assertNull($client->getCookiejar()->get('REMEMBERME'), 'The REMEMBERME cookie has been removed');
 }