Browse Source

really use known groups

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
tags/v21.0.0RC1
Arthur Schiwon 3 years ago
parent
commit
02b703193a
No account linked to committer's email address
2 changed files with 45 additions and 1 deletions
  1. 1
    1
      apps/user_ldap/lib/Access.php
  2. 44
    0
      apps/user_ldap/tests/AccessTest.php

+ 1
- 1
apps/user_ldap/lib/Access.php View File

@@ -945,7 +945,7 @@ class Access extends LDAPUtility {

array_walk($groupRecords, function ($record) use ($idsByDn) {
$newlyMapped = false;
$gid = $uidsByDn[$record['dn'][0]] ?? null;
$gid = $idsByDn[$record['dn'][0]] ?? null;
if ($gid === null) {
$gid = $this->dn2ocname($record['dn'][0], null, false, $newlyMapped, $record);
}

+ 44
- 0
apps/user_ldap/tests/AccessTest.php View File

@@ -42,6 +42,7 @@ use OCA\User_LDAP\Helper;
use OCA\User_LDAP\ILDAPWrapper;
use OCA\User_LDAP\LDAP;
use OCA\User_LDAP\LogWrapper;
use OCA\User_LDAP\Mapping\GroupMapping;
use OCA\User_LDAP\Mapping\UserMapping;
use OCA\User_LDAP\User\Manager;
use OCA\User_LDAP\User\OfflineUser;
@@ -66,6 +67,8 @@ class AccessTest extends TestCase {
protected $userMapper;
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
protected $shareManager;
/** @var GroupMapping|\PHPUnit\Framework\MockObject\MockObject */
protected $groupMapper;
/** @var Connection|\PHPUnit\Framework\MockObject\MockObject */
private $connection;
/** @var LDAP|\PHPUnit\Framework\MockObject\MockObject */
@@ -88,6 +91,7 @@ class AccessTest extends TestCase {
$this->helper = $this->createMock(Helper::class);
$this->config = $this->createMock(IConfig::class);
$this->userMapper = $this->createMock(UserMapping::class);
$this->groupMapper = $this->createMock(GroupMapping::class);
$this->ncUserManager = $this->createMock(IUserManager::class);
$this->shareManager = $this->createMock(IManager::class);

@@ -100,6 +104,7 @@ class AccessTest extends TestCase {
$this->ncUserManager
);
$this->access->setUserMapper($this->userMapper);
$this->access->setGroupMapper($this->groupMapper);
}

private function getConnectorAndLdapMock() {
@@ -641,6 +646,45 @@ class AccessTest extends TestCase {
$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() {
// system dependent :-/
$translitExpected = @iconv('UTF-8', 'ASCII//TRANSLIT', 'fränk') ? 'frank' : 'frnk';

Loading…
Cancel
Save