2015-01-13 11 views
11

HWIOAuthBundle ist ein Komponist Bündel sozialer Login in Symfony2 Projekte ermöglicht:Wie simuliert man Authentifizierung über HWIOAuth in einem Symfony2 Funktionstest?

https://github.com/hwi/HWIOAuthBundle

Die Symfony2 docs sind ein Beispiel dafür, wie die Authentifizierung in einem Funktionstest zu simulieren:

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

Ich habe Es gelang mir jedoch nicht, diese beiden in meinen Tests zusammenzuarbeiten. Das Symfony2-Sicherheitssystem gibt an, dass ein nicht anonymer Benutzer vorhanden ist, aber getUser() in meinen Controllern gibt null zurück.

Jeder hatte Erfolg damit oder hat einige Hinweise, wie man am besten debuggen oder implementieren?

Verwendung:

  • Symfony2 - 2.6.3
  • HWIOAuthBundle - dev-master - 309d802f8de9f39e30851a145a7fc0de69b94076

Antwort

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