diff --git a/core/Migrations/Version20170927145820.php b/core/Migrations/Version20170927145820.php
new file mode 100644
index 000000000000..906abc89c363
--- /dev/null
+++ b/core/Migrations/Version20170927145820.php
@@ -0,0 +1,57 @@
+createTable("{$prefix}backend_groups");
+ $table->addColumn('id', Type::INTEGER, [
+ 'autoincrement' => true,
+ 'unsigned' => true,
+ 'notnull' => true,
+ ]);
+ $table->addColumn('group_id', Type::STRING, [
+ 'notnull' => true,
+ 'length' => 255,
+ ]);
+ $table->addColumn('display_name', Type::STRING, [
+ 'notnull' => false,
+ 'length' => 255,
+ ]);
+ $table->addColumn('backend', Type::STRING, [
+ 'notnull' => true,
+ 'length' => 64,
+ ]);
+ $table->setPrimaryKey(['id']);
+
+ // Group Memberships Table
+ $table = $schema->createTable("{$prefix}memberships");
+ $table->addColumn('backend_group_id', Type::INTEGER, [
+ 'notnull' => true,
+ 'unsigned' => true,
+ ]);
+ $table->addColumn('account_id', Type::BIGINT, [
+ 'notnull' => true,
+ 'unsigned' => true,
+ ]);
+ $table->addColumn('membership_type', Type::SMALLINT, [
+ 'notnull' => true,
+ 'comment' => '0: GroupUser, 1: GroupAdmin'
+ ]);
+
+ // This set of values has to be unique
+ $table->addUniqueIndex(['backend_group_id', 'account_id', 'membership_type'], 'group_account_membership_index');
+
+ //TODO: Do it later since it requires changes here for Oracle https://github.com/owncloud/core/blob/master/lib/private/DB/OracleMigrator.php#L158-L160
+ // Add foreign keys on backend_group and accounts tables
+ //$table->addForeignKeyConstraint("{$prefix}backend_groups",array('backend_group_id'), array('id'));
+ //$table->addForeignKeyConstraint("{$prefix}accounts", array('account_id'), array('id'));
+ }
+}
diff --git a/lib/private/Group/BackendGroup.php b/lib/private/Group/BackendGroup.php
new file mode 100644
index 000000000000..2f3748a6c547
--- /dev/null
+++ b/lib/private/Group/BackendGroup.php
@@ -0,0 +1,62 @@
+
+ *
+ * @copyright Copyright (c) 2017, ownCloud GmbH
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see
+ *
+ */
+
+namespace OC\Group;
+
+use OCP\AppFramework\Db\Entity;
+use OCP\GroupInterface;
+
+/**
+ * Class BackendGroup
+ *
+ * @method int getGroupId()
+ * @method string getDisplayName()
+ * @method void setDisplayName(string $displayName)
+ * @method string getBackend()
+ * @method void setBackend(string $backEnd)
+ *
+ * @package OC\Group
+ */
+class BackendGroup extends Entity {
+
+ protected $groupId;
+ protected $displayName;
+ protected $backend;
+
+ public function __construct() { }
+
+ public function setGroupId($gid) {
+ parent::setter('groupId', [$gid]);
+ }
+
+ /**
+ * @return GroupInterface
+ */
+ public function getBackendInstance() {
+ $backendClass = $this->getBackend();
+ if (empty($backendClass)) {
+ return null;
+ }
+
+ return \OC::$server->getGroupManager()->getBackend($backendClass);
+ }
+
+}
\ No newline at end of file
diff --git a/lib/private/Group/GroupMapper.php b/lib/private/Group/GroupMapper.php
new file mode 100644
index 000000000000..931a89ce1368
--- /dev/null
+++ b/lib/private/Group/GroupMapper.php
@@ -0,0 +1,75 @@
+
+ *
+ * @copyright Copyright (c) 2017, ownCloud GmbH
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see
+ *
+ */
+
+namespace OC\Group;
+
+use OC\Group\BackendGroup;
+use OCP\AppFramework\Db\Mapper;
+use OCP\AppFramework\Db\Entity;
+use OCP\IConfig;
+use OCP\IDBConnection;
+
+class GroupMapper extends Mapper {
+
+ public function __construct(IDBConnection $db) {
+ parent::__construct($db, 'backend_groups', BackendGroup::class);
+ }
+
+ /**
+ * @param BackendGroup $entity
+ * @return Entity the saved entity with the set id
+ */
+ public function insert(Entity $entity) {
+ // run the normal entity insert operation to get an id
+ return parent::insert($entity);
+ }
+
+ /**
+ * @param string $uid
+ * @return BackendGroup
+ */
+ public function getGroup($gid) {
+ $qb = $this->db->getQueryBuilder();
+ $qb->select('*')
+ ->from($this->getTableName())
+ ->where($qb->expr()->eq('group_id', $qb->createNamedParameter($gid)));
+
+ return $this->findEntity($qb->getSQL(), $qb->getParameters());
+ }
+
+ /**
+ * @param string $fieldName
+ * @param string $pattern
+ * @param integer $limit
+ * @param integer $offset
+ * @return BackendGroup[]
+ */
+ public function search($fieldName, $pattern, $limit, $offset) {
+ $qb = $this->db->getQueryBuilder();
+ $qb->select('*')
+ ->from($this->getTableName())
+ ->where($qb->expr()->iLike($fieldName, $qb->createNamedParameter('%' . $this->db->escapeLikeParameter($pattern) . '%')))
+ ->orderBy($fieldName);
+
+ return $this->findEntities($qb->getSQL(), $qb->getParameters(), $limit, $offset);
+ }
+
+}
diff --git a/lib/private/Group/Manager.php b/lib/private/Group/Manager.php
index 4b90edb58ce2..7d626001aac7 100644
--- a/lib/private/Group/Manager.php
+++ b/lib/private/Group/Manager.php
@@ -15,6 +15,7 @@
* @author Thomas Müller
* @author Vincent Petry
* @author voxsim
+ * @authod Piotr Mrowczynski
*
* @copyright Copyright (c) 2017, ownCloud GmbH
* @license AGPL-3.0
@@ -38,6 +39,8 @@
use OC\Hooks\PublicEmitter;
use OCP\GroupInterface;
use OCP\IGroupManager;
+use OC\Group\GroupMapper;
+use OC\Group\Database;
/**
* Class Manager
@@ -55,34 +58,30 @@
* @package OC\Group
*/
class Manager extends PublicEmitter implements IGroupManager {
- /**
- * @var GroupInterface[] $backends
- */
+ /** @var GroupInterface[] $backends */
private $backends = [];
- /**
- * @var \OC\User\Manager $userManager
- */
+ /** @var \OC\User\Manager $userManager */
private $userManager;
- /**
- * @var \OC\Group\Group[]
- */
+ /** @var \OC\Group\Group[] */
private $cachedGroups = [];
- /**
- * @var \OC\Group\Group[]
- */
+ /** @var \OC\Group\Group[] */
private $cachedUserGroups = [];
/** @var \OC\SubAdmin */
private $subAdmin = null;
+ /** @var \OC\Group\GroupMapper */
+ private $groupMapper;
+
/**
* @param \OC\User\Manager $userManager
*/
- public function __construct(\OC\User\Manager $userManager) {
+ public function __construct(\OC\User\Manager $userManager, \OC\Group\GroupMapper $groupMapper) {
$this->userManager = $userManager;
+ $this->groupMapper = $groupMapper;
$cachedGroups = & $this->cachedGroups;
$cachedUserGroups = & $this->cachedUserGroups;
$this->listen('\OC\Group', 'postDelete', function ($group) use (&$cachedGroups, &$cachedUserGroups) {
@@ -136,7 +135,7 @@ public function clearBackends() {
$this->backends = [];
$this->clearCaches();
}
-
+
protected function clearCaches() {
$this->cachedGroups = [];
$this->cachedUserGroups = [];
@@ -212,6 +211,21 @@ public function createGroup($gid) {
}
}
+
+ /**
+ * @param string $gid
+ * @param string $backendClass
+ * @return BackendGroup|\OCP\AppFramework\Db\Entity
+ */
+ private function createBackendGroup($gid, $backendClass) {
+ $account = new BackendGroup();
+ $account->setGroupId($gid);
+ $account->setDisplayName($gid);
+ $account->setBackend($backendClass);
+ $account = $this->groupMapper->insert($account);
+ return $account;
+ }
+
/**
* @param string $search search string
* @param int|null $limit limit
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 59fa05491c4e..4324fdbd97f8 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -87,6 +87,7 @@
use OC\Theme\ThemeService;
use OC\User\AccountMapper;
use OC\User\AccountTermMapper;
+use OC\Group\GroupMapper;
use OCP\IL10N;
use OCP\ILogger;
use OCP\IServerContainer;
@@ -232,13 +233,16 @@ public function __construct($webRoot, \OC\Config $config) {
$this->registerService('AccountMapper', function(Server $c) {
return new AccountMapper($c->getConfig(), $c->getDatabaseConnection(), new AccountTermMapper($c->getDatabaseConnection()));
});
+ $this->registerService('GroupMapper', function(Server $c) {
+ return new GroupMapper($c->getDatabaseConnection());
+ });
$this->registerService('UserManager', function (Server $c) {
$config = $c->getConfig();
$logger = $c->getLogger();
return new \OC\User\Manager($config, $logger, $c->getAccountMapper());
});
$this->registerService('GroupManager', function (Server $c) {
- $groupManager = new \OC\Group\Manager($this->getUserManager());
+ $groupManager = new \OC\Group\Manager($this->getUserManager(), $c->getGroupMapper());
$groupManager->listen('\OC\Group', 'preCreate', function ($gid) {
\OC_Hook::emit('OC_Group', 'pre_createGroup', ['run' => true, 'gid' => $gid]);
});
@@ -975,6 +979,13 @@ public function getAccountMapper() {
return $this->query('AccountMapper');
}
+ /**
+ * @return \OC\Group\GroupMapper
+ */
+ public function getGroupMapper() {
+ return $this->query('GroupMapper');
+ }
+
/**
* @return \OC\Group\Manager
*/
diff --git a/tests/lib/Group/GroupMapperTest.php b/tests/lib/Group/GroupMapperTest.php
new file mode 100644
index 000000000000..49d3cbd55af9
--- /dev/null
+++ b/tests/lib/Group/GroupMapperTest.php
@@ -0,0 +1,151 @@
+
+ *
+ * @copyright Copyright (c) 2017, ownCloud GmbH
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see
+ *
+ */
+
+namespace Test\Group;
+
+use OC\Group\BackendGroup;
+use OC\Group\GroupMapper;
+use OCP\IConfig;
+use OCP\IDBConnection;
+use Test\TestCase;
+use OCP\AppFramework\Db\DoesNotExistException;
+
+/**
+ * Class GroupMapperTest
+ *
+ * @group DB
+ *
+ * @package Test\User
+ */
+class GroupMapperTest extends TestCase {
+
+ /** @var IConfig | \PHPUnit_Framework_MockObject_MockObject */
+ protected $config;
+
+ /** @var IDBConnection */
+ protected $connection;
+
+ /** @var GroupMapper */
+ protected $mapper;
+
+ public static function setUpBeforeClass() {
+ parent::setUpBeforeClass();
+ $mapper = \OC::$server->getGroupMapper();
+
+ \OC::$server->getDatabaseConnection()->beginTransaction();
+
+ // create test users
+ for ($i = 1; $i <= 4; $i++) {
+
+
+ try {
+ $backendGroup = $mapper->getGroup("TestFind$i");
+ $mapper->delete($backendGroup);
+ } catch (DoesNotExistException $ex) {
+ }
+
+ $backendGroup = new BackendGroup();
+ $backendGroup->setGroupId("TestFind$i");
+ $backendGroup->setDisplayName("TestFind$i");
+ $backendGroup->setBackend(self::class);
+
+ $mapper->insert($backendGroup);
+ }
+ }
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->config = $this->createMock(IConfig::class);
+
+ $this->connection = \OC::$server->getDatabaseConnection();
+
+ $this->mapper = new GroupMapper(
+ $this->connection
+ );
+ }
+
+ public static function tearDownAfterClass () {
+ \OC::$server->getDatabaseConnection()->rollBack();
+ parent::tearDownAfterClass();
+ }
+
+ /**
+ * find one record without lowercase
+ */
+ public function testGet() {
+ $result = $this->mapper->getGroup("TestFind1");
+ $this->assertInstanceOf("OC\Group\BackendGroup", $result);
+ }
+
+ /**
+ * find one record without lowercase
+ */
+ public function testInsert() {
+ $backendGroup = new BackendGroup();
+ $backendGroup->setGroupId("TestFind5");
+ $backendGroup->setDisplayName("TestFind5");
+ $backendGroup->setBackend(self::class);
+
+ $mapper = \OC::$server->getGroupMapper();
+ $mapper->insert($backendGroup);
+ $result = $this->mapper->getGroup("TestFind5");
+ $this->assertInstanceOf("OC\Group\BackendGroup", $result);
+ }
+
+ /**
+ * find nothing because of lower case
+ *
+ * @expectedException \OCP\AppFramework\Db\DoesNotExistException
+ */
+ public function testGetNone() {
+ $this->mapper->getGroup("testfind1");
+ }
+
+
+ /**
+ * find all, use lower case
+ */
+ public function testFindAll() {
+ $result = $this->mapper->search('group_id',"testfind", null, null);
+ $this->assertEquals(5, count($result));
+ }
+
+
+ /**
+ * find by userid, use lower case
+ */
+ public function testFindByGroupId() {
+ $result = $this->mapper->search('group_id',"testfind1", null, null);
+ $this->assertEquals(1, count($result));
+ $this->assertEquals("TestFind1", array_shift($result)->getGroupId());
+ }
+
+ /**
+ * find with limit and offset, use lower case
+ */
+ public function testFindLimitAndOffset() {
+ $result = $this->mapper->search('group_id','Test', 2, 2);
+ $this->assertEquals(2, count($result));
+ $this->assertEquals("TestFind3", array_shift($result)->getGroupId());
+ $this->assertEquals("TestFind4", array_shift($result)->getGroupId());
+ }
+}
\ No newline at end of file
diff --git a/tests/lib/Group/ManagerTest.php b/tests/lib/Group/ManagerTest.php
index c49e6f501df4..beb77a2c1592 100644
--- a/tests/lib/Group/ManagerTest.php
+++ b/tests/lib/Group/ManagerTest.php
@@ -23,6 +23,7 @@
namespace Test\Group;
use OC\Group\Database;
+use OC\Group\GroupMapper;
use OC\User\Manager;
use OCP\IUser;
use OCP\GroupInterface;
@@ -97,7 +98,11 @@ public function testGet() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$group = $manager->get('group1');
@@ -110,7 +115,11 @@ public function testGetNoBackend() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$this->assertNull($manager->get('group1'));
}
@@ -129,7 +138,11 @@ public function testGetNotExists() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$this->assertNull($manager->get('group1'));
@@ -143,7 +156,11 @@ public function testGetDeleted() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$group = $manager->get('group1');
@@ -174,7 +191,11 @@ public function testGetMultipleBackends() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend1);
$manager->addBackend($backend2);
@@ -205,7 +226,11 @@ public function testCreate() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$group = $manager->createGroup('group1');
@@ -228,7 +253,11 @@ public function testCreateExists() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$group = $manager->createGroup('group1');
@@ -253,7 +282,11 @@ public function testSearch() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$groups = $manager->search('1');
@@ -291,7 +324,11 @@ public function testSearchMultipleBackends() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend1);
$manager->addBackend($backend2);
@@ -332,7 +369,11 @@ public function testSearchMultipleBackendsLimitAndOffset() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend1);
$manager->addBackend($backend2);
@@ -365,8 +406,11 @@ public function testSearchResultExistsButGroupDoesNot() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
-
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$groups = $manager->search('1');
@@ -405,7 +449,11 @@ public function testSearchBackendsForScope() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend1);
$manager->addBackend($backend2);
@@ -443,7 +491,11 @@ public function testGetUserGroups() {
*/
$userManager = $this->createMock(Manager::class);
$userBackend = $this->createMock(\OC_User_Backend::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$groups = $manager->getUserGroups($this->getTestUser('user1'));
@@ -497,7 +549,11 @@ public function testGetUserGroupsWithDeletedGroup() {
*/
$userManager = $this->createMock(Manager::class);
$userBackend = $this->createMock(\OC_User_Backend::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
/** @var \OC\User\User $user */
@@ -530,7 +586,11 @@ public function testGetUserGroupsWithScope() {
*/
$userManager = $this->createMock(Manager::class);
$userBackend = $this->createMock(\OC_User_Backend::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$groups = $manager->getUserGroups($this->getTestUser('user1'));
@@ -560,7 +620,11 @@ public function testInGroup() {
*/
$userManager = $this->createMock(Manager::class);
$userBackend = $this->createMock(\OC_User_Backend::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$this->assertTrue($manager->isInGroup('user1', 'group1'));
@@ -584,7 +648,11 @@ public function testIsAdmin() {
*/
$userManager = $this->createMock(Manager::class);
$userBackend = $this->createMock(\OC_User_Backend::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$this->assertTrue($manager->isAdmin('user1'));
@@ -608,7 +676,11 @@ public function testNotAdmin() {
*/
$userManager = $this->createMock(Manager::class);
$userBackend = $this->createMock(\OC_User_Backend::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$this->assertFalse($manager->isAdmin('user1'));
@@ -644,7 +716,11 @@ public function testGetUserGroupsMultipleBackends() {
*/
$userManager = $this->createMock(Manager::class);
$userBackend = $this->createMock(\OC_User_Backend::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend1);
$manager->addBackend($backend2);
@@ -709,7 +785,11 @@ public function testDisplayNamesInGroupWithOneUserBackend() {
}
}));
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$users = $manager->displayNamesInGroup('testgroup', 'user3');
@@ -775,7 +855,11 @@ public function testDisplayNamesInGroupWithOneUserBackendWithLimitSpecified() {
}
}));
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);;
$manager->addBackend($backend);
$users = $manager->displayNamesInGroup('testgroup', 'user3', 1);
@@ -845,7 +929,11 @@ public function testDisplayNamesInGroupWithOneUserBackendWithLimitAndOffsetSpeci
}
}));
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$users = $manager->displayNamesInGroup('testgroup', 'user3', 1, 1);
@@ -891,7 +979,11 @@ public function testDisplayNamesInGroupWithOneUserBackendAndSearchEmpty() {
}
}));
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$users = $manager->displayNamesInGroup('testgroup', '');
@@ -935,7 +1027,11 @@ public function testDisplayNamesInGroupWithOneUserBackendAndSearchEmptyAndLimitS
}
}));
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$users = $manager->displayNamesInGroup('testgroup', '', 1);
@@ -980,7 +1076,11 @@ public function testDisplayNamesInGroupWithOneUserBackendAndSearchEmptyAndLimitA
}
}));
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$users = $manager->displayNamesInGroup('testgroup', '', 1, 1);
@@ -1012,7 +1112,11 @@ public function testGetUserGroupsWithAddUser() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
// prime cache
@@ -1059,7 +1163,11 @@ public function testGetUserGroupsWithRemoveUser() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
// prime cache
@@ -1093,7 +1201,11 @@ public function testGetUserIdGroups() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$groups = $manager->getUserIdGroups('user1');
@@ -1123,7 +1235,11 @@ public function testGroupDisplayName() {
* @var \OC\User\Manager $userManager
*/
$userManager = $this->createMock(Manager::class);
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
// group with display name
@@ -1192,7 +1308,11 @@ public function testFindUsersInGroupWithOneUserBackend() {
}
}));
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$users = $manager->findUsersInGroup('testgroup', 'user3');
@@ -1258,7 +1378,11 @@ public function testFindUsersInGroupWithOneUserBackendWithLimitSpecified() {
}
}));
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$users = $manager->findUsersInGroup('testgroup', 'user3', 1);
@@ -1328,7 +1452,11 @@ public function testFindUsersInGroupWithOneUserBackendWithLimitAndOffsetSpecifie
}
}));
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$users = $manager->findUsersInGroup('testgroup', 'user3', 1, 1);
@@ -1374,7 +1502,11 @@ public function testFindUsersInGroupWithOneUserBackendAndSearchEmpty() {
}
}));
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$users = $manager->findUsersInGroup('testgroup', '');
@@ -1418,7 +1550,11 @@ public function testFindUsersInGroupWithOneUserBackendAndSearchEmptyAndLimitSpec
}
}));
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$users = $manager->findUsersInGroup('testgroup', '', 1);
@@ -1463,7 +1599,11 @@ public function testFindUsersInGroupWithOneUserBackendAndSearchEmptyAndLimitAndO
}
}));
- $manager = new \OC\Group\Manager($userManager);
+ /**
+ * @var \OC\Group\GroupMapper $groupMapper
+ */
+ $groupMapper = $this->createMock(GroupMapper::class);
+ $manager = new \OC\Group\Manager($userManager, $groupMapper);
$manager->addBackend($backend);
$users = $manager->findUsersInGroup('testgroup', '', 1, 1);
diff --git a/version.php b/version.php
index 9b5ae3eccc36..f10e49539b97 100644
--- a/version.php
+++ b/version.php
@@ -25,10 +25,10 @@
// We only can count up. The 4. digit is only for the internal patchlevel to trigger DB upgrades
// between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel
// when updating major/minor version number.
-$OC_Version = [10, 0, 3, 3];
+$OC_Version = [10, 0, 4, 0];
// The human readable string
-$OC_VersionString = '10.0.3';
+$OC_VersionString = '10.0.4';
$OC_VersionCanBeUpgradedFrom = [[8, 2, 11],[9, 0, 9],[9, 1]];