private function getNameOfGroup(string $filter, string $cacheKey) {
$result = $this->access->searchGroups($filter, ['dn'], 1);
if (empty($result)) {
+ $this->access->connection->writeToCache($cacheKey, false);
return null;
}
$dn = $result[0]['dn'][0];
* @throws ServerNotAvailableException
*/
public function primaryGroupID2Name(string $gid, string $dn) {
- $cacheKey = 'primaryGroupIDtoName';
- $groupNames = $this->access->connection->getFromCache($cacheKey);
- if (!is_null($groupNames) && isset($groupNames[$gid])) {
- return $groupNames[$gid];
+ $cacheKey = 'primaryGroupIDtoName_' . $gid;
+ $groupName = $this->access->connection->getFromCache($cacheKey);
+ if (!is_null($groupName)) {
+ return $groupName;
}
$domainObjectSid = $this->access->getSID($dn);
$this->assertSame(false, $gid);
}
+ public function testPrimaryGroupID2NameSuccessCache() {
+ $access = $this->getAccessMock();
+ $pluginManager = $this->getPluginManagerMock();
+
+ $this->enableGroups($access);
+
+ $userDN = 'cn=alice,cn=foo,dc=barfoo,dc=bar';
+ $gid = '3117';
+ $groupDN = 'cn=foo,dc=barfoo,dc=bar';
+
+ /** @var MockObject $connection */
+ $connection = $access->connection;
+ $connection->expects($this->once())
+ ->method('getFromCache')
+ ->with('primaryGroupIDtoName_' . $gid)
+ ->willReturn('MyGroup');
+
+ $access->expects($this->never())
+ ->method('getSID');
+
+ $access->expects($this->never())
+ ->method('searchGroups');
+
+ $access->expects($this->never())
+ ->method('dn2groupname');
+
+ $groupBackend = new GroupLDAP($access, $pluginManager);
+ $group = $groupBackend->primaryGroupID2Name($gid, $userDN);
+
+ $this->assertSame('MyGroup', $group);
+ }
+
public function testPrimaryGroupID2NameSuccess() {
$access = $this->getAccessMock();
$pluginManager = $this->getPluginManagerMock();