Merge pull request #1888 from nextcloud/downstream-26361
introduce callForSeenUsers and countSeenUsers
This commit is contained in:
commit
f2cae3cee1
|
@ -77,9 +77,9 @@ class ExpireTrash extends \OC\BackgroundJob\TimedJob {
|
|||
return;
|
||||
}
|
||||
|
||||
$this->userManager->callForAllUsers(function(IUser $user) {
|
||||
$this->userManager->callForSeenUsers(function(IUser $user) {
|
||||
$uid = $user->getUID();
|
||||
if ($user->getLastLogin() === 0 || !$this->setupFS($uid)) {
|
||||
if (!$this->setupFS($uid)) {
|
||||
return;
|
||||
}
|
||||
$dirContent = Helper::getTrashFiles('/', $uid, 'mtime');
|
||||
|
|
|
@ -89,7 +89,7 @@ class ExpireTrash extends Command {
|
|||
} else {
|
||||
$p = new ProgressBar($output);
|
||||
$p->start();
|
||||
$this->userManager->callForAllUsers(function(IUser $user) use ($p) {
|
||||
$this->userManager->callForSeenUsers(function(IUser $user) use ($p) {
|
||||
$p->advance();
|
||||
$this->expireTrashForUser($user);
|
||||
});
|
||||
|
@ -100,7 +100,7 @@ class ExpireTrash extends Command {
|
|||
|
||||
function expireTrashForUser(IUser $user) {
|
||||
$uid = $user->getUID();
|
||||
if ($user->getLastLogin() === 0 || !$this->setupFS($uid)) {
|
||||
if (!$this->setupFS($uid)) {
|
||||
return;
|
||||
}
|
||||
$dirContent = Helper::getTrashFiles('/', $uid, 'mtime');
|
||||
|
|
|
@ -67,9 +67,9 @@ class ExpireVersions extends \OC\BackgroundJob\TimedJob {
|
|||
return;
|
||||
}
|
||||
|
||||
$this->userManager->callForAllUsers(function(IUser $user) {
|
||||
$this->userManager->callForSeenUsers(function(IUser $user) {
|
||||
$uid = $user->getUID();
|
||||
if ($user->getLastLogin() === 0 || !$this->setupFS($uid)) {
|
||||
if (!$this->setupFS($uid)) {
|
||||
return;
|
||||
}
|
||||
Storage::expireOlderThanMaxForUser($uid);
|
||||
|
|
|
@ -88,7 +88,7 @@ class ExpireVersions extends Command {
|
|||
} else {
|
||||
$p = new ProgressBar($output);
|
||||
$p->start();
|
||||
$this->userManager->callForAllUsers(function(IUser $user) use ($p) {
|
||||
$this->userManager->callForSeenUsers(function(IUser $user) use ($p) {
|
||||
$p->advance();
|
||||
$this->expireVersionsForUser($user);
|
||||
});
|
||||
|
@ -99,7 +99,7 @@ class ExpireVersions extends Command {
|
|||
|
||||
function expireVersionsForUser(IUser $user) {
|
||||
$uid = $user->getUID();
|
||||
if ($user->getLastLogin() === 0 || !$this->setupFS($uid)) {
|
||||
if (!$this->setupFS($uid)) {
|
||||
return;
|
||||
}
|
||||
Storage::expireOlderThanMaxForUser($uid);
|
||||
|
|
|
@ -64,8 +64,7 @@ class MoveAvatarsBackgroundJob extends QueuedJob {
|
|||
|
||||
private function moveAvatars() {
|
||||
$counter = 0;
|
||||
$this->userManager->callForAllUsers(function (IUser $user) use ($counter) {
|
||||
if ($user->getLastLogin() !== 0) {
|
||||
$this->userManager->callForSeenUsers(function (IUser $user) use ($counter) {
|
||||
$uid = $user->getUID();
|
||||
|
||||
\OC\Files\Filesystem::initMountPoints($uid);
|
||||
|
@ -94,7 +93,6 @@ class MoveAvatarsBackgroundJob extends QueuedJob {
|
|||
$avatar->delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
$counter++;
|
||||
if ($counter % 100) {
|
||||
$this->logger->info('{amount} avatars migrated', ['amount' => $counter]);
|
||||
|
|
|
@ -96,30 +96,13 @@ class RemoveRootShares implements IRepairStep {
|
|||
$output->advance();
|
||||
};
|
||||
|
||||
$userCount = $this->countUsers();
|
||||
$output->startProgress($userCount);
|
||||
$output->startProgress($this->userManager->countSeenUsers());
|
||||
|
||||
$this->userManager->callForAllUsers($function);
|
||||
$this->userManager->callForSeenUsers($function);
|
||||
|
||||
$output->finishProgress();
|
||||
}
|
||||
|
||||
/**
|
||||
* Count all the users
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
private function countUsers() {
|
||||
$allCount = $this->userManager->countUsers();
|
||||
|
||||
$totalCount = 0;
|
||||
foreach ($allCount as $backend => $count) {
|
||||
$totalCount += $count;
|
||||
}
|
||||
|
||||
return $totalCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify if this repair steps is required
|
||||
* It *should* not be necessary in most cases and it can be very
|
||||
|
|
|
@ -335,22 +335,6 @@ class RepairUnmergedShares implements IRepairStep {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Count all the users
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
private function countUsers() {
|
||||
$allCount = $this->userManager->countUsers();
|
||||
|
||||
$totalCount = 0;
|
||||
foreach ($allCount as $backend => $count) {
|
||||
$totalCount += $count;
|
||||
}
|
||||
|
||||
return $totalCount;
|
||||
}
|
||||
|
||||
public function run(IOutput $output) {
|
||||
$ocVersionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0');
|
||||
if (version_compare($ocVersionFromBeforeUpdate, '9.1.0.16', '<')) {
|
||||
|
@ -363,8 +347,7 @@ class RepairUnmergedShares implements IRepairStep {
|
|||
|
||||
$this->buildPreparedQueries();
|
||||
|
||||
$userCount = $this->countUsers();
|
||||
$output->startProgress($userCount);
|
||||
$output->startProgress($this->userManager->countUsers());
|
||||
|
||||
$this->userManager->callForAllUsers($function);
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ class Manager extends PublicEmitter implements IUserManager {
|
|||
/**
|
||||
* @param \OCP\IConfig $config
|
||||
*/
|
||||
public function __construct(IConfig $config = null) {
|
||||
public function __construct(IConfig $config) {
|
||||
$this->config = $config;
|
||||
$cachedUsers = &$this->cachedUsers;
|
||||
$this->listen('\OC\User', 'postDelete', function ($user) use (&$cachedUsers) {
|
||||
|
@ -314,10 +314,16 @@ class Manager extends PublicEmitter implements IUserManager {
|
|||
/**
|
||||
* returns how many users per backend exist (if supported by backend)
|
||||
*
|
||||
* @return array an array of backend class as key and count number as value
|
||||
* @param boolean $hasLoggedIn when true only users that have a lastLogin
|
||||
* entry in the preferences table will be affected
|
||||
* @return array|int an array of backend class as key and count number as value
|
||||
* if $hasLoggedIn is true only an int is returned
|
||||
*/
|
||||
public function countUsers() {
|
||||
$userCountStatistics = array();
|
||||
public function countUsers($hasLoggedIn = false) {
|
||||
if ($hasLoggedIn) {
|
||||
return $this->countSeenUsers();
|
||||
}
|
||||
$userCountStatistics = [];
|
||||
foreach ($this->backends as $backend) {
|
||||
if ($backend->implementsActions(Backend::COUNT_USERS)) {
|
||||
$backendUsers = $backend->countUsers();
|
||||
|
@ -344,9 +350,14 @@ class Manager extends PublicEmitter implements IUserManager {
|
|||
*
|
||||
* @param \Closure $callback
|
||||
* @param string $search
|
||||
* @param boolean $onlySeen when true only users that have a lastLogin entry
|
||||
* in the preferences table will be affected
|
||||
* @since 9.0.0
|
||||
*/
|
||||
public function callForAllUsers(\Closure $callback, $search = '') {
|
||||
public function callForAllUsers(\Closure $callback, $search = '', $onlySeen = false) {
|
||||
if ($onlySeen) {
|
||||
$this->callForSeenUsers($callback);
|
||||
} else {
|
||||
foreach ($this->getBackends() as $backend) {
|
||||
$limit = 500;
|
||||
$offset = 0;
|
||||
|
@ -366,6 +377,93 @@ class Manager extends PublicEmitter implements IUserManager {
|
|||
} while (count($users) >= $limit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* returns how many users have logged in once
|
||||
*
|
||||
* @return int
|
||||
* @since 9.2.0
|
||||
*/
|
||||
public function countSeenUsers() {
|
||||
$queryBuilder = \OC::$server->getDatabaseConnection()->getQueryBuilder();
|
||||
$queryBuilder->select($queryBuilder->createFunction('COUNT(*)'))
|
||||
->from('preferences')
|
||||
->where($queryBuilder->expr()->eq('appid', $queryBuilder->createNamedParameter('login')))
|
||||
->andWhere($queryBuilder->expr()->eq('configkey', $queryBuilder->createNamedParameter('lastLogin')))
|
||||
->andWhere($queryBuilder->expr()->isNotNull('configvalue'));
|
||||
|
||||
$query = $queryBuilder->execute();
|
||||
|
||||
$result = (int)$query->fetchColumn();
|
||||
$query->closeCursor();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Closure $callback
|
||||
* @since 9.2.0
|
||||
*/
|
||||
public function callForSeenUsers(\Closure $callback) {
|
||||
$limit = 1000;
|
||||
$offset = 0;
|
||||
do {
|
||||
$userIds = $this->getSeenUserIds($limit, $offset);
|
||||
$offset += $limit;
|
||||
foreach ($userIds as $userId) {
|
||||
foreach ($this->backends as $backend) {
|
||||
if ($backend->userExists($userId)) {
|
||||
$user = $this->getUserObject($userId, $backend, false);
|
||||
$return = $callback($user);
|
||||
if ($return === false) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (count($userIds) >= $limit);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getting all userIds that have a listLogin value requires checking the
|
||||
* value in php because on oracle you cannot use a clob in a where clause,
|
||||
* preventing us from doing a not null or length(value) > 0 check.
|
||||
*
|
||||
* @param int $limit
|
||||
* @param int $offset
|
||||
* @return string[] with user ids
|
||||
*/
|
||||
private function getSeenUserIds($limit = null, $offset = null) {
|
||||
$queryBuilder = \OC::$server->getDatabaseConnection()->getQueryBuilder();
|
||||
$queryBuilder->select(['userid'])
|
||||
->from('preferences')
|
||||
->where($queryBuilder->expr()->eq(
|
||||
'appid', $queryBuilder->createNamedParameter('login'))
|
||||
)
|
||||
->andWhere($queryBuilder->expr()->eq(
|
||||
'configkey', $queryBuilder->createNamedParameter('lastLogin'))
|
||||
)
|
||||
->andWhere($queryBuilder->expr()->isNotNull('configvalue')
|
||||
);
|
||||
|
||||
if ($limit !== null) {
|
||||
$queryBuilder->setMaxResults($limit);
|
||||
}
|
||||
if ($offset !== null) {
|
||||
$queryBuilder->setFirstResult($offset);
|
||||
}
|
||||
$query = $queryBuilder->execute();
|
||||
$result = [];
|
||||
|
||||
while ($row = $query->fetch()) {
|
||||
$result[] = $row['userid'];
|
||||
}
|
||||
|
||||
$query->closeCursor();
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $email
|
||||
|
|
|
@ -144,6 +144,20 @@ interface IUserManager {
|
|||
*/
|
||||
public function callForAllUsers(\Closure $callback, $search = '');
|
||||
|
||||
/**
|
||||
* returns how many users have logged in once
|
||||
*
|
||||
* @return int
|
||||
* @since 9.2.0
|
||||
*/
|
||||
public function countSeenUsers();
|
||||
|
||||
/**
|
||||
* @param \Closure $callback
|
||||
* @since 9.2.0
|
||||
*/
|
||||
public function callForSeenUsers(\Closure $callback);
|
||||
|
||||
/**
|
||||
* @param string $email
|
||||
* @return IUser[]
|
||||
|
|
|
@ -13,6 +13,7 @@ use OC\Files\Mount\MountPoint;
|
|||
use OC\Log;
|
||||
use OC\User\Manager;
|
||||
use OCP\Files\Config\ICachedMountInfo;
|
||||
use OCP\IConfig;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\IUserManager;
|
||||
use Test\TestCase;
|
||||
|
@ -42,7 +43,7 @@ class UserMountCacheTest extends TestCase {
|
|||
public function setUp() {
|
||||
$this->fileIds = [];
|
||||
$this->connection = \OC::$server->getDatabaseConnection();
|
||||
$this->userManager = new Manager(null);
|
||||
$this->userManager = new Manager($this->createMock(IConfig::class));
|
||||
$userBackend = new Dummy();
|
||||
$userBackend->createUser('u1', '');
|
||||
$userBackend->createUser('u2', '');
|
||||
|
|
|
@ -121,7 +121,7 @@ class EncryptionTest extends Storage {
|
|||
|
||||
$this->util = $this->getMockBuilder('\OC\Encryption\Util')
|
||||
->setMethods(['getUidAndFilename', 'isFile', 'isExcluded'])
|
||||
->setConstructorArgs([new View(), new Manager(), $this->groupManager, $this->config, $this->arrayCache])
|
||||
->setConstructorArgs([new View(), new Manager($this->config), $this->groupManager, $this->config, $this->arrayCache])
|
||||
->getMock();
|
||||
$this->util->expects($this->any())
|
||||
->method('getUidAndFilename')
|
||||
|
@ -547,7 +547,7 @@ class EncryptionTest extends Storage {
|
|||
->setConstructorArgs(
|
||||
[
|
||||
new View(),
|
||||
new Manager(),
|
||||
new Manager($this->config),
|
||||
$this->groupManager,
|
||||
$this->config,
|
||||
$this->arrayCache
|
||||
|
@ -612,7 +612,7 @@ class EncryptionTest extends Storage {
|
|||
->disableOriginalConstructor()->getMock();
|
||||
|
||||
$util = $this->getMockBuilder('\OC\Encryption\Util')
|
||||
->setConstructorArgs([new View(), new Manager(), $this->groupManager, $this->config, $this->arrayCache])
|
||||
->setConstructorArgs([new View(), new Manager($this->config), $this->groupManager, $this->config, $this->arrayCache])
|
||||
->getMock();
|
||||
|
||||
$cache = $this->getMockBuilder('\OC\Files\Cache\Cache')
|
||||
|
|
|
@ -43,7 +43,7 @@ class EncryptionTest extends \Test\TestCase {
|
|||
$file->expects($this->any())->method('getAccessList')->willReturn([]);
|
||||
$util = $this->getMockBuilder('\OC\Encryption\Util')
|
||||
->setMethods(['getUidAndFilename'])
|
||||
->setConstructorArgs([new View(), new \OC\User\Manager(), $groupManager, $config, $arrayCache])
|
||||
->setConstructorArgs([new View(), new \OC\User\Manager($config), $groupManager, $config, $arrayCache])
|
||||
->getMock();
|
||||
$util->expects($this->any())
|
||||
->method('getUidAndFilename')
|
||||
|
|
|
@ -106,6 +106,7 @@ class RemoveRootSharesTest extends \Test\TestCase {
|
|||
$user = $this->userManager->createUser('test', 'test');
|
||||
$userFolder = $this->rootFolder->getUserFolder('test');
|
||||
$fileId = $userFolder->getId();
|
||||
$user->updateLastLoginTimestamp();
|
||||
|
||||
//Now insert cyclic share
|
||||
$qb = $this->connection->getQueryBuilder();
|
||||
|
@ -134,6 +135,7 @@ class RemoveRootSharesTest extends \Test\TestCase {
|
|||
$user1 = $this->userManager->createUser('test1', 'test1');
|
||||
$userFolder = $this->rootFolder->getUserFolder('test1');
|
||||
$fileId = $userFolder->getId();
|
||||
$user1->updateLastLoginTimestamp();
|
||||
|
||||
//Now insert cyclic share
|
||||
$qb = $this->connection->getQueryBuilder();
|
||||
|
@ -156,6 +158,7 @@ class RemoveRootSharesTest extends \Test\TestCase {
|
|||
$userFolder = $this->rootFolder->getUserFolder('test2');
|
||||
$folder = $userFolder->newFolder('foo');
|
||||
$fileId = $folder->getId();
|
||||
$user2->updateLastLoginTimestamp();
|
||||
|
||||
//Now insert cyclic share
|
||||
$qb = $this->connection->getQueryBuilder();
|
||||
|
|
|
@ -9,6 +9,9 @@
|
|||
|
||||
namespace Test\User;
|
||||
use OC\User\Database;
|
||||
use OCP\IConfig;
|
||||
use OCP\IUser;
|
||||
use Test\TestCase;
|
||||
|
||||
/**
|
||||
* Class ManagerTest
|
||||
|
@ -17,10 +20,20 @@ use OC\User\Database;
|
|||
*
|
||||
* @package Test\User
|
||||
*/
|
||||
class ManagerTest extends \Test\TestCase {
|
||||
class ManagerTest extends TestCase {
|
||||
|
||||
/** @var IConfig */
|
||||
private $config;
|
||||
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
$this->config = $this->createMock(IConfig::class);
|
||||
}
|
||||
|
||||
public function testGetBackends() {
|
||||
$userDummyBackend = $this->createMock(\Test\Util\User\Dummy::class);
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($userDummyBackend);
|
||||
$this->assertEquals([$userDummyBackend], $manager->getBackends());
|
||||
$dummyDatabaseBackend = $this->createMock(Database::class);
|
||||
|
@ -39,7 +52,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
->with($this->equalTo('foo'))
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend);
|
||||
|
||||
$this->assertTrue($manager->userExists('foo'));
|
||||
|
@ -55,14 +68,14 @@ class ManagerTest extends \Test\TestCase {
|
|||
->with($this->equalTo('foo'))
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend);
|
||||
|
||||
$this->assertFalse($manager->userExists('foo'));
|
||||
}
|
||||
|
||||
public function testUserExistsNoBackends() {
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
|
||||
$this->assertFalse($manager->userExists('foo'));
|
||||
}
|
||||
|
@ -86,7 +99,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
->with($this->equalTo('foo'))
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend1);
|
||||
$manager->registerBackend($backend2);
|
||||
|
||||
|
@ -110,7 +123,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
$backend2->expects($this->never())
|
||||
->method('userExists');
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend1);
|
||||
$manager->registerBackend($backend2);
|
||||
|
||||
|
@ -137,7 +150,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
}
|
||||
}));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend);
|
||||
|
||||
$user = $manager->checkPassword('foo', 'bar');
|
||||
|
@ -156,7 +169,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
->method('implementsActions')
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend);
|
||||
|
||||
$this->assertFalse($manager->checkPassword('foo', 'bar'));
|
||||
|
@ -172,7 +185,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
->with($this->equalTo('foo'))
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend);
|
||||
|
||||
$this->assertEquals('foo', $manager->get('foo')->getUID());
|
||||
|
@ -188,7 +201,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
->with($this->equalTo('foo'))
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend);
|
||||
|
||||
$this->assertEquals(null, $manager->get('foo'));
|
||||
|
@ -204,7 +217,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
->with($this->equalTo('fo'))
|
||||
->will($this->returnValue(array('foo', 'afoo')));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend);
|
||||
|
||||
$result = $manager->search('fo');
|
||||
|
@ -232,7 +245,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
->with($this->equalTo('fo'), $this->equalTo(3), $this->equalTo(1))
|
||||
->will($this->returnValue(array('foo3')));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend1);
|
||||
$manager->registerBackend($backend2);
|
||||
|
||||
|
@ -261,7 +274,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
->with($this->equalTo('foo'))
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend);
|
||||
|
||||
$user = $manager->createUser('foo', 'bar');
|
||||
|
@ -288,7 +301,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
->with($this->equalTo('foo'))
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend);
|
||||
|
||||
$manager->createUser('foo', 'bar');
|
||||
|
@ -311,14 +324,14 @@ class ManagerTest extends \Test\TestCase {
|
|||
->with($this->equalTo('foo'))
|
||||
->will($this->returnValue(false));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend);
|
||||
|
||||
$this->assertFalse($manager->createUser('foo', 'bar'));
|
||||
}
|
||||
|
||||
public function testCreateUserNoBackends() {
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
|
||||
$this->assertFalse($manager->createUser('foo', 'bar'));
|
||||
}
|
||||
|
@ -359,7 +372,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
->with($this->equalTo('foo'))
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend1);
|
||||
$manager->registerBackend($backend2);
|
||||
|
||||
|
@ -367,7 +380,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
}
|
||||
|
||||
public function testCountUsersNoBackend() {
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
|
||||
$result = $manager->countUsers();
|
||||
$this->assertTrue(is_array($result));
|
||||
|
@ -392,7 +405,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
->method('getBackendName')
|
||||
->will($this->returnValue('Mock_Test_Util_User_Dummy'));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend);
|
||||
|
||||
$result = $manager->countUsers();
|
||||
|
@ -433,7 +446,7 @@ class ManagerTest extends \Test\TestCase {
|
|||
->method('getBackendName')
|
||||
->will($this->returnValue('Mock_Test_Util_User_Dummy'));
|
||||
|
||||
$manager = new \OC\User\Manager();
|
||||
$manager = new \OC\User\Manager($this->config);
|
||||
$manager->registerBackend($backend1);
|
||||
$manager->registerBackend($backend2);
|
||||
|
||||
|
@ -448,6 +461,66 @@ class ManagerTest extends \Test\TestCase {
|
|||
$this->assertEquals(7 + 16, $users);
|
||||
}
|
||||
|
||||
public function testCountUsersOnlySeen() {
|
||||
$manager = \OC::$server->getUserManager();
|
||||
// count other users in the db before adding our own
|
||||
$countBefore = $manager->countUsers(true);
|
||||
|
||||
//Add test users
|
||||
$user1 = $manager->createUser('testseencount1', 'testseencount1');
|
||||
$user1->updateLastLoginTimestamp();
|
||||
|
||||
$user2 = $manager->createUser('testseencount2', 'testseencount2');
|
||||
$user2->updateLastLoginTimestamp();
|
||||
|
||||
$user3 = $manager->createUser('testseencount3', 'testseencount3');
|
||||
|
||||
$user4 = $manager->createUser('testseencount4', 'testseencount4');
|
||||
$user4->updateLastLoginTimestamp();
|
||||
|
||||
$this->assertEquals($countBefore + 3, $manager->countUsers(true));
|
||||
|
||||
//cleanup
|
||||
$user1->delete();
|
||||
$user2->delete();
|
||||
$user3->delete();
|
||||
$user4->delete();
|
||||
}
|
||||
|
||||
public function testCallForSeenUsers() {
|
||||
$manager = \OC::$server->getUserManager();
|
||||
// count other users in the db before adding our own
|
||||
$count = 0;
|
||||
$function = function (IUser $user) use (&$count) {
|
||||
$count++;
|
||||
};
|
||||
$manager->callForAllUsers($function, '', true);
|
||||
$countBefore = $count;
|
||||
|
||||
//Add test users
|
||||
$user1 = $manager->createUser('testseen1', 'testseen1');
|
||||
$user1->updateLastLoginTimestamp();
|
||||
|
||||
$user2 = $manager->createUser('testseen2', 'testseen2');
|
||||
$user2->updateLastLoginTimestamp();
|
||||
|
||||
$user3 = $manager->createUser('testseen3', 'testseen3');
|
||||
|
||||
$user4 = $manager->createUser('testseen4', 'testseen4');
|
||||
$user4->updateLastLoginTimestamp();
|
||||
|
||||
$count = 0;
|
||||
$manager->callForAllUsers($function, '', true);
|
||||
|
||||
$this->assertEquals($countBefore + 3, $count);
|
||||
|
||||
//cleanup
|
||||
$user1->delete();
|
||||
$user2->delete();
|
||||
$user3->delete();
|
||||
$user4->delete();
|
||||
}
|
||||
|
||||
public function testDeleteUser() {
|
||||
$config = $this->getMockBuilder('OCP\IConfig')
|
||||
->disableOriginalConstructor()
|
||||
|
|
|
@ -190,7 +190,10 @@ class SessionTest extends \Test\TestCase {
|
|||
unset($managerMethods[$i]);
|
||||
}
|
||||
}
|
||||
$manager = $this->getMockBuilder(Manager::class)->setMethods($managerMethods)->getMock();
|
||||
$manager = $this->getMockBuilder(Manager::class)
|
||||
->setMethods($managerMethods)
|
||||
->setConstructorArgs([$this->config])
|
||||
->getMock();
|
||||
|
||||
$backend = $this->createMock(\Test\Util\User\Dummy::class);
|
||||
|
||||
|
@ -245,7 +248,10 @@ class SessionTest extends \Test\TestCase {
|
|||
unset($managerMethods[$i]);
|
||||
}
|
||||
}
|
||||
$manager = $this->getMockBuilder(Manager::class)->setMethods($managerMethods)->getMock();
|
||||
$manager = $this->getMockBuilder(Manager::class)
|
||||
->setMethods($managerMethods)
|
||||
->setConstructorArgs([$this->config])
|
||||
->getMock();
|
||||
|
||||
$backend = $this->createMock(\Test\Util\User\Dummy::class);
|
||||
|
||||
|
@ -277,7 +283,10 @@ class SessionTest extends \Test\TestCase {
|
|||
unset($managerMethods[$i]);
|
||||
}
|
||||
}
|
||||
$manager = $this->getMockBuilder(Manager::class)->setMethods($managerMethods)->getMock();
|
||||
$manager = $this->getMockBuilder(Manager::class)
|
||||
->setMethods($managerMethods)
|
||||
->setConstructorArgs([$this->config])
|
||||
->getMock();
|
||||
$backend = $this->createMock(\Test\Util\User\Dummy::class);
|
||||
$userSession = new \OC\User\Session($manager, $session, $this->timeFactory, $this->tokenProvider, $this->config);
|
||||
|
||||
|
@ -527,7 +536,10 @@ class SessionTest extends \Test\TestCase {
|
|||
unset($managerMethods[$i]);
|
||||
}
|
||||
}
|
||||
$manager = $this->getMockBuilder(Manager::class)->setMethods($managerMethods)->getMock();
|
||||
$manager = $this->getMockBuilder(Manager::class)
|
||||
->setMethods($managerMethods)
|
||||
->setConstructorArgs([$this->config])
|
||||
->getMock();
|
||||
|
||||
$backend = $this->createMock(\Test\Util\User\Dummy::class);
|
||||
|
||||
|
@ -577,7 +589,10 @@ class SessionTest extends \Test\TestCase {
|
|||
unset($managerMethods[$i]);
|
||||
}
|
||||
}
|
||||
$manager = $this->getMockBuilder(Manager::class)->setMethods($managerMethods)->getMock();
|
||||
$manager = $this->getMockBuilder(Manager::class)
|
||||
->setMethods($managerMethods)
|
||||
->setConstructorArgs([$this->config])
|
||||
->getMock();
|
||||
|
||||
$backend = $this->createMock(\Test\Util\User\Dummy::class);
|
||||
|
||||
|
@ -621,7 +636,10 @@ class SessionTest extends \Test\TestCase {
|
|||
unset($managerMethods[$i]);
|
||||
}
|
||||
}
|
||||
$manager = $this->getMockBuilder(Manager::class)->setMethods($managerMethods)->getMock();
|
||||
$manager = $this->getMockBuilder(Manager::class)
|
||||
->setMethods($managerMethods)
|
||||
->setConstructorArgs([$this->config])
|
||||
->getMock();
|
||||
|
||||
$backend = $this->createMock(\Test\Util\User\Dummy::class);
|
||||
|
||||
|
|
Loading…
Reference in New Issue