really use known groups
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
parent
3447ea4955
commit
02b703193a
|
@ -945,7 +945,7 @@ class Access extends LDAPUtility {
|
||||||
|
|
||||||
array_walk($groupRecords, function ($record) use ($idsByDn) {
|
array_walk($groupRecords, function ($record) use ($idsByDn) {
|
||||||
$newlyMapped = false;
|
$newlyMapped = false;
|
||||||
$gid = $uidsByDn[$record['dn'][0]] ?? null;
|
$gid = $idsByDn[$record['dn'][0]] ?? null;
|
||||||
if ($gid === null) {
|
if ($gid === null) {
|
||||||
$gid = $this->dn2ocname($record['dn'][0], null, false, $newlyMapped, $record);
|
$gid = $this->dn2ocname($record['dn'][0], null, false, $newlyMapped, $record);
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,7 @@ use OCA\User_LDAP\Helper;
|
||||||
use OCA\User_LDAP\ILDAPWrapper;
|
use OCA\User_LDAP\ILDAPWrapper;
|
||||||
use OCA\User_LDAP\LDAP;
|
use OCA\User_LDAP\LDAP;
|
||||||
use OCA\User_LDAP\LogWrapper;
|
use OCA\User_LDAP\LogWrapper;
|
||||||
|
use OCA\User_LDAP\Mapping\GroupMapping;
|
||||||
use OCA\User_LDAP\Mapping\UserMapping;
|
use OCA\User_LDAP\Mapping\UserMapping;
|
||||||
use OCA\User_LDAP\User\Manager;
|
use OCA\User_LDAP\User\Manager;
|
||||||
use OCA\User_LDAP\User\OfflineUser;
|
use OCA\User_LDAP\User\OfflineUser;
|
||||||
|
@ -66,6 +67,8 @@ class AccessTest extends TestCase {
|
||||||
protected $userMapper;
|
protected $userMapper;
|
||||||
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
|
||||||
protected $shareManager;
|
protected $shareManager;
|
||||||
|
/** @var GroupMapping|\PHPUnit\Framework\MockObject\MockObject */
|
||||||
|
protected $groupMapper;
|
||||||
/** @var Connection|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var Connection|\PHPUnit\Framework\MockObject\MockObject */
|
||||||
private $connection;
|
private $connection;
|
||||||
/** @var LDAP|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var LDAP|\PHPUnit\Framework\MockObject\MockObject */
|
||||||
|
@ -88,6 +91,7 @@ class AccessTest extends TestCase {
|
||||||
$this->helper = $this->createMock(Helper::class);
|
$this->helper = $this->createMock(Helper::class);
|
||||||
$this->config = $this->createMock(IConfig::class);
|
$this->config = $this->createMock(IConfig::class);
|
||||||
$this->userMapper = $this->createMock(UserMapping::class);
|
$this->userMapper = $this->createMock(UserMapping::class);
|
||||||
|
$this->groupMapper = $this->createMock(GroupMapping::class);
|
||||||
$this->ncUserManager = $this->createMock(IUserManager::class);
|
$this->ncUserManager = $this->createMock(IUserManager::class);
|
||||||
$this->shareManager = $this->createMock(IManager::class);
|
$this->shareManager = $this->createMock(IManager::class);
|
||||||
|
|
||||||
|
@ -100,6 +104,7 @@ class AccessTest extends TestCase {
|
||||||
$this->ncUserManager
|
$this->ncUserManager
|
||||||
);
|
);
|
||||||
$this->access->setUserMapper($this->userMapper);
|
$this->access->setUserMapper($this->userMapper);
|
||||||
|
$this->access->setGroupMapper($this->groupMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getConnectorAndLdapMock() {
|
private function getConnectorAndLdapMock() {
|
||||||
|
@ -641,6 +646,45 @@ class AccessTest extends TestCase {
|
||||||
$this->assertSame($expected, $list);
|
$this->assertSame($expected, $list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testFetchListOfGroupsKnown() {
|
||||||
|
$filter = 'objectClass=nextcloudGroup';
|
||||||
|
$attributes = ['cn', 'gidNumber', 'dn'];
|
||||||
|
$base = 'ou=SomeGroups,dc=my,dc=directory';
|
||||||
|
|
||||||
|
$fakeConnection = ldap_connect();
|
||||||
|
$fakeSearchResultResource = ldap_connect();
|
||||||
|
$fakeLdapEntries = [
|
||||||
|
'count' => 2,
|
||||||
|
[
|
||||||
|
'dn' => 'cn=Good Team,' . $base,
|
||||||
|
'cn' => ['Good Team'],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'dn' => 'cn=Another Good Team,' . $base,
|
||||||
|
'cn' => ['Another Good Team'],
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->prepareMocksForSearchTests($base, $fakeConnection, $fakeSearchResultResource, $fakeLdapEntries);
|
||||||
|
|
||||||
|
$this->groupMapper->expects($this->any())
|
||||||
|
->method('getListOfIdsByDn')
|
||||||
|
->willReturn([
|
||||||
|
'cn=Good Team,' . $base => 'Good_Team',
|
||||||
|
'cn=Another Good Team,' . $base => 'Another_Good_Team',
|
||||||
|
]);
|
||||||
|
$this->groupMapper->expects($this->never())
|
||||||
|
->method('getNameByDN');
|
||||||
|
|
||||||
|
$this->connection->expects($this->exactly(2))
|
||||||
|
->method('writeToCache');
|
||||||
|
|
||||||
|
$groups = $this->access->fetchListOfGroups($filter, $attributes);
|
||||||
|
$this->assertSame(2, count($groups));
|
||||||
|
$this->assertSame('Good Team', $groups[0]['cn'][0]);
|
||||||
|
$this->assertSame('Another Good Team', $groups[1]['cn'][0]);
|
||||||
|
}
|
||||||
|
|
||||||
public function intUsernameProvider() {
|
public function intUsernameProvider() {
|
||||||
// system dependent :-/
|
// system dependent :-/
|
||||||
$translitExpected = @iconv('UTF-8', 'ASCII//TRANSLIT', 'fränk') ? 'frank' : 'frnk';
|
$translitExpected = @iconv('UTF-8', 'ASCII//TRANSLIT', 'fränk') ? 'frank' : 'frnk';
|
||||||
|
|
Loading…
Reference in New Issue