markTestSkipped('LDAP is not installed'); } } private function getTestLdapDriver(Ldap $ldap): TestLdapDriver { $config = SystemConfigurationFactory::createStub(['ldap' => [ 'role' => [], 'user' => [], 'connection' => [], ]]); return new TestLdapDriver(new LdapConfiguration($config), $ldap); } public function testBindSuccess() { $zendLdap = $this->getMockBuilder(Ldap::class)->disableOriginalConstructor()->onlyMethods(['bind'])->getMock(); $zendLdap->expects($this->once())->method('bind')->willReturnSelf(); $user = new User(); $user->setUserIdentifier('foo'); $sut = $this->getTestLdapDriver($zendLdap); $result = $sut->bind($user->getUserIdentifier(), 'test123'); self::assertTrue($result); } public function testBindException() { $zendLdap = $this->getMockBuilder(Ldap::class)->disableOriginalConstructor()->onlyMethods(['bind'])->getMock(); $zendLdap->expects($this->once())->method('bind')->willThrowException(new LdapException()); $user = new User(); $user->setUserIdentifier('foo'); $sut = $this->getTestLdapDriver($zendLdap); $result = $sut->bind($user->getUserIdentifier(), 'test123'); self::assertFalse($result); } public function testSearchSuccess() { $zendLdap = $this->getMockBuilder(Ldap::class)->disableOriginalConstructor()->onlyMethods(['bind', 'searchEntries'])->getMock(); $zendLdap->expects($this->once())->method('bind'); $zendLdap->expects($this->once())->method('searchEntries')->willReturn([1, 2, 3]); $sut = $this->getTestLdapDriver($zendLdap); $result = $sut->search('', '', []); self::assertEquals(['count' => 3, 1, 2, 3], $result); } } class TestLdapDriver extends LdapDriver { private Ldap $testDriver; public function __construct(LdapConfiguration $config, Ldap $ldap) { parent::__construct($config); $this->testDriver = $ldap; } protected function getDriver(): Ldap { return $this->testDriver; } }