| <?php |
|
|
| require_once __DIR__.'/../../Base.php'; |
|
|
| use Kanboard\Core\Ldap\Group; |
| use Kanboard\Core\Ldap\Entries; |
|
|
| class LdapGroupTest extends Base |
| { |
| private $query; |
| private $client; |
| private $group; |
|
|
| protected function setUp(): void |
| { |
| parent::setUp(); |
|
|
| $this->client = $this |
| ->getMockBuilder('\Kanboard\Core\Ldap\Client') |
| ->setMethods(array( |
| 'getConnection', |
| )) |
| ->getMock(); |
|
|
| $this->query = $this |
| ->getMockBuilder('\Kanboard\Core\Ldap\Query') |
| ->setConstructorArgs(array($this->client)) |
| ->setMethods(array( |
| 'execute', |
| 'hasResult', |
| 'getEntries', |
| )) |
| ->getMock(); |
|
|
| $this->group = $this |
| ->getMockBuilder('\Kanboard\Core\Ldap\Group') |
| ->setConstructorArgs(array($this->query)) |
| ->setMethods(array( |
| 'getAttributeName', |
| 'getBaseDn', |
| )) |
| ->getMock(); |
| } |
|
|
| public function testGetGroups() |
| { |
| $entries = new Entries(array( |
| 'count' => 2, |
| 0 => array( |
| 'cn' => array( |
| 'count' => 1, |
| 0 => 'Kanboard Other Group', |
| ), |
| 0 => 'cn', |
| 'count' => 1, |
| 'dn' => 'CN=Kanboard Other Group,CN=Users,DC=kanboard,DC=local', |
| ), |
| 1 => array( |
| 'cn' => array( |
| 'count' => 1, |
| 0 => 'Kanboard Users', |
| ), |
| 0 => 'cn', |
| 'count' => 1, |
| 'dn' => 'CN=Kanboard Users,CN=Users,DC=kanboard,DC=local', |
| ), |
| )); |
|
|
| $this->client |
| ->expects($this->any()) |
| ->method('getConnection') |
| ->will($this->returnValue('my_ldap_resource')); |
|
|
| $this->query |
| ->expects($this->once()) |
| ->method('execute') |
| ->with( |
| $this->equalTo('CN=Users,DC=kanboard,DC=local'), |
| $this->equalTo('(&(objectClass=group)(sAMAccountName=Kanboard*))') |
| ); |
|
|
| $this->query |
| ->expects($this->once()) |
| ->method('hasResult') |
| ->will($this->returnValue(true)); |
|
|
| $this->query |
| ->expects($this->once()) |
| ->method('getEntries') |
| ->will($this->returnValue($entries)); |
|
|
| $this->group |
| ->expects($this->any()) |
| ->method('getAttributeName') |
| ->will($this->returnValue('cn')); |
|
|
| $this->group |
| ->expects($this->any()) |
| ->method('getBaseDn') |
| ->will($this->returnValue('CN=Users,DC=kanboard,DC=local')); |
|
|
| $groups = $this->group->find('(&(objectClass=group)(sAMAccountName=Kanboard*))'); |
| $this->assertCount(2, $groups); |
| $this->assertInstanceOf('Kanboard\Group\LdapGroupProvider', $groups[0]); |
| $this->assertInstanceOf('Kanboard\Group\LdapGroupProvider', $groups[1]); |
| $this->assertEquals('Kanboard Other Group', $groups[0]->getName()); |
| $this->assertEquals('Kanboard Users', $groups[1]->getName()); |
| $this->assertEquals('CN=Kanboard Other Group,CN=Users,DC=kanboard,DC=local', $groups[0]->getExternalId()); |
| $this->assertEquals('CN=Kanboard Users,CN=Users,DC=kanboard,DC=local', $groups[1]->getExternalId()); |
| } |
|
|
| public function testGetGroupsWithNoResult() |
| { |
| $entries = new Entries(array()); |
|
|
| $this->client |
| ->expects($this->any()) |
| ->method('getConnection') |
| ->will($this->returnValue('my_ldap_resource')); |
|
|
| $this->query |
| ->expects($this->once()) |
| ->method('execute') |
| ->with( |
| $this->equalTo('CN=Users,DC=kanboard,DC=local'), |
| $this->equalTo('(&(objectClass=group)(sAMAccountName=Kanboard*))') |
| ); |
|
|
| $this->query |
| ->expects($this->once()) |
| ->method('hasResult') |
| ->will($this->returnValue(false)); |
|
|
| $this->query |
| ->expects($this->never()) |
| ->method('getEntries'); |
|
|
| $this->group |
| ->expects($this->any()) |
| ->method('getAttributeName') |
| ->will($this->returnValue('cn')); |
|
|
| $this->group |
| ->expects($this->any()) |
| ->method('getBaseDn') |
| ->will($this->returnValue('CN=Users,DC=kanboard,DC=local')); |
|
|
| $groups = $this->group->find('(&(objectClass=group)(sAMAccountName=Kanboard*))'); |
| $this->assertCount(0, $groups); |
| } |
|
|
| public function testGetBaseDnNotConfigured() |
| { |
| $this->expectException('\LogicException'); |
|
|
| $group = new Group($this->query); |
| $group->getBaseDn(); |
| } |
| } |
|
|