diff options
author | Grégoire Pineau <lyrixx@lyrixx.info> | 2015-09-25 11:30:03 +0200 |
---|---|---|
committer | Charles Sarrazin <charles@sarraz.in> | 2015-09-28 13:12:05 +0200 |
commit | c2b112b6c8bb972bacb28ae38043b74ab47ae5f0 (patch) | |
tree | 958195b8ec77045996a9fae3bdefacda81edd44b /Core/Tests/User/LdapUserProviderTest.php | |
parent | 123c8df26a95bfb86c1dacea02778b1aa8432fbe (diff) | |
download | symfony-security-c2b112b6c8bb972bacb28ae38043b74ab47ae5f0.zip symfony-security-c2b112b6c8bb972bacb28ae38043b74ab47ae5f0.tar.gz symfony-security-c2b112b6c8bb972bacb28ae38043b74ab47ae5f0.tar.bz2 |
Implemented LDAP authentication and LDAP user provider
Diffstat (limited to 'Core/Tests/User/LdapUserProviderTest.php')
-rw-r--r-- | Core/Tests/User/LdapUserProviderTest.php | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/Core/Tests/User/LdapUserProviderTest.php b/Core/Tests/User/LdapUserProviderTest.php new file mode 100644 index 0000000..b69987a --- /dev/null +++ b/Core/Tests/User/LdapUserProviderTest.php @@ -0,0 +1,93 @@ +<?php + +namespace Symfony\Component\Security\Core\Tests\User; + +use Symfony\Component\Security\Core\User\LdapUserProvider; +use Symfony\Component\Ldap\Exception\ConnectionException; + +class LdapUserProviderTest extends \PHPUnit_Framework_TestCase +{ + /** + * @expectedException \Symfony\Component\Security\Core\Exception\UsernameNotFoundException + */ + public function testLoadUserByUsernameFailsIfCantConnectToLdap() + { + $ldap = $this->getMock('Symfony\Component\Ldap\LdapClientInterface'); + $ldap + ->expects($this->once()) + ->method('bind') + ->will($this->throwException(new ConnectionException())) + ; + + $provider = new LdapUserProvider($ldap, 'ou=MyBusiness,dc=symfony,dc=com'); + $provider->loadUserByUsername('foo'); + } + + /** + * @expectedException \Symfony\Component\Security\Core\Exception\UsernameNotFoundException + */ + public function testLoadUserByUsernameFailsIfNoLdapEntries() + { + $ldap = $this->getMock('Symfony\Component\Ldap\LdapClientInterface'); + $ldap + ->expects($this->once()) + ->method('escape') + ->will($this->returnValue('foo')) + ; + + $provider = new LdapUserProvider($ldap, 'ou=MyBusiness,dc=symfony,dc=com'); + $provider->loadUserByUsername('foo'); + } + + /** + * @expectedException \Symfony\Component\Security\Core\Exception\UsernameNotFoundException + */ + public function testLoadUserByUsernameFailsIfMoreThanOneLdapEntry() + { + $ldap = $this->getMock('Symfony\Component\Ldap\LdapClientInterface'); + $ldap + ->expects($this->once()) + ->method('escape') + ->will($this->returnValue('foo')) + ; + $ldap + ->expects($this->once()) + ->method('find') + ->will($this->returnValue(array( + array(), + array(), + 'count' => 2, + ))) + ; + + $provider = new LdapUserProvider($ldap, 'ou=MyBusiness,dc=symfony,dc=com'); + $provider->loadUserByUsername('foo'); + } + + public function testSuccessfulLoadUserByUsername() + { + $ldap = $this->getMock('Symfony\Component\Ldap\LdapClientInterface'); + $ldap + ->expects($this->once()) + ->method('escape') + ->will($this->returnValue('foo')) + ; + $ldap + ->expects($this->once()) + ->method('find') + ->will($this->returnValue(array( + array( + 'sAMAccountName' => 'foo', + 'userpassword' => 'bar', + ), + 'count' => 1, + ))) + ; + + $provider = new LdapUserProvider($ldap, 'ou=MyBusiness,dc=symfony,dc=com'); + $this->assertInstanceOf( + 'Symfony\Component\Security\Core\User\User', + $provider->loadUserByUsername('foo') + ); + } +} |