| namespace Kanboard\Core\Ldap; | |
| require_once __DIR__.'/../../Base.php'; | |
| function ldap_search($link_identifier, $base_dn, $filter, array $attributes) | |
| { | |
| return QueryTest::$functions->ldap_search($link_identifier, $base_dn, $filter, $attributes); | |
| } | |
| function ldap_get_entries($link_identifier, $result_identifier) | |
| { | |
| return QueryTest::$functions->ldap_get_entries($link_identifier, $result_identifier); | |
| } | |
| class QueryTest extends \Base | |
| { | |
| public static $functions; | |
| private $client; | |
| protected function setUp(): void | |
| { | |
| parent::setup(); | |
| self::$functions = $this | |
| ->getMockBuilder('stdClass') | |
| ->setMethods(array( | |
| 'ldap_search', | |
| 'ldap_get_entries', | |
| )) | |
| ->getMock(); | |
| $this->client = $this | |
| ->getMockBuilder('\Kanboard\Core\Ldap\Client') | |
| ->setMethods(array( | |
| 'getConnection', | |
| )) | |
| ->getMock(); | |
| } | |
| protected function tearDown(): void | |
| { | |
| parent::tearDown(); | |
| self::$functions = null; | |
| } | |
| public function testExecuteQuerySuccessfully() | |
| { | |
| $entries = array( | |
| 'count' => 1, | |
| 0 => array( | |
| 'count' => 2, | |
| 'dn' => 'uid=my_user,ou=People,dc=kanboard,dc=local', | |
| 'displayname' => array( | |
| 'count' => 1, | |
| 0 => 'My user', | |
| ), | |
| 'mail' => array( | |
| 'count' => 2, | |
| 0 => 'user1@localhost', | |
| 1 => 'user2@localhost', | |
| ), | |
| 0 => 'displayname', | |
| 1 => 'mail', | |
| ) | |
| ); | |
| $this->client | |
| ->expects($this->any()) | |
| ->method('getConnection') | |
| ->will($this->returnValue('my_ldap_resource')); | |
| self::$functions | |
| ->expects($this->once()) | |
| ->method('ldap_search') | |
| ->with( | |
| $this->equalTo('my_ldap_resource'), | |
| $this->equalTo('ou=People,dc=kanboard,dc=local'), | |
| $this->equalTo('uid=my_user'), | |
| $this->equalTo(array('displayname')) | |
| ) | |
| ->will($this->returnValue('search_resource')); | |
| self::$functions | |
| ->expects($this->once()) | |
| ->method('ldap_get_entries') | |
| ->with( | |
| $this->equalTo('my_ldap_resource'), | |
| $this->equalTo('search_resource') | |
| ) | |
| ->will($this->returnValue($entries)); | |
| $query = new Query($this->client); | |
| $query->execute('ou=People,dc=kanboard,dc=local', 'uid=my_user', array('displayname')); | |
| $this->assertTrue($query->hasResult()); | |
| $this->assertEquals('My user', $query->getEntries()->getFirstEntry()->getFirstValue('displayname')); | |
| $this->assertEquals('user1@localhost', $query->getEntries()->getFirstEntry()->getFirstValue('mail')); | |
| $this->assertEquals('', $query->getEntries()->getFirstEntry()->getFirstValue('not_found')); | |
| $this->assertEquals('uid=my_user,ou=People,dc=kanboard,dc=local', $query->getEntries()->getFirstEntry()->getDn()); | |
| $this->assertEquals('', $query->getEntries()->getFirstEntry()->getFirstValue('missing')); | |
| } | |
| public function testExecuteQueryNotFound() | |
| { | |
| $this->client | |
| ->expects($this->any()) | |
| ->method('getConnection') | |
| ->will($this->returnValue('my_ldap_resource')); | |
| self::$functions | |
| ->expects($this->once()) | |
| ->method('ldap_search') | |
| ->with( | |
| $this->equalTo('my_ldap_resource'), | |
| $this->equalTo('ou=People,dc=kanboard,dc=local'), | |
| $this->equalTo('uid=my_user'), | |
| $this->equalTo(array('displayname')) | |
| ) | |
| ->will($this->returnValue('search_resource')); | |
| self::$functions | |
| ->expects($this->once()) | |
| ->method('ldap_get_entries') | |
| ->with( | |
| $this->equalTo('my_ldap_resource'), | |
| $this->equalTo('search_resource') | |
| ) | |
| ->will($this->returnValue(array())); | |
| $query = new Query($this->client); | |
| $query->execute('ou=People,dc=kanboard,dc=local', 'uid=my_user', array('displayname')); | |
| $this->assertFalse($query->hasResult()); | |
| } | |
| public function testExecuteQueryFailed() | |
| { | |
| $this->client | |
| ->expects($this->once()) | |
| ->method('getConnection') | |
| ->will($this->returnValue('my_ldap_resource')); | |
| self::$functions | |
| ->expects($this->once()) | |
| ->method('ldap_search') | |
| ->with( | |
| $this->equalTo('my_ldap_resource'), | |
| $this->equalTo('ou=People,dc=kanboard,dc=local'), | |
| $this->equalTo('uid=my_user'), | |
| $this->equalTo(array('displayname')) | |
| ) | |
| ->will($this->returnValue(false)); | |
| $query = new Query($this->client); | |
| $query->execute('ou=People,dc=kanboard,dc=local', 'uid=my_user', array('displayname')); | |
| $this->assertFalse($query->hasResult()); | |
| } | |
| } | |