public function testLoginSuccessToken()
{
$app = $this->getApp();
$this->addDefaultUser($app);
$logger = $this->getMockMonolog();
$logger->expects($this->at(0))->method('debug')->with($this->matchesRegularExpression('#Generating authentication cookie#'));
$logger->expects($this->at(1))->method('debug')->with($this->matchesRegularExpression('#Saving new login token#'));
$app['logger.system'] = $logger;
$logger = $this->getMockFlashLogger();
$logger->expects($this->at(0))->method('success')->with($this->equalTo('Session resumed.'));
$logger->expects($this->at(1))->method('success')->with($this->equalTo("You've been logged on successfully."));
$app['logger.flash'] = $logger;
$userName = 'admin';
$salt = 'vinagre';
$ipAddress = '1.2.3.4';
$hostName = 'bolt.dev';
$userAgent = 'Bolt PHPUnit tests';
$cookieOptions = ['remoteaddr' => true, 'httphost' => true, 'browseragent' => false];
$token = (string) new Token\Generator($userName, $salt, $ipAddress, $hostName, $userAgent, $cookieOptions);
$repo = $app['storage']->getRepository('Bolt\\Storage\\Entity\\Authtoken');
$entityAuthtoken = new \Bolt\Storage\Entity\Authtoken();
$entityAuthtoken->setUsername($userName);
$entityAuthtoken->setToken($token);
$entityAuthtoken->setSalt($salt);
$entityAuthtoken->setLastseen(Carbon::now());
$entityAuthtoken->setIp('1.2.3.4');
$entityAuthtoken->setUseragent('Bolt PHPUnit tests');
$entityAuthtoken->setValidity(Carbon::create()->addHours(2));
$repo->save($entityAuthtoken);
$request = Request::createFromGlobals();
$request->server->set('REMOTE_ADDR', $ipAddress);
$request->server->set('HTTP_USER_AGENT', $userAgent);
$request->cookies->set($app['token.authentication.name'], $token);
$app['request_stack']->push($request);
$login = new Login($app);
$response = $login->login(null, null, new AccessControlEvent(new Request()));
$this->assertTrue($response);
}