瀏覽代碼

remove user provider name

Johannes Schmitt 14 年之前
父節點
當前提交
df6ffbbf07
共有 17 個文件被更改,包括 116 次插入169 次删除
  1. 12 14
      src/Symfony/Bundle/DoctrineBundle/Security/EntityUserProvider.php
  2. 12 14
      src/Symfony/Bundle/DoctrineMongoDBBundle/Security/DocumentUserProvider.php
  3. 1 6
      src/Symfony/Bundle/FrameworkBundle/DependencyInjection/SecurityExtension.php
  4. 16 32
      src/Symfony/Component/HttpKernel/Security/Firewall/ContextListener.php
  5. 8 15
      src/Symfony/Component/Security/Authentication/Provider/DaoAuthenticationProvider.php
  6. 11 12
      src/Symfony/Component/Security/Authentication/Provider/UserAuthenticationProvider.php
  7. 2 11
      src/Symfony/Component/Security/Authentication/Token/Token.php
  8. 0 7
      src/Symfony/Component/Security/Authentication/Token/TokenInterface.php
  9. 1 2
      src/Symfony/Component/Security/Authentication/Token/UsernamePasswordToken.php
  10. 13 0
      src/Symfony/Component/Security/Exception/UnsupportedAccountException.php
  11. 2 0
      src/Symfony/Component/Security/User/AccountInterface.php
  12. 10 16
      src/Symfony/Component/Security/User/InMemoryUserProvider.php
  13. 13 19
      src/Symfony/Component/Security/User/UserProviderInterface.php
  14. 4 8
      tests/Symfony/Tests/Component/Security/Authentication/Provider/DaoAuthenticationProviderTest.php
  15. 4 5
      tests/Symfony/Tests/Component/Security/Authentication/Provider/UserAuthenticationProviderTest.php
  16. 1 1
      tests/Symfony/Tests/Component/Security/Authentication/Token/UsernamePasswordTokenTest.php
  17. 6 7
      tests/Symfony/Tests/Component/Security/User/InMemoryProviderTest.php

+ 12 - 14
src/Symfony/Bundle/DoctrineBundle/Security/EntityUserProvider.php

@@ -2,28 +2,22 @@
 
 namespace Symfony\Bundle\DoctrineBundle\Security;
 
+use Symfony\Component\Security\User\AccountInterface;
 use Symfony\Component\Security\User\UserProviderInterface;
+use Symfony\Component\Security\Exception\UnsupportedAccountException;
 use Symfony\Component\Security\Exception\UsernameNotFoundException;
 
 class EntityUserProvider implements UserProviderInterface
 {
+    protected $class;
     protected $repository;
     protected $property;
-    protected $name;
 
-    public function __construct($em, $name, $class, $property = null)
+    public function __construct($em, $class, $property = null)
     {
+        $this->class = $class;
         $this->repository = $em->getRepository($class);
         $this->property = $property;
-        $this->name = $name;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isAggregate()
-    {
-        return false;
     }
 
     /**
@@ -45,14 +39,18 @@ class EntityUserProvider implements UserProviderInterface
             throw new UsernameNotFoundException(sprintf('User "%s" not found.', $username));
         }
 
-        return array($user, $this->name);
+        return $user;
     }
 
     /**
      * {@inheritDoc}
      */
-    public function supports($providerName)
+    public function reloadUserByAccount(AccountInterface $account)
     {
-        return $this->name === $providerName;
+        if (!$account instanceof $this->class) {
+            throw new UnsupportedAccountException(sprintf('Instances of "%s" are not supported.', get_class($account)));
+        }
+
+        return $this->loadUserByUsername((string) $account);
     }
 }

+ 12 - 14
src/Symfony/Bundle/DoctrineMongoDBBundle/Security/DocumentUserProvider.php

@@ -2,28 +2,22 @@
 
 namespace Symfony\Bundle\DoctrineMongoDBBundle\Security;
 
+use Symfony\Component\Security\User\AccountInterface;
 use Symfony\Component\Security\User\UserProviderInterface;
+use Symfony\Component\Security\Exception\UnsupportedAccountException;
 use Symfony\Component\Security\Exception\UsernameNotFoundException;
 
 class DocumentUserProvider implements UserProviderInterface
 {
+    protected $class;
     protected $repository;
     protected $property;
-    protected $name;
 
-    public function __construct($em, $name, $class, $property = null)
+    public function __construct($em, $class, $property = null)
     {
+        $this->class = $class;
         $this->repository = $em->getRepository($class);
         $this->property = $property;
-        $this->name = $name;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public function isAggregate()
-    {
-        return false;
     }
 
     /**
@@ -45,14 +39,18 @@ class DocumentUserProvider implements UserProviderInterface
             throw new UsernameNotFoundException(sprintf('User "%s" not found.', $username));
         }
 
-        return array($user, $this->name);
+        return $user;
     }
 
     /**
      * {@inheritDoc}
      */
-    public function supports($providerName)
+    public function reloadUserByAccount(AccountInterface $account)
     {
-        return $this->name === $providerName;
+        if (!$account instanceof $this->class) {
+            throw new UnsupportedAccountException(sprintf('Instances of "%s" are not supported.', get_class($account)));
+        }
+
+        return $this->loadUserByUsername((string) $account);
     }
 }

+ 1 - 6
src/Symfony/Bundle/FrameworkBundle/DependencyInjection/SecurityExtension.php

@@ -377,7 +377,6 @@ class SecurityExtension extends Extension
                 ->register($name, '%security.user.provider.entity.class%')
                 ->setArguments(array(
                     new Reference('security.user.entity_manager'),
-                    $name,
                     $provider['entity']['class'],
                     isset($provider['entity']['property']) ? $provider['entity']['property'] : null,
             ));
@@ -391,7 +390,6 @@ class SecurityExtension extends Extension
                 ->register($name, '%security.user.provider.document.class%')
                 ->setArguments(array(
                     new Reference('security.user.document_manager'),
-                    $name,
                     $provider['document']['class'],
                     isset($provider['document']['property']) ? $provider['document']['property'] : null,
             ));
@@ -400,10 +398,7 @@ class SecurityExtension extends Extension
         }
 
         // In-memory DAO provider
-        $definition = $container
-                        ->register($name, '%security.user.provider.in_memory.class%')
-                        ->setArguments(array($name))
-        ;
+        $definition = $container->register($name, '%security.user.provider.in_memory.class%');
         foreach ($this->fixConfig($provider, 'user') as $username => $user) {
             if (isset($user['name'])) {
                 $username = $user['name'];

+ 16 - 32
src/Symfony/Component/HttpKernel/Security/Firewall/ContextListener.php

@@ -2,15 +2,17 @@
 
 namespace Symfony\Component\HttpKernel\Security\Firewall;
 
-use Symfony\Component\Security\User\AccountInterface;
-use Symfony\Component\Security\Authentication\Token\TokenInterface;
-use Symfony\Component\Security\SecurityContext;
-use Symfony\Component\HttpKernel\Log\LoggerInterface;
-use Symfony\Component\EventDispatcher\EventDispatcher;
 use Symfony\Component\EventDispatcher\Event;
+use Symfony\Component\EventDispatcher\EventDispatcher;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
+use Symfony\Component\HttpKernel\Log\LoggerInterface;
 use Symfony\Component\Security\Authentication\Token\AnonymousToken;
+use Symfony\Component\Security\Authentication\Token\TokenInterface;
+use Symfony\Component\Security\Exception\UsernameNotFoundException;
+use Symfony\Component\Security\Exception\UnsupportedAccountException;
+use Symfony\Component\Security\SecurityContext;
+use Symfony\Component\Security\User\AccountInterface;
 
 /*
  * This file is part of the Symfony framework.
@@ -128,37 +130,15 @@ class ContextListener implements ListenerInterface
         $user = $token->getUser();
         if (!$user instanceof AccountInterface) {
             return $token;
-        } else if (0 === strlen($username = (string) $token)) {
-            return $token;
-        } else if (null === $providerName = $token->getUserProviderName()) {
-            return $token;
         }
 
         if (null !== $this->logger) {
-            $this->logger->debug(sprintf('Reloading user from user provider "%s".', $providerName));
+            $this->logger->debug(sprintf('Reloading user from user provider.'));
         }
 
         foreach ($this->userProviders as $provider) {
-            if (!$provider->isAggregate() && $provider->supports($providerName)) {
-                try {
-                    $result = $provider->loadUserByUsername($username);
-
-                    if (!is_array($result) || 2 !== count($result)) {
-                        throw new \RuntimeException('Provider returned an invalid result.');
-                    }
-
-                    list($cUser, $cProviderName) = $result;
-                } catch (\Exception $ex) {
-                    if (null !== $this->logger) {
-                        $this->logger->debug(sprintf('An exception occurred while reloading the user: '.$ex->getMessage()));
-                    }
-
-                    return null;
-                }
-
-                if ($providerName !== $cProviderName) {
-                    throw new \RuntimeException(sprintf('User was loaded from different provider. Requested "%s", Used: "%s"', $providerName, $cProviderName));
-                }
+            try {
+                $cUser = $provider->reloadUserByAccount($user);
 
                 $token->setRoles($cUser->getRoles());
                 $token->setUser($cUser);
@@ -168,9 +148,13 @@ class ContextListener implements ListenerInterface
                 }
 
                 return $token;
+            } catch (UnsupportedAccountException $unsupported) {
+            } catch (UsernameNotFoundException $notFound) {
+                
+                return null;
             }
         }
 
-        throw new \RuntimeException(sprintf('There is no user provider named "%s".', $providerName));
+        throw new \RuntimeException(sprintf('There is no user provider for user "%s".', get_class($user)));
     }
-}
+}

+ 8 - 15
src/Symfony/Component/Security/Authentication/Provider/DaoAuthenticationProvider.php

@@ -78,28 +78,21 @@ class DaoAuthenticationProvider extends UserAuthenticationProvider
     {
         $user = $token->getUser();
         if ($user instanceof AccountInterface) {
-            return array($user, $token->getUserProviderName());
+            return $user;
         }
 
-        $result = null;
         try {
-            $result = $this->userProvider->loadUserByUsername($username);
+            $user = $this->userProvider->loadUserByUsername($username);
+
+            if (!$user instanceof AccountInterface) {
+                throw new AuthenticationServiceException('The user provider must return an AccountInterface object.');
+            }
+    
+            return $user;
         } catch (UsernameNotFoundException $notFound) {
             throw $notFound;
         } catch (\Exception $repositoryProblem) {
             throw new AuthenticationServiceException($repositoryProblem->getMessage(), $token, 0, $repositoryProblem);
         }
-
-        if (!is_array($result) || 2 !== count($result)) {
-            throw new AuthenticationServiceException('User provider did not return an array, or array had invalid format.');
-        }
-        if (!$result[0] instanceof AccountInterface) {
-            throw new AuthenticationServiceException('The user provider must return an AccountInterface object.');
-        }
-        if (empty($result[1])) {
-            throw new AuthenticationServiceException('The user provider must return a non-empty user provider name.');
-        }
-
-        return $result;
     }
 }

+ 11 - 12
src/Symfony/Component/Security/Authentication/Provider/UserAuthenticationProvider.php

@@ -54,7 +54,17 @@ abstract class UserAuthenticationProvider implements AuthenticationProviderInter
         $username = null === $token->getUser() ? 'NONE_PROVIDED' : (string) $token;
 
         try {
-            $result = $this->retrieveUser($username, $token);
+            $user = $this->retrieveUser($username, $token);
+
+            if (!$user instanceof AccountInterface) {
+                throw new AuthenticationServiceException('retrieveUser() must return an AccountInterface.');
+            }
+            
+            $this->accountChecker->checkPreAuth($user);
+            $this->checkAuthentication($user, $token);
+            $this->accountChecker->checkPostAuth($user);
+    
+            return new UsernamePasswordToken($user, $token->getCredentials(), $user->getRoles());
         } catch (UsernameNotFoundException $notFound) {
             if ($this->hideUserNotFoundExceptions) {
                 throw new BadCredentialsException('Bad credentials', 0, $notFound);
@@ -62,17 +72,6 @@ abstract class UserAuthenticationProvider implements AuthenticationProviderInter
 
             throw $notFound;
         }
-
-        if (!is_array($result) || 2 !== count($result)) {
-            throw new AuthenticationServiceException('retrieveUser() did not return an array, or array had invalid format.'); 
-        }
-        list($user, $userProviderName) = $result;
-
-        $this->accountChecker->checkPreAuth($user);
-        $this->checkAuthentication($user, $token);
-        $this->accountChecker->checkPostAuth($user);
-
-        return new UsernamePasswordToken($user, $token->getCredentials(), $userProviderName,  $user->getRoles());
     }
 
     /**

+ 2 - 11
src/Symfony/Component/Security/Authentication/Token/Token.php

@@ -26,7 +26,6 @@ abstract class Token implements TokenInterface
     protected $roles;
     protected $authenticated;
     protected $user;
-    protected $userProviderName;
     protected $credentials;
     protected $immutable;
 
@@ -166,14 +165,6 @@ abstract class Token implements TokenInterface
         }
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    public function getUserProviderName()
-    {
-        return $this->userProviderName;
-    }
-
     /**
      * {@inheritdoc}
      */
@@ -195,7 +186,7 @@ abstract class Token implements TokenInterface
      */
     public function serialize()
     {
-        return serialize(array($this->user, $this->userProviderName, $this->credentials, $this->authenticated, $this->roles, $this->immutable));
+        return serialize(array($this->user, $this->credentials, $this->authenticated, $this->roles, $this->immutable));
     }
 
     /**
@@ -203,6 +194,6 @@ abstract class Token implements TokenInterface
      */
     public function unserialize($serialized)
     {
-        list($this->user, $this->userProviderName, $this->credentials, $this->authenticated, $this->roles, $this->immutable) = unserialize($serialized);
+        list($this->user, $this->credentials, $this->authenticated, $this->roles, $this->immutable) = unserialize($serialized);
     }
 }

+ 0 - 7
src/Symfony/Component/Security/Authentication/Token/TokenInterface.php

@@ -65,13 +65,6 @@ interface TokenInterface extends \Serializable
      */
     function setUser($user);
 
-    /**
-     * Returns a unique id for the user provider that was used to retrieve the user
-     *
-     * @return string
-     */
-    function getUserProviderName();
-
     /**
      * Checks if the user is authenticated or not.
      *

+ 1 - 2
src/Symfony/Component/Security/Authentication/Token/UsernamePasswordToken.php

@@ -21,13 +21,12 @@ class UsernamePasswordToken extends Token
     /**
      * Constructor.
      */
-    public function __construct($user, $credentials, $userProviderName = null, array $roles = array())
+    public function __construct($user, $credentials, array $roles = array())
     {
         parent::__construct($roles);
 
         $this->setUser($user);
         $this->credentials = $credentials;
-        $this->userProviderName = $userProviderName;
 
         parent::setAuthenticated((Boolean) count($roles));
     }

+ 13 - 0
src/Symfony/Component/Security/Exception/UnsupportedAccountException.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace Symfony\Component\Security\Exception;
+
+/**
+ * This exception is thrown when an account is reloaded from a provider which
+ * doesn't support the passed implementation of AccountInterface.
+ *
+ * @author Johannes M. Schmitt <schmittjoh@gmail.com>
+ */
+class UnsupportedAccountException extends AuthenticationServiceException
+{
+}

+ 2 - 0
src/Symfony/Component/Security/User/AccountInterface.php

@@ -55,6 +55,8 @@ interface AccountInterface
 
     /**
      * Removes sensitive data from the user.
+     *
+     * @return void
      */
     function eraseCredentials();
 

+ 10 - 16
src/Symfony/Component/Security/User/InMemoryUserProvider.php

@@ -3,6 +3,7 @@
 namespace Symfony\Component\Security\User;
 
 use Symfony\Component\Security\Exception\UsernameNotFoundException;
+use Symfony\Component\Security\Exception\UnsupportedAccountException;
 
 /*
  * This file is part of the Symfony package.
@@ -24,7 +25,6 @@ use Symfony\Component\Security\Exception\UsernameNotFoundException;
 class InMemoryUserProvider implements UserProviderInterface
 {
     protected $users;
-    protected $name;
 
     /**
      * Constructor.
@@ -35,7 +35,7 @@ class InMemoryUserProvider implements UserProviderInterface
      * @param array $users An array of users
      * @param string $name
      */
-    public function __construct($name, array $users = array())
+    public function __construct(array $users = array())
     {
         foreach ($users as $username => $attributes) {
             $password = isset($attributes['password']) ? $attributes['password'] : null;
@@ -45,8 +45,6 @@ class InMemoryUserProvider implements UserProviderInterface
 
             $this->createUser($user);
         }
-
-        $this->name = $name;
     }
 
     /**
@@ -63,14 +61,6 @@ class InMemoryUserProvider implements UserProviderInterface
         $this->users[strtolower($user->getUsername())] = $user;
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    public function isAggregate()
-    {
-        return false;
-    }
-
     /**
      * {@inheritdoc}
      */
@@ -82,15 +72,19 @@ class InMemoryUserProvider implements UserProviderInterface
 
         $user = $this->users[strtolower($username)];
 
-        return array(new User($user->getUsername(), $user->getPassword(), $user->getRoles(), $user->isEnabled(), $user->isAccountNonExpired(),
-                $user->isCredentialsNonExpired(), $user->isAccountNonLocked()), $this->name);
+        return new User($user->getUsername(), $user->getPassword(), $user->getRoles(), $user->isEnabled(), $user->isAccountNonExpired(),
+                $user->isCredentialsNonExpired(), $user->isAccountNonLocked());
     }
 
     /**
      * {@inheritDoc}
      */
-    public function supports($providerName)
+    public function reloadUserByAccount(AccountInterface $account)
     {
-        return $this->name === $providerName;
+        if (!$account instanceof User) {
+            throw new UnsupportedAccountException(sprintf('Instances of "%s" are not supported.', get_class($account)));
+        }
+
+        return $this->loadUserByUsername((string) $account);
     }
 }

+ 13 - 19
src/Symfony/Component/Security/User/UserProviderInterface.php

@@ -19,34 +19,28 @@ namespace Symfony\Component\Security\User;
  */
 interface UserProviderInterface
 {
-    /**
-     * Whether this provider is an aggregate of user providers
-     *
-     * @return Boolean
-     */
-    function isAggregate();
-
     /**
      * Loads the user for the given username.
      *
      * This method must throw UsernameNotFoundException if the user is not
      * found.
      *
-     * @param  string $username The username
-     *
-     * @return array of the form: array(AccountInterface, string) with the
-     *               implementation of AccountInterface, and the name of the provider
-     *               that was used to retrieve it
-     *
      * @throws UsernameNotFoundException if the user is not found
+     * @param string $username The username
+     * @return AccountInterface
      */
      function loadUserByUsername($username);
 
      /**
-      * Determines whether this provider supports the given provider name
-      *
-      * @param string $providerName
-      * @return Boolean
+      * Loads the user for the account interface.
+      * 
+      * It is up to the implementation if it decides to reload the user data
+      * from the database, or if it simply merges the passed User into the 
+      * identity map of an entity manager.
+      * 
+      * @throws UnsupportedAccountException if the account is not supported
+      * @param AccountInterface $user
+      * @return AccountInterface
       */
-     function supports($providerName);
-}
+     function reloadUserByAccount(AccountInterface $user);
+}

+ 4 - 8
tests/Symfony/Tests/Component/Security/Authentication/Provider/DaoAuthenticationProviderTest.php

@@ -75,17 +75,13 @@ class DaoAuthenticationProviderTest extends \PHPUnit_Framework_TestCase
               ->method('getUser')
               ->will($this->returnValue($user))
         ;
-        $token->expects($this->once())
-              ->method('getUserProviderName')
-              ->will($this->returnValue('foo'))
-        ;
 
         $provider = new DaoAuthenticationProvider($userProvider, $this->getMock('Symfony\Component\Security\User\AccountCheckerInterface'));
         $reflection = new \ReflectionMethod($provider, 'retrieveUser');
         $reflection->setAccessible(true);
         $result = $reflection->invoke($provider, null, $token);
 
-        $this->assertSame(array($user, 'foo'), $result);
+        $this->assertSame($user, $result);
     }
 
     public function testRetrieveUser()
@@ -95,14 +91,14 @@ class DaoAuthenticationProviderTest extends \PHPUnit_Framework_TestCase
         $userProvider = $this->getMock('Symfony\Component\Security\User\UserProviderInterface');
         $userProvider->expects($this->once())
                      ->method('loadUserByUsername')
-                     ->will($this->returnValue($result = array($user, 'foo')))
+                     ->will($this->returnValue($user))
         ;
 
         $provider = new DaoAuthenticationProvider($userProvider, $this->getMock('Symfony\Component\Security\User\AccountCheckerInterface'));
         $method = new \ReflectionMethod($provider, 'retrieveUser');
         $method->setAccessible(true);
 
-        $this->assertSame($result, $method->invoke($provider, 'fabien', $this->getSupportedToken()));
+        $this->assertSame($user, $method->invoke($provider, 'fabien', $this->getSupportedToken()));
     }
 
     /**
@@ -223,7 +219,7 @@ class DaoAuthenticationProviderTest extends \PHPUnit_Framework_TestCase
 
     protected function getSupportedToken()
     {
-        return $this->getMock('Symfony\Component\Security\Authentication\Token\UsernamePasswordToken', array('getCredentials', 'getUser', 'getUserProviderName'), array(), '', false);
+        return $this->getMock('Symfony\Component\Security\Authentication\Token\UsernamePasswordToken', array('getCredentials', 'getUser'), array(), '', false);
     }
 
     protected function getProvider($user = false, $userChecker = false, $passwordEncoder = null)

+ 4 - 5
tests/Symfony/Tests/Component/Security/Authentication/Provider/UserAuthenticationProviderTest.php

@@ -86,7 +86,7 @@ class UserAuthenticationProviderTest extends \PHPUnit_Framework_TestCase
         $provider = $this->getProvider($userChecker);
         $provider->expects($this->once())
                  ->method('retrieveUser')
-                 ->will($this->returnValue(array($this->getMock('Symfony\Component\Security\User\AccountInterface'), 'foo')))
+                 ->will($this->returnValue($this->getMock('Symfony\Component\Security\User\AccountInterface')))
         ;
 
         $provider->authenticate($this->getSupportedToken());
@@ -106,7 +106,7 @@ class UserAuthenticationProviderTest extends \PHPUnit_Framework_TestCase
         $provider = $this->getProvider($userChecker);
         $provider->expects($this->once())
                  ->method('retrieveUser')
-                 ->will($this->returnValue(array($this->getMock('Symfony\Component\Security\User\AccountInterface'), 'foo')))
+                 ->will($this->returnValue($this->getMock('Symfony\Component\Security\User\AccountInterface')))
         ;
 
         $provider->authenticate($this->getSupportedToken());
@@ -120,7 +120,7 @@ class UserAuthenticationProviderTest extends \PHPUnit_Framework_TestCase
         $provider = $this->getProvider();
         $provider->expects($this->once())
                  ->method('retrieveUser')
-                 ->will($this->returnValue(array($this->getMock('Symfony\Component\Security\User\AccountInterface'), 'foo')))
+                 ->will($this->returnValue($this->getMock('Symfony\Component\Security\User\AccountInterface')))
         ;
         $provider->expects($this->once())
                  ->method('checkAuthentication')
@@ -141,7 +141,7 @@ class UserAuthenticationProviderTest extends \PHPUnit_Framework_TestCase
         $provider = $this->getProvider();
         $provider->expects($this->once())
                  ->method('retrieveUser')
-                 ->will($this->returnValue(array($user, 'foo')))
+                 ->will($this->returnValue($user))
         ;
 
         $token = $this->getSupportedToken();
@@ -154,7 +154,6 @@ class UserAuthenticationProviderTest extends \PHPUnit_Framework_TestCase
 
         $this->assertInstanceOf('Symfony\Component\Security\Authentication\Token\UsernamePasswordToken', $authToken);
         $this->assertSame($user, $authToken->getUser());
-        $this->assertSame('foo', $authToken->getUserProviderName());
         $this->assertEquals(array(new Role('ROLE_FOO')), $authToken->getRoles());
         $this->assertEquals('foo', $authToken->getCredentials());
     }

+ 1 - 1
tests/Symfony/Tests/Component/Security/Authentication/Token/UsernamePasswordTokenTest.php

@@ -20,7 +20,7 @@ class UsernamePasswordTokenTest extends \PHPUnit_Framework_TestCase
         $token = new UsernamePasswordToken('foo', 'bar');
         $this->assertFalse($token->isAuthenticated());
 
-        $token = new UsernamePasswordToken('foo', 'bar', null, array('ROLE_FOO'));
+        $token = new UsernamePasswordToken('foo', 'bar', array('ROLE_FOO'));
         $this->assertEquals(array(new Role('ROLE_FOO')), $token->getRoles());
         $this->assertTrue($token->isAuthenticated());
     }

+ 6 - 7
tests/Symfony/Tests/Component/Security/User/InMemoryProviderTest.php

@@ -17,7 +17,7 @@ class InMemoryUserProviderTest extends \PHPUnit_Framework_TestCase
 {
     public function testConstructor()
     {
-        $provider = new InMemoryUserProvider('foo', array(
+        $provider = new InMemoryUserProvider(array(
             'fabien' => array(
                 'password' => 'foo',
                 'enabled'  => false,
@@ -25,8 +25,7 @@ class InMemoryUserProviderTest extends \PHPUnit_Framework_TestCase
             ),
         ));
 
-        list($user, $providerName) = $provider->loadUserByUsername('fabien');
-        $this->assertSame('foo', $providerName);
+        $user = $provider->loadUserByUsername('fabien');
         $this->assertEquals('foo', $user->getPassword());
         $this->assertEquals(array('ROLE_USER'), $user->getRoles());
         $this->assertFalse($user->isEnabled());
@@ -34,10 +33,10 @@ class InMemoryUserProviderTest extends \PHPUnit_Framework_TestCase
 
     public function testCreateUser()
     {
-        $provider = new InMemoryUserProvider('foo');
+        $provider = new InMemoryUserProvider();
         $provider->createUser(new User('fabien', 'foo'));
 
-        list($user, $providerName) = $provider->loadUserByUsername('fabien');
+        $user = $provider->loadUserByUsername('fabien');
         $this->assertEquals('foo', $user->getPassword());
     }
 
@@ -46,7 +45,7 @@ class InMemoryUserProviderTest extends \PHPUnit_Framework_TestCase
      */
     public function testCreateUserAlreadyExist()
     {
-        $provider = new InMemoryUserProvider('foo');
+        $provider = new InMemoryUserProvider();
         $provider->createUser(new User('fabien', 'foo'));
         $provider->createUser(new User('fabien', 'foo'));
     }
@@ -56,7 +55,7 @@ class InMemoryUserProviderTest extends \PHPUnit_Framework_TestCase
      */
     public function testLoadUserByUsernameDoesNotExist()
     {
-        $provider = new InMemoryUserProvider('foo');
+        $provider = new InMemoryUserProvider();
         $provider->loadUserByUsername('fabien');
     }
 }