2016-09-02 1 views
1

Ich habe die Login-Funktion für PHPUnit und benutze es für die Autorisierung als Testbenutzer.Das Objekt des aktuellen Benutzers ist NULL im Symfony-Controller, wenn ich mich von phpunit aus anmelde

private function logIn(Client $client) 
{ 
    $session = $client->getContainer()->get('session'); 

    /** @var User $user */ 
    $user = $client->getContainer()->get('doctrine')->getRepository('DWDAdminBundle:User')->find(1); 
    //Here I have user object 

    $firewall = 'main'; 
    $token = new UsernamePasswordToken($user, null, $firewall, ['ROLE_ADMIN']); 
    $client->getContainer()->get('security.token_storage')->setToken($token); 
    $session->set('_security_'.$firewall, serialize($token)); 
    $session->save(); 

    $cookie = new Cookie($session->getName(), $session->getId()); 
    $client->getCookieJar()->set($cookie); 
} 

In getestet Aktion haben diesen Code:

$checkResult = $this->get('dwd.service.coupon')->checkCoupon(
      $coupon, 
      $request->query->all(), 
      $this->getUser()->getPortalId() 
      // Here $this->getUser returned NULL 
     ); 

hier irgendwie funktionieren getUser() zurückgegeben Null, obwohl ich mein Testbenutzer in setUp() der Test

public function setUp() 
{ 
    parent::setUp(); 

    $this->client = static::createClient(); 
    $this->logIn($this->client); 

} 
+0

Sind Sie sicher, dass das Repository-Benutzerobjekt kein Array zurückgibt? Sollte nicht 'findOne()' sein? – malcolm

+0

@malcolm Ja, es gibt das Objekt zurück. http://prntscr.com/cdad5q –

Antwort

0
autorisiert haben

Liegt die getestete Aktion unter derselben Firewall?

+0

Ja, ich benutze 'Main' Firewall –

Verwandte Themen