2015-01-13 6 views
11

HWIOAuthBundle композитор расслоением Благоприятная социальная логин в проектах Symfony2:Как имитировать аутентификацию через HWIOAuth в функциональном тесте Symfony2?

https://github.com/hwi/HWIOAuthBundle

The Symfony2 документы дают пример того, как имитировать проверки подлинности в функциональном тесте:

http://symfony.com/doc/current/cookbook/testing/simulating_authentication.html

У меня есть не было успешным в том, чтобы заставить этих двух работать вместе в моих тестах. Система безопасности Symfony2 указывает, что есть не анонимный пользователь, но getUser() в моих контроллерах возвращает null.

У кого-то был успех с этим или есть некоторые указатели на то, как лучше всего отлаживать или внедрять?

Использование:

  • Symfony2 - 2.6.3
  • HWIOAuthBundle - DEV-мастер - 309d802f8de9f39e30851a145a7fc0de69b94076

ответ

5
use Liip\FunctionalTestBundle\Test\WebTestCase; 
use HWI\Bundle\OAuthBundle\Security\Core\Authentication\Token\OAuthToken; 
use HWI\Bundle\OAuthBundle\Security\Core\User\OAuthUser; 

class ControllerTest extends WebTestCase 
{ 
    public function testSecurity() 
    { 
     $client = static::createClient(); 
     $token = new OAuthToken('test', array('ROLE_USER', 'ROLE_OAUTH_USER')); 
     $user = new OAuthUser('[email protected]'); 
     $token->setUser($user); 
     $session = $client->getContainer()->get('session'); 
     $session->set('_security_name_of_your_firewall', serialize($token)); 
     $session->save(); 
     $cookie = new Cookie($session->getName(), $session->getId()); 
     $client->getCookieJar()->set($cookie); 

     // $client now acts as authenticated client