|
|
<?php |
|
|
|
|
|
require_once __DIR__.'/../../Base.php'; |
|
|
|
|
|
use Kanboard\Core\Ldap\Query; |
|
|
use Kanboard\Core\Ldap\User; |
|
|
use Kanboard\Core\Ldap\Entries; |
|
|
use Kanboard\Core\Security\Role; |
|
|
use Kanboard\Group\LdapGroupProvider; |
|
|
|
|
|
class LdapUserTest extends Base |
|
|
{ |
|
|
private $query; |
|
|
private $client; |
|
|
private $user; |
|
|
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(new Query($this->client))) |
|
|
->setMethods(array( |
|
|
'find', |
|
|
)) |
|
|
->getMock(); |
|
|
|
|
|
$this->user = $this |
|
|
->getMockBuilder('\Kanboard\Core\Ldap\User') |
|
|
->setConstructorArgs(array($this->query, $this->group)) |
|
|
->setMethods(array( |
|
|
'getAttributeUsername', |
|
|
'getAttributeEmail', |
|
|
'getAttributeName', |
|
|
'getAttributeGroup', |
|
|
'getAttributePhoto', |
|
|
'getGroupUserFilter', |
|
|
'getGroupAdminDn', |
|
|
'getGroupManagerDn', |
|
|
'getBaseDn', |
|
|
)) |
|
|
->getMock(); |
|
|
} |
|
|
|
|
|
public function testGetUserWithNoGroupConfigured() |
|
|
{ |
|
|
$entries = new Entries(array( |
|
|
'count' => 1, |
|
|
0 => array( |
|
|
'count' => 2, |
|
|
'dn' => 'uid=my_ldap_user,ou=People,dc=kanboard,dc=local', |
|
|
'displayname' => array( |
|
|
'count' => 1, |
|
|
0 => 'My LDAP user', |
|
|
), |
|
|
'mail' => array( |
|
|
'count' => 2, |
|
|
0 => 'user1@localhost', |
|
|
1 => 'user2@localhost', |
|
|
), |
|
|
'samaccountname' => array( |
|
|
'count' => 1, |
|
|
0 => 'my_ldap_user', |
|
|
), |
|
|
0 => 'displayname', |
|
|
1 => 'mail', |
|
|
2 => 'samaccountname', |
|
|
) |
|
|
)); |
|
|
|
|
|
$this->client |
|
|
->expects($this->any()) |
|
|
->method('getConnection') |
|
|
->will($this->returnValue('my_ldap_resource')); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('execute') |
|
|
->with( |
|
|
$this->equalTo('ou=People,dc=kanboard,dc=local'), |
|
|
$this->equalTo('(uid=my_ldap_user)') |
|
|
); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('hasResult') |
|
|
->will($this->returnValue(true)); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('getEntries') |
|
|
->will($this->returnValue($entries)); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeUsername') |
|
|
->will($this->returnValue('samaccountname')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeName') |
|
|
->will($this->returnValue('displayname')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeEmail') |
|
|
->will($this->returnValue('mail')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getBaseDn') |
|
|
->will($this->returnValue('ou=People,dc=kanboard,dc=local')); |
|
|
|
|
|
$user = $this->user->find('(uid=my_ldap_user)'); |
|
|
$this->assertInstanceOf('Kanboard\User\LdapUserProvider', $user); |
|
|
$this->assertEquals('uid=my_ldap_user,ou=People,dc=kanboard,dc=local', $user->getDn()); |
|
|
$this->assertEquals('my_ldap_user', $user->getUsername()); |
|
|
$this->assertEquals('My LDAP user', $user->getName()); |
|
|
$this->assertEquals('user1@localhost', $user->getEmail()); |
|
|
$this->assertEquals(null, $user->getRole()); |
|
|
$this->assertSame('', $user->getPhoto()); |
|
|
$this->assertEquals(array(), $user->getExternalGroupIds()); |
|
|
$this->assertEquals(array('is_ldap_user' => 1), $user->getExtraAttributes()); |
|
|
} |
|
|
|
|
|
public function testGetUserWithPhoto() |
|
|
{ |
|
|
$entries = new Entries(array( |
|
|
'count' => 1, |
|
|
0 => array( |
|
|
'count' => 2, |
|
|
'dn' => 'uid=my_ldap_user,ou=People,dc=kanboard,dc=local', |
|
|
'displayname' => array( |
|
|
'count' => 1, |
|
|
0 => 'My LDAP user', |
|
|
), |
|
|
'mail' => array( |
|
|
'count' => 2, |
|
|
0 => 'user1@localhost', |
|
|
1 => 'user2@localhost', |
|
|
), |
|
|
'samaccountname' => array( |
|
|
'count' => 1, |
|
|
0 => 'my_ldap_user', |
|
|
), |
|
|
'jpegPhoto' => array( |
|
|
'count' => 1, |
|
|
0 => 'my photo', |
|
|
), |
|
|
0 => 'displayname', |
|
|
1 => 'mail', |
|
|
2 => 'samaccountname', |
|
|
) |
|
|
)); |
|
|
|
|
|
$this->client |
|
|
->expects($this->any()) |
|
|
->method('getConnection') |
|
|
->will($this->returnValue('my_ldap_resource')); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('execute') |
|
|
->with( |
|
|
$this->equalTo('ou=People,dc=kanboard,dc=local'), |
|
|
$this->equalTo('(uid=my_ldap_user)') |
|
|
); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('hasResult') |
|
|
->will($this->returnValue(true)); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('getEntries') |
|
|
->will($this->returnValue($entries)); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributePhoto') |
|
|
->will($this->returnValue('jpegPhoto')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getBaseDn') |
|
|
->will($this->returnValue('ou=People,dc=kanboard,dc=local')); |
|
|
|
|
|
$user = $this->user->find('(uid=my_ldap_user)'); |
|
|
$this->assertInstanceOf('Kanboard\User\LdapUserProvider', $user); |
|
|
$this->assertEquals('my photo', $user->getPhoto()); |
|
|
} |
|
|
|
|
|
public function testGetUserWithAdminRole() |
|
|
{ |
|
|
$entries = new Entries(array( |
|
|
'count' => 1, |
|
|
0 => array( |
|
|
'count' => 2, |
|
|
'dn' => 'uid=my_ldap_user,ou=People,dc=kanboard,dc=local', |
|
|
'displayname' => array( |
|
|
'count' => 1, |
|
|
0 => 'My LDAP user', |
|
|
), |
|
|
'mail' => array( |
|
|
'count' => 2, |
|
|
0 => 'user1@localhost', |
|
|
1 => 'user2@localhost', |
|
|
), |
|
|
'samaccountname' => array( |
|
|
'count' => 1, |
|
|
0 => 'my_ldap_user', |
|
|
), |
|
|
'memberof' => array( |
|
|
'count' => 3, |
|
|
0 => 'CN=Kanboard-Users,CN=Users,DC=kanboard,DC=local', |
|
|
1 => 'CN=Kanboard-Managers,CN=Users,DC=kanboard,DC=local', |
|
|
2 => 'CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local', |
|
|
), |
|
|
0 => 'displayname', |
|
|
1 => 'mail', |
|
|
2 => 'samaccountname', |
|
|
3 => 'memberof', |
|
|
) |
|
|
)); |
|
|
|
|
|
$this->client |
|
|
->expects($this->any()) |
|
|
->method('getConnection') |
|
|
->will($this->returnValue('my_ldap_resource')); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('execute') |
|
|
->with( |
|
|
$this->equalTo('ou=People,dc=kanboard,dc=local'), |
|
|
$this->equalTo('(uid=my_ldap_user)') |
|
|
); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('hasResult') |
|
|
->will($this->returnValue(true)); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('getEntries') |
|
|
->will($this->returnValue($entries)); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeUsername') |
|
|
->will($this->returnValue('samaccountname')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeName') |
|
|
->will($this->returnValue('displayname')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeEmail') |
|
|
->will($this->returnValue('mail')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeGroup') |
|
|
->will($this->returnValue('memberof')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupAdminDn') |
|
|
->will($this->returnValue('CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getBaseDn') |
|
|
->will($this->returnValue('ou=People,dc=kanboard,dc=local')); |
|
|
|
|
|
$user = $this->user->find('(uid=my_ldap_user)'); |
|
|
$this->assertInstanceOf('Kanboard\User\LdapUserProvider', $user); |
|
|
$this->assertEquals('uid=my_ldap_user,ou=People,dc=kanboard,dc=local', $user->getDn()); |
|
|
$this->assertEquals('my_ldap_user', $user->getUsername()); |
|
|
$this->assertEquals('My LDAP user', $user->getName()); |
|
|
$this->assertEquals('user1@localhost', $user->getEmail()); |
|
|
$this->assertEquals(Role::APP_ADMIN, $user->getRole()); |
|
|
$this->assertEquals( |
|
|
array( |
|
|
'CN=Kanboard-Users,CN=Users,DC=kanboard,DC=local', |
|
|
'CN=Kanboard-Managers,CN=Users,DC=kanboard,DC=local', |
|
|
'CN=Kanboard-Admins,CN=Users,DC=kanboard,DC=local', |
|
|
), |
|
|
$user->getExternalGroupIds() |
|
|
); |
|
|
$this->assertEquals(array('is_ldap_user' => 1), $user->getExtraAttributes()); |
|
|
} |
|
|
|
|
|
public function testGetUserWithManagerRole() |
|
|
{ |
|
|
$entries = new Entries(array( |
|
|
'count' => 1, |
|
|
0 => array( |
|
|
'count' => 2, |
|
|
'dn' => 'uid=my_ldap_user,ou=People,dc=kanboard,dc=local', |
|
|
'displayname' => array( |
|
|
'count' => 1, |
|
|
0 => 'My LDAP user', |
|
|
), |
|
|
'mail' => array( |
|
|
'count' => 2, |
|
|
0 => 'user1@localhost', |
|
|
1 => 'user2@localhost', |
|
|
), |
|
|
'samaccountname' => array( |
|
|
'count' => 1, |
|
|
0 => 'my_ldap_user', |
|
|
), |
|
|
'memberof' => array( |
|
|
'count' => 2, |
|
|
0 => 'CN=Kanboard-Users,CN=Users,DC=kanboard,DC=local', |
|
|
1 => 'CN=Kanboard-Managers,CN=Users,DC=kanboard,DC=local', |
|
|
), |
|
|
0 => 'displayname', |
|
|
1 => 'mail', |
|
|
2 => 'samaccountname', |
|
|
3 => 'memberof', |
|
|
) |
|
|
)); |
|
|
|
|
|
$this->client |
|
|
->expects($this->any()) |
|
|
->method('getConnection') |
|
|
->will($this->returnValue('my_ldap_resource')); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('execute') |
|
|
->with( |
|
|
$this->equalTo('ou=People,dc=kanboard,dc=local'), |
|
|
$this->equalTo('(uid=my_ldap_user)') |
|
|
); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('hasResult') |
|
|
->will($this->returnValue(true)); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('getEntries') |
|
|
->will($this->returnValue($entries)); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeUsername') |
|
|
->will($this->returnValue('samaccountname')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeName') |
|
|
->will($this->returnValue('displayname')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeEmail') |
|
|
->will($this->returnValue('mail')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeGroup') |
|
|
->will($this->returnValue('memberof')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupManagerDn') |
|
|
->will($this->returnValue('CN=Kanboard-Managers,CN=Users,DC=kanboard,DC=local')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getBaseDn') |
|
|
->will($this->returnValue('ou=People,dc=kanboard,dc=local')); |
|
|
|
|
|
$user = $this->user->find('(uid=my_ldap_user)'); |
|
|
$this->assertInstanceOf('Kanboard\User\LdapUserProvider', $user); |
|
|
$this->assertEquals('uid=my_ldap_user,ou=People,dc=kanboard,dc=local', $user->getDn()); |
|
|
$this->assertEquals('my_ldap_user', $user->getUsername()); |
|
|
$this->assertEquals('My LDAP user', $user->getName()); |
|
|
$this->assertEquals('user1@localhost', $user->getEmail()); |
|
|
$this->assertEquals(Role::APP_MANAGER, $user->getRole()); |
|
|
$this->assertEquals(array('CN=Kanboard-Users,CN=Users,DC=kanboard,DC=local', 'CN=Kanboard-Managers,CN=Users,DC=kanboard,DC=local'), $user->getExternalGroupIds()); |
|
|
$this->assertEquals(array('is_ldap_user' => 1), $user->getExtraAttributes()); |
|
|
} |
|
|
|
|
|
public function testGetUserNotFound() |
|
|
{ |
|
|
$this->client |
|
|
->expects($this->any()) |
|
|
->method('getConnection') |
|
|
->will($this->returnValue('my_ldap_resource')); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('execute') |
|
|
->with( |
|
|
$this->equalTo('ou=People,dc=kanboard,dc=local'), |
|
|
$this->equalTo('(uid=my_ldap_user)') |
|
|
); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('hasResult') |
|
|
->will($this->returnValue(false)); |
|
|
|
|
|
$this->query |
|
|
->expects($this->never()) |
|
|
->method('getEntries'); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeUsername') |
|
|
->will($this->returnValue('samaccountname')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeName') |
|
|
->will($this->returnValue('displayname')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeEmail') |
|
|
->will($this->returnValue('mail')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getBaseDn') |
|
|
->will($this->returnValue('ou=People,dc=kanboard,dc=local')); |
|
|
|
|
|
$user = $this->user->find('(uid=my_ldap_user)'); |
|
|
$this->assertEquals(null, $user); |
|
|
} |
|
|
|
|
|
public function testGetUserWithAdminRoleAndPosixGroups() |
|
|
{ |
|
|
$entries = new Entries(array( |
|
|
'count' => 1, |
|
|
0 => array( |
|
|
'count' => 2, |
|
|
'dn' => 'uid=my_ldap_user,ou=Users,dc=kanboard,dc=local', |
|
|
'cn' => array( |
|
|
'count' => 1, |
|
|
0 => 'My LDAP user', |
|
|
), |
|
|
'mail' => array( |
|
|
'count' => 2, |
|
|
0 => 'user1@localhost', |
|
|
1 => 'user2@localhost', |
|
|
), |
|
|
'uid' => array( |
|
|
'count' => 1, |
|
|
0 => 'my_ldap_user', |
|
|
), |
|
|
0 => 'cn', |
|
|
1 => 'mail', |
|
|
2 => 'uid', |
|
|
) |
|
|
)); |
|
|
|
|
|
$groups = array( |
|
|
new LdapGroupProvider('CN=Kanboard Admins,OU=Groups,DC=kanboard,DC=local', 'Kanboard Admins') |
|
|
); |
|
|
|
|
|
$this->client |
|
|
->expects($this->any()) |
|
|
->method('getConnection') |
|
|
->will($this->returnValue('my_ldap_resource')); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('execute') |
|
|
->with( |
|
|
$this->equalTo('OU=Users,DC=kanboard,DC=local'), |
|
|
$this->equalTo('(uid=my_ldap_user)') |
|
|
); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('hasResult') |
|
|
->will($this->returnValue(true)); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('getEntries') |
|
|
->will($this->returnValue($entries)); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeUsername') |
|
|
->will($this->returnValue('uid')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeName') |
|
|
->will($this->returnValue('cn')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeEmail') |
|
|
->will($this->returnValue('mail')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeGroup') |
|
|
->will($this->returnValue('')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupUserFilter') |
|
|
->will($this->returnValue('(&(objectClass=posixGroup)(memberUid=%s))')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupAdminDn') |
|
|
->will($this->returnValue('cn=Kanboard Admins,ou=Groups,dc=kanboard,dc=local')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getBaseDn') |
|
|
->will($this->returnValue('OU=Users,DC=kanboard,DC=local')); |
|
|
|
|
|
$this->group |
|
|
->expects($this->once()) |
|
|
->method('find') |
|
|
->with('(&(objectClass=posixGroup)(memberUid=my_ldap_user))') |
|
|
->will($this->returnValue($groups)); |
|
|
|
|
|
$user = $this->user->find('(uid=my_ldap_user)'); |
|
|
$this->assertInstanceOf('Kanboard\User\LdapUserProvider', $user); |
|
|
$this->assertEquals('uid=my_ldap_user,ou=Users,dc=kanboard,dc=local', $user->getDn()); |
|
|
$this->assertEquals('my_ldap_user', $user->getUsername()); |
|
|
$this->assertEquals('My LDAP user', $user->getName()); |
|
|
$this->assertEquals('user1@localhost', $user->getEmail()); |
|
|
$this->assertEquals(array('CN=Kanboard Admins,OU=Groups,DC=kanboard,DC=local'), $user->getExternalGroupIds()); |
|
|
$this->assertEquals(Role::APP_ADMIN, $user->getRole()); |
|
|
$this->assertEquals(array('is_ldap_user' => 1), $user->getExtraAttributes()); |
|
|
} |
|
|
|
|
|
public function testGetUserWithManagerRoleAndPosixGroups() |
|
|
{ |
|
|
$entries = new Entries(array( |
|
|
'count' => 1, |
|
|
0 => array( |
|
|
'count' => 2, |
|
|
'dn' => 'uid=my_ldap_user,ou=Users,dc=kanboard,dc=local', |
|
|
'cn' => array( |
|
|
'count' => 1, |
|
|
0 => 'My LDAP user', |
|
|
), |
|
|
'mail' => array( |
|
|
'count' => 2, |
|
|
0 => 'user1@localhost', |
|
|
1 => 'user2@localhost', |
|
|
), |
|
|
'uid' => array( |
|
|
'count' => 1, |
|
|
0 => 'my_ldap_user', |
|
|
), |
|
|
0 => 'cn', |
|
|
1 => 'mail', |
|
|
2 => 'uid', |
|
|
) |
|
|
)); |
|
|
|
|
|
$groups = array( |
|
|
new LdapGroupProvider('CN=Kanboard Users,OU=Groups,DC=kanboard,DC=local', 'Kanboard Users'), |
|
|
new LdapGroupProvider('CN=Kanboard Managers,OU=Groups,DC=kanboard,DC=local', 'Kanboard Managers'), |
|
|
); |
|
|
|
|
|
$this->client |
|
|
->expects($this->any()) |
|
|
->method('getConnection') |
|
|
->will($this->returnValue('my_ldap_resource')); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('execute') |
|
|
->with( |
|
|
$this->equalTo('OU=Users,DC=kanboard,DC=local'), |
|
|
$this->equalTo('(uid=my_ldap_user)') |
|
|
); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('hasResult') |
|
|
->will($this->returnValue(true)); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('getEntries') |
|
|
->will($this->returnValue($entries)); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeUsername') |
|
|
->will($this->returnValue('uid')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeName') |
|
|
->will($this->returnValue('cn')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeEmail') |
|
|
->will($this->returnValue('mail')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeGroup') |
|
|
->will($this->returnValue('')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupUserFilter') |
|
|
->will($this->returnValue('(&(objectClass=posixGroup)(memberUid=%s))')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupManagerDn') |
|
|
->will($this->returnValue('cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getBaseDn') |
|
|
->will($this->returnValue('OU=Users,DC=kanboard,DC=local')); |
|
|
|
|
|
$this->group |
|
|
->expects($this->once()) |
|
|
->method('find') |
|
|
->with('(&(objectClass=posixGroup)(memberUid=my_ldap_user))') |
|
|
->will($this->returnValue($groups)); |
|
|
|
|
|
$user = $this->user->find('(uid=my_ldap_user)'); |
|
|
$this->assertInstanceOf('Kanboard\User\LdapUserProvider', $user); |
|
|
$this->assertEquals('uid=my_ldap_user,ou=Users,dc=kanboard,dc=local', $user->getDn()); |
|
|
$this->assertEquals('my_ldap_user', $user->getUsername()); |
|
|
$this->assertEquals('My LDAP user', $user->getName()); |
|
|
$this->assertEquals('user1@localhost', $user->getEmail()); |
|
|
$this->assertEquals( |
|
|
array( |
|
|
'CN=Kanboard Users,OU=Groups,DC=kanboard,DC=local', |
|
|
'CN=Kanboard Managers,OU=Groups,DC=kanboard,DC=local', |
|
|
), |
|
|
$user->getExternalGroupIds() |
|
|
); |
|
|
$this->assertEquals(Role::APP_MANAGER, $user->getRole()); |
|
|
$this->assertEquals(array('is_ldap_user' => 1), $user->getExtraAttributes()); |
|
|
} |
|
|
|
|
|
public function testGetUserWithUserRoleAndPosixGroups() |
|
|
{ |
|
|
$entries = new Entries(array( |
|
|
'count' => 1, |
|
|
0 => array( |
|
|
'count' => 2, |
|
|
'dn' => 'uid=my_ldap_user,ou=Users,dc=kanboard,dc=local', |
|
|
'cn' => array( |
|
|
'count' => 1, |
|
|
0 => 'My LDAP user', |
|
|
), |
|
|
'mail' => array( |
|
|
'count' => 2, |
|
|
0 => 'user1@localhost', |
|
|
1 => 'user2@localhost', |
|
|
), |
|
|
'uid' => array( |
|
|
'count' => 1, |
|
|
0 => 'my_ldap_user', |
|
|
), |
|
|
0 => 'cn', |
|
|
1 => 'mail', |
|
|
2 => 'uid', |
|
|
) |
|
|
)); |
|
|
|
|
|
$groups = array( |
|
|
new LdapGroupProvider('CN=Kanboard Users,OU=Groups,DC=kanboard,DC=local', 'Kanboard Users'), |
|
|
); |
|
|
|
|
|
$this->client |
|
|
->expects($this->any()) |
|
|
->method('getConnection') |
|
|
->will($this->returnValue('my_ldap_resource')); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('execute') |
|
|
->with( |
|
|
$this->equalTo('OU=Users,DC=kanboard,DC=local'), |
|
|
$this->equalTo('(uid=my_ldap_user)') |
|
|
); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('hasResult') |
|
|
->will($this->returnValue(true)); |
|
|
|
|
|
$this->query |
|
|
->expects($this->once()) |
|
|
->method('getEntries') |
|
|
->will($this->returnValue($entries)); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeUsername') |
|
|
->will($this->returnValue('uid')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeName') |
|
|
->will($this->returnValue('cn')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeEmail') |
|
|
->will($this->returnValue('mail')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getAttributeGroup') |
|
|
->will($this->returnValue('')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupUserFilter') |
|
|
->will($this->returnValue('(&(objectClass=posixGroup)(memberUid=%s))')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupManagerDn') |
|
|
->will($this->returnValue('cn=Kanboard Managers,ou=Groups,dc=kanboard,dc=local')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getBaseDn') |
|
|
->will($this->returnValue('OU=Users,DC=kanboard,DC=local')); |
|
|
|
|
|
$this->group |
|
|
->expects($this->once()) |
|
|
->method('find') |
|
|
->with('(&(objectClass=posixGroup)(memberUid=my_ldap_user))') |
|
|
->will($this->returnValue($groups)); |
|
|
|
|
|
$user = $this->user->find('(uid=my_ldap_user)'); |
|
|
$this->assertInstanceOf('Kanboard\User\LdapUserProvider', $user); |
|
|
$this->assertEquals('uid=my_ldap_user,ou=Users,dc=kanboard,dc=local', $user->getDn()); |
|
|
$this->assertEquals('my_ldap_user', $user->getUsername()); |
|
|
$this->assertEquals('My LDAP user', $user->getName()); |
|
|
$this->assertEquals('user1@localhost', $user->getEmail()); |
|
|
$this->assertEquals( |
|
|
array( |
|
|
'CN=Kanboard Users,OU=Groups,DC=kanboard,DC=local', |
|
|
), |
|
|
$user->getExternalGroupIds() |
|
|
); |
|
|
$this->assertEquals(Role::APP_USER, $user->getRole()); |
|
|
$this->assertEquals(array('is_ldap_user' => 1), $user->getExtraAttributes()); |
|
|
} |
|
|
|
|
|
public function testGetLdapUserPatternNotConfigured() |
|
|
{ |
|
|
$this->expectException('\LogicException'); |
|
|
|
|
|
$user = new User($this->query); |
|
|
$user->getLdapUserPattern('test'); |
|
|
} |
|
|
|
|
|
public function testGetLdapUserWithMultiplePlaceholders() |
|
|
{ |
|
|
$filter = '(|(&(objectClass=user)(mail=%s))(&(objectClass=user)(sAMAccountName=%s)))'; |
|
|
$expected = '(|(&(objectClass=user)(mail=test))(&(objectClass=user)(sAMAccountName=test)))'; |
|
|
|
|
|
$user = new User($this->query); |
|
|
$this->assertEquals($expected, $user->getLdapUserPattern('test', $filter)); |
|
|
} |
|
|
|
|
|
public function testGetLdapUserWithOnePlaceholder() |
|
|
{ |
|
|
$filter = '(sAMAccountName=%s)'; |
|
|
$expected = '(sAMAccountName=test)'; |
|
|
|
|
|
$user = new User($this->query); |
|
|
$this->assertEquals($expected, $user->getLdapUserPattern('test', $filter)); |
|
|
} |
|
|
|
|
|
public function testGetGroupUserFilter() |
|
|
{ |
|
|
$user = new User($this->query); |
|
|
$this->assertSame('', $user->getGroupUserFilter()); |
|
|
} |
|
|
|
|
|
public function testHasGroupUserFilterWithEmptyString() |
|
|
{ |
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupUserFilter') |
|
|
->will($this->returnValue('')); |
|
|
|
|
|
$this->assertFalse($this->user->hasGroupUserFilter()); |
|
|
} |
|
|
|
|
|
public function testHasGroupUserFilterWithNull() |
|
|
{ |
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupUserFilter') |
|
|
->will($this->returnValue(null)); |
|
|
|
|
|
$this->assertFalse($this->user->hasGroupUserFilter()); |
|
|
} |
|
|
|
|
|
public function testHasGroupUserFilterWithValue() |
|
|
{ |
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupUserFilter') |
|
|
->will($this->returnValue('foobar')); |
|
|
|
|
|
$this->assertTrue($this->user->hasGroupUserFilter()); |
|
|
} |
|
|
|
|
|
public function testHasGroupsConfigured() |
|
|
{ |
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupAdminDn') |
|
|
->will($this->returnValue('something')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupManagerDn') |
|
|
->will($this->returnValue('something')); |
|
|
|
|
|
$this->assertTrue($this->user->hasGroupsConfigured()); |
|
|
} |
|
|
|
|
|
public function testHasGroupAdminDnConfigured() |
|
|
{ |
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupAdminDn') |
|
|
->will($this->returnValue('something')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupManagerDn') |
|
|
->will($this->returnValue('')); |
|
|
|
|
|
$this->assertTrue($this->user->hasGroupsConfigured()); |
|
|
} |
|
|
|
|
|
public function testHasGroupManagerDnConfigured() |
|
|
{ |
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupAdminDn') |
|
|
->will($this->returnValue('')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupManagerDn') |
|
|
->will($this->returnValue('something')); |
|
|
|
|
|
$this->assertTrue($this->user->hasGroupsConfigured()); |
|
|
} |
|
|
|
|
|
public function testHasGroupsNotConfigured() |
|
|
{ |
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupAdminDn') |
|
|
->will($this->returnValue('')); |
|
|
|
|
|
$this->user |
|
|
->expects($this->any()) |
|
|
->method('getGroupManagerDn') |
|
|
->will($this->returnValue('')); |
|
|
|
|
|
$this->assertFalse($this->user->hasGroupsConfigured()); |
|
|
} |
|
|
} |
|
|
|