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;
class AccessTest extends TestCase {
/** @var UserMapping|\PHPUnit\Framework\MockObject\MockObject */
protected $userMapper;
+ /** @var GroupMapping|\PHPUnit\Framework\MockObject\MockObject */
+ protected $groupMapper;
/** @var Connection|\PHPUnit\Framework\MockObject\MockObject */
private $connection;
/** @var LDAP|\PHPUnit\Framework\MockObject\MockObject */
$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->access = new Access(
$this->ncUserManager
);
$this->access->setUserMapper($this->userMapper);
+ $this->access->setGroupMapper($this->groupMapper);
}
private function getConnectorAndLdapMock() {
$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';