aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/tests/User/UserTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_ldap/tests/User/UserTest.php')
-rw-r--r--apps/user_ldap/tests/User/UserTest.php1506
1 files changed, 716 insertions, 790 deletions
diff --git a/apps/user_ldap/tests/User/UserTest.php b/apps/user_ldap/tests/User/UserTest.php
index 27bd7762e39..00edd8b3f9b 100644
--- a/apps/user_ldap/tests/User/UserTest.php
+++ b/apps/user_ldap/tests/User/UserTest.php
@@ -1,50 +1,28 @@
<?php
+
+declare(strict_types=1);
/**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Joas Schilling <coding@schilljs.com>
- * @author Juan Pablo Villafáñez <jvillafanez@solidgear.es>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Roeland Jago Douma <roeland@famdouma.nl>
- * @author Roger Szabo <roger.szabo@web.de>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- * @author Victor Dubiniuk <dubiniuk@owncloud.com>
- *
- * @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 <http://www.gnu.org/licenses/>
- *
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
*/
-
namespace OCA\User_LDAP\Tests\User;
use OCA\User_LDAP\Access;
use OCA\User_LDAP\Connection;
-use OCA\User_LDAP\FilesystemHelper;
use OCA\User_LDAP\ILDAPWrapper;
-use OCA\User_LDAP\LogWrapper;
-use OCA\User_LDAP\User\IUserTools;
use OCA\User_LDAP\User\User;
use OCP\IAvatar;
use OCP\IAvatarManager;
use OCP\IConfig;
-use OCP\IDBConnection;
use OCP\Image;
use OCP\IUser;
use OCP\IUserManager;
use OCP\Notification\IManager as INotificationManager;
use OCP\Notification\INotification;
+use OCP\Util;
+use PHPUnit\Framework\MockObject\MockObject;
+use Psr\Log\LoggerInterface;
/**
* Class UserTest
@@ -54,410 +32,309 @@ use OCP\Notification\INotification;
* @package OCA\User_LDAP\Tests\User
*/
class UserTest extends \Test\TestCase {
- /** @var Access|\PHPUnit_Framework_MockObject_MockObject */
- protected $access;
- /** @var Connection|\PHPUnit_Framework_MockObject_MockObject */
- protected $connection;
+ protected Access&MockObject $access;
+ protected Connection&MockObject $connection;
+ protected IConfig&MockObject $config;
+ protected INotificationManager&MockObject $notificationManager;
+ protected IUserManager&MockObject $userManager;
+ protected Image&MockObject $image;
+ protected IAvatarManager&MockObject $avatarManager;
+ protected LoggerInterface&MockObject $logger;
+ protected string $uid = 'alice';
+ protected string $dn = 'uid=alice,dc=foo,dc=bar';
+ protected User $user;
+
+ protected function setUp(): void {
+ parent::setUp();
- public function setUp() {
- /** @var Access|\PHPUnit_Framework_MockObject_MockObject access */
- $this->access = $this->createMock(Access::class);
- $this->connection = $this->createMock(Connection::class);
+ $this->connection = $this->getMockBuilder(Connection::class)
+ ->setConstructorArgs([$this->createMock(ILDAPWrapper::class)])
+ ->getMock();
+ $this->access = $this->createMock(Access::class);
$this->access->connection = $this->connection;
$this->access->expects($this->any())
->method('getConnection')
->willReturn($this->connection);
- parent::setUp();
+ $this->config = $this->createMock(IConfig::class);
+ $this->logger = $this->createMock(LoggerInterface::class);
+ $this->avatarManager = $this->createMock(IAvatarManager::class);
+ $this->image = $this->createMock(Image::class);
+ $this->userManager = $this->createMock(IUserManager::class);
+ $this->notificationManager = $this->createMock(INotificationManager::class);
+
+ $this->user = new User(
+ $this->uid,
+ $this->dn,
+ $this->access,
+ $this->config,
+ $this->image,
+ $this->logger,
+ $this->avatarManager,
+ $this->userManager,
+ $this->notificationManager
+ );
}
- private function getTestInstances() {
- $access = $this->createMock(IUserTools::class);
- $config = $this->createMock(IConfig::class);
- $filesys = $this->createMock(FilesystemHelper::class);
- $log = $this->createMock(LogWrapper::class);
- $avaMgr = $this->createMock(IAvatarManager::class);
- $image = $this->createMock(Image::class);
- $dbc = $this->createMock(IDBConnection::class);
- $userMgr = $this->createMock(IUserManager::class);
- $notiMgr = $this->createMock(INotificationManager::class);
-
- return array($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr);
+ public function testGetDNandUsername(): void {
+ $this->assertSame($this->dn, $this->user->getDN());
+ $this->assertSame($this->uid, $this->user->getUsername());
}
- public function testGetDNandUsername() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $db, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $this->assertSame($dn, $user->getDN());
- $this->assertSame($uid, $user->getUsername());
- }
-
- public function testUpdateEmailProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
+ public function testUpdateEmailProvided(): void {
$this->connection->expects($this->once())
->method('__get')
->with($this->equalTo('ldapEmailAttribute'))
- ->will($this->returnValue('email'));
+ ->willReturn('email');
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
+ ->with($this->equalTo($this->dn),
$this->equalTo('email'))
- ->will($this->returnValue(array('alice@foo.bar')));
-
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
+ ->willReturn(['alice@foo.bar']);
- $uuser = $this->getMockBuilder(IUser::class)
- ->disableOriginalConstructor()
- ->getMock();
- $uuser->expects($this->once())
- ->method('setEMailAddress')
+ $coreUser = $this->createMock(IUser::class);
+ $coreUser->expects($this->once())
+ ->method('setSystemEMailAddress')
->with('alice@foo.bar');
- /** @var IUserManager | \PHPUnit_Framework_MockObject_MockObject $userMgr */
- $userMgr->expects($this->any())
+
+ $this->userManager->expects($this->any())
->method('get')
- ->willReturn($uuser);
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ ->willReturn($coreUser);
- $user->updateEmail();
+ $this->user->updateEmail();
}
- public function testUpdateEmailNotProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
+ public function testUpdateEmailNotProvided(): void {
$this->connection->expects($this->once())
->method('__get')
->with($this->equalTo('ldapEmailAttribute'))
- ->will($this->returnValue('email'));
+ ->willReturn('email');
+
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
+ ->with($this->equalTo($this->dn),
$this->equalTo('email'))
- ->will($this->returnValue(false));
+ ->willReturn(false);
- $config->expects($this->never())
+ $this->config->expects($this->never())
->method('setUserValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $user->updateEmail();
+ $this->user->updateEmail();
}
- public function testUpdateEmailNotConfigured() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
+ public function testUpdateEmailNotConfigured(): void {
$this->connection->expects($this->once())
->method('__get')
->with($this->equalTo('ldapEmailAttribute'))
- ->will($this->returnValue(''));
+ ->willReturn('');
$this->access->expects($this->never())
->method('readAttribute');
- $config->expects($this->never())
+ $this->config->expects($this->never())
->method('setUserValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $user->updateEmail();
+ $this->user->updateEmail();
}
- public function testUpdateQuotaAllProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $this->connection->expects($this->at(0))
+ public function testUpdateQuotaAllProvided(): void {
+ $this->connection->expects($this->exactly(2))
->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $this->connection->expects($this->exactly(1))
- ->method('__get');
+ ->willReturnMap([
+ ['ldapQuotaAttribute', 'myquota'],
+ ['ldapQuotaDefault', '']
+ ]);
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
+ ->with($this->equalTo($this->dn),
$this->equalTo('myquota'))
- ->will($this->returnValue(array('42 GB')));
+ ->willReturn(['42 GB']);
- $user = $this->createMock(IUser::class);
- $user->expects($this->once())
+ $coreUser = $this->createMock(IUser::class);
+ $coreUser->expects($this->once())
->method('setQuota')
->with('42 GB');
- $userMgr->expects($this->once())
+ $this->userManager->expects($this->atLeastOnce())
->method('get')
- ->with('alice')
- ->will($this->returnValue($user));
-
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ ->with($this->uid)
+ ->willReturn($coreUser);
- $user->updateQuota();
+ $this->user->updateQuota();
}
- public function testUpdateQuotaToDefaultAllProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $this->connection->expects($this->at(0))
+ public function testUpdateQuotaToDefaultAllProvided(): void {
+ $this->connection->expects($this->exactly(2))
->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $this->connection->expects($this->exactly(1))
- ->method('__get');
+ ->willReturnMap([
+ ['ldapQuotaAttribute', 'myquota'],
+ ['ldapQuotaDefault', '']
+ ]);
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
+ ->with($this->equalTo($this->dn),
$this->equalTo('myquota'))
- ->will($this->returnValue(array('default')));
+ ->willReturn(['default']);
- $user = $this->createMock('\OCP\IUser');
- $user->expects($this->once())
+ $coreUser = $this->createMock(IUser::class);
+ $coreUser->expects($this->once())
->method('setQuota')
->with('default');
- $userMgr->expects($this->once())
+ $this->userManager->expects($this->once())
->method('get')
- ->with('alice')
- ->will($this->returnValue($user));
-
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
+ ->with($this->uid)
+ ->willReturn($coreUser);
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $user->updateQuota();
+ $this->user->updateQuota();
}
- public function testUpdateQuotaToNoneAllProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $this->connection->expects($this->at(0))
+ public function testUpdateQuotaToNoneAllProvided(): void {
+ $this->connection->expects($this->exactly(2))
->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $this->connection->expects($this->exactly(1))
- ->method('__get');
+ ->willReturnMap([
+ ['ldapQuotaAttribute', 'myquota'],
+ ['ldapQuotaDefault', '']
+ ]);
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
+ ->with($this->equalTo($this->dn),
$this->equalTo('myquota'))
- ->will($this->returnValue(array('none')));
+ ->willReturn(['none']);
- $user = $this->createMock('\OCP\IUser');
- $user->expects($this->once())
+ $coreUser = $this->createMock(IUser::class);
+ $coreUser->expects($this->once())
->method('setQuota')
->with('none');
- $userMgr->expects($this->once())
+ $this->userManager->expects($this->once())
->method('get')
- ->with('alice')
- ->will($this->returnValue($user));
+ ->with($this->uid)
+ ->willReturn($coreUser);
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $user->updateQuota();
+ $this->user->updateQuota();
}
- public function testUpdateQuotaDefaultProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $this->connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $this->connection->expects($this->at(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue('25 GB'));
+ public function testUpdateQuotaDefaultProvided(): void {
$this->connection->expects($this->exactly(2))
- ->method('__get');
+ ->method('__get')
+ ->willReturnMap([
+ ['ldapQuotaAttribute', 'myquota'],
+ ['ldapQuotaDefault', '25 GB'],
+ ]);
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
+ ->with($this->equalTo($this->dn),
$this->equalTo('myquota'))
- ->will($this->returnValue(false));
+ ->willReturn(false);
- $user = $this->createMock(IUser::class);
- $user->expects($this->once())
+ $coreUser = $this->createMock(IUser::class);
+ $coreUser->expects($this->once())
->method('setQuota')
->with('25 GB');
- $userMgr->expects($this->once())
+ $this->userManager->expects($this->once())
->method('get')
- ->with('alice')
- ->will($this->returnValue($user));
+ ->with($this->uid)
+ ->willReturn($coreUser);
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $user->updateQuota();
+ $this->user->updateQuota();
}
- public function testUpdateQuotaIndividualProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $this->connection->expects($this->at(0))
+ public function testUpdateQuotaIndividualProvided(): void {
+ $this->connection->expects($this->exactly(2))
->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $this->connection->expects($this->exactly(1))
- ->method('__get');
+ ->willReturnMap([
+ ['ldapQuotaAttribute', 'myquota'],
+ ['ldapQuotaDefault', '']
+ ]);
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
+ ->with($this->equalTo($this->dn),
$this->equalTo('myquota'))
- ->will($this->returnValue(array('27 GB')));
+ ->willReturn(['27 GB']);
- $user = $this->createMock(IUser::class);
- $user->expects($this->once())
+ $coreUser = $this->createMock(IUser::class);
+ $coreUser->expects($this->once())
->method('setQuota')
->with('27 GB');
- $userMgr->expects($this->once())
+ $this->userManager->expects($this->once())
->method('get')
- ->with('alice')
- ->will($this->returnValue($user));
-
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ ->with($this->uid)
+ ->willReturn($coreUser);
- $user->updateQuota();
+ $this->user->updateQuota();
}
- public function testUpdateQuotaNoneProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $this->connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $this->connection->expects($this->at(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue(''));
+ public function testUpdateQuotaNoneProvided(): void {
$this->connection->expects($this->exactly(2))
- ->method('__get');
+ ->method('__get')
+ ->willReturnMap([
+ ['ldapQuotaAttribute', 'myquota'],
+ ['ldapQuotaDefault', '']
+ ]);
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
+ ->with($this->equalTo($this->dn),
$this->equalTo('myquota'))
- ->will($this->returnValue(false));
+ ->willReturn(false);
- $user = $this->createMock('\OCP\IUser');
- $user->expects($this->never())
+ $coreUser = $this->createMock(IUser::class);
+ $coreUser->expects($this->never())
->method('setQuota');
- $userMgr->expects($this->once())
+ $this->userManager->expects($this->never())
->method('get')
- ->with('alice')
- ->will($this->returnValue($user));
+ ->with($this->uid);
- $config->expects($this->never())
+ $this->config->expects($this->never())
->method('setUserValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $user->updateQuota();
+ $this->user->updateQuota();
}
- public function testUpdateQuotaNoneConfigured() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $this->connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue(''));
- $this->connection->expects($this->at(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue(''));
+ public function testUpdateQuotaNoneConfigured(): void {
$this->connection->expects($this->exactly(2))
- ->method('__get');
+ ->method('__get')
+ ->willReturnMap([
+ ['ldapQuotaAttribute', ''],
+ ['ldapQuotaDefault', '']
+ ]);
- $user = $this->createMock('\OCP\IUser');
- $user->expects($this->never())
+ $coreUser = $this->createMock(IUser::class);
+ $coreUser->expects($this->never())
->method('setQuota');
- $userMgr->expects($this->once())
- ->method('get')
- ->with('alice')
- ->will($this->returnValue($user));
+ $this->userManager->expects($this->never())
+ ->method('get');
$this->access->expects($this->never())
->method('readAttribute');
- $config->expects($this->never())
+ $this->config->expects($this->never())
->method('setUserValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $user->updateQuota();
+ $this->user->updateQuota();
}
- public function testUpdateQuotaFromValue() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
+ public function testUpdateQuotaFromValue(): void {
$readQuota = '19 GB';
- $this->connection->expects($this->never())
+ $this->connection->expects($this->exactly(2))
->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'));
+ ->willReturnMap([
+ ['ldapQuotaAttribute', 'myquota'],
+ ['ldapQuotaDefault', '']
+ ]);
$this->access->expects($this->never())
->method('readAttribute');
@@ -467,787 +344,836 @@ class UserTest extends \Test\TestCase {
->method('setQuota')
->with($readQuota);
- $userMgr->expects($this->once())
+ $this->userManager->expects($this->once())
->method('get')
- ->with('alice')
- ->will($this->returnValue($user));
-
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ ->with($this->uid)
+ ->willReturn($user);
- $user->updateQuota($readQuota);
+ $this->user->updateQuota($readQuota);
}
/**
* Unparseable quota will fallback to use the LDAP default
*/
- public function testUpdateWrongQuotaAllProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $this->connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $this->connection->expects($this->at(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue('23 GB'));
+ public function testUpdateWrongQuotaAllProvided(): void {
$this->connection->expects($this->exactly(2))
- ->method('__get');
+ ->method('__get')
+ ->willReturnMap([
+ ['ldapQuotaAttribute', 'myquota'],
+ ['ldapQuotaDefault', '23 GB']
+ ]);
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
+ ->with($this->equalTo($this->dn),
$this->equalTo('myquota'))
- ->will($this->returnValue(array('42 GBwos')));
+ ->willReturn(['42 GBwos']);
- $user = $this->createMock('\OCP\IUser');
- $user->expects($this->once())
+ $coreUser = $this->createMock(IUser::class);
+ $coreUser->expects($this->once())
->method('setQuota')
->with('23 GB');
- $userMgr->expects($this->once())
+ $this->userManager->expects($this->once())
->method('get')
- ->with('alice')
- ->will($this->returnValue($user));
-
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
+ ->with($this->uid)
+ ->willReturn($coreUser);
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $user->updateQuota();
+ $this->user->updateQuota();
}
/**
* No user quota and wrong default will set 'default' as quota
*/
- public function testUpdateWrongDefaultQuotaProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $this->connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $this->connection->expects($this->at(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue('23 GBwowowo'));
+ public function testUpdateWrongDefaultQuotaProvided(): void {
$this->connection->expects($this->exactly(2))
- ->method('__get');
+ ->method('__get')
+ ->willReturnMap([
+ ['ldapQuotaAttribute', 'myquota'],
+ ['ldapQuotaDefault', '23 GBwowowo']
+ ]);
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
+ ->with($this->equalTo($this->dn),
$this->equalTo('myquota'))
- ->will($this->returnValue(false));
+ ->willReturn(false);
- $user = $this->createMock('\OCP\IUser');
- $user->expects($this->never())
+ $coreUser = $this->createMock(IUser::class);
+ $coreUser->expects($this->never())
->method('setQuota');
- $userMgr->expects($this->once())
- ->method('get')
- ->with('alice')
- ->will($this->returnValue($user));
-
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ $this->userManager->expects($this->never())
+ ->method('get');
- $user->updateQuota();
+ $this->user->updateQuota();
}
/**
* Wrong user quota and wrong default will set 'default' as quota
*/
- public function testUpdateWrongQuotaAndDefaultAllProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $this->connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $this->connection->expects($this->at(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue('23 GBwowowo'));
+ public function testUpdateWrongQuotaAndDefaultAllProvided(): void {
$this->connection->expects($this->exactly(2))
- ->method('__get');
+ ->method('__get')
+ ->willReturnMap([
+ ['ldapQuotaAttribute', 'myquota'],
+ ['ldapQuotaDefault', '23 GBwowowo']
+ ]);
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
+ ->with($this->equalTo($this->dn),
$this->equalTo('myquota'))
- ->will($this->returnValue(array('23 flush')));
+ ->willReturn(['23 flush']);
- $user = $this->createMock('\OCP\IUser');
- $user->expects($this->never())
+ $coreUser = $this->createMock(IUser::class);
+ $coreUser->expects($this->never())
->method('setQuota');
- $userMgr->expects($this->once())
- ->method('get')
- ->with('alice')
- ->will($this->returnValue($user));
-
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
+ $this->userManager->expects($this->never())
+ ->method('get');
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $user->updateQuota();
+ $this->user->updateQuota();
}
/**
* No quota attribute set and wrong default will set 'default' as quota
*/
- public function testUpdateWrongDefaultQuotaNotProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $this->connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue(''));
- $this->connection->expects($this->at(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue('23 GBwowowo'));
+ public function testUpdateWrongDefaultQuotaNotProvided(): void {
$this->connection->expects($this->exactly(2))
- ->method('__get');
+ ->method('__get')
+ ->willReturnMap([
+ ['ldapQuotaAttribute', ''],
+ ['ldapQuotaDefault', '23 GBwowowo']
+ ]);
$this->access->expects($this->never())
->method('readAttribute');
- $user = $this->createMock('\OCP\IUser');
- $user->expects($this->never())
+ $coreUser = $this->createMock(IUser::class);
+ $coreUser->expects($this->never())
->method('setQuota');
- $userMgr->expects($this->once())
- ->method('get')
- ->with('alice')
- ->will($this->returnValue($user));
-
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ $this->userManager->expects($this->never())
+ ->method('get');
- $user->updateQuota();
+ $this->user->updateQuota();
}
- //the testUpdateAvatar series also implicitely tests getAvatarImage
- public function testUpdateAvatarJpegPhotoProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, , $userMgr, $notiMgr) =
- $this->getTestInstances();
-
+ //the testUpdateAvatar series also implicitly tests getAvatarImage
+ public function XtestUpdateAvatarJpegPhotoProvided() {
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
- $this->equalTo('jpegPhoto'))
- ->will($this->returnValue(array('this is a photo')));
-
- $image->expects($this->once())
+ ->with($this->equalTo($this->dn),
+ $this->equalTo('jpegphoto'))
+ ->willReturn(['this is a photo']);
+
+ $this->image->expects($this->once())
+ ->method('loadFromBase64')
+ ->willReturn('imageResource');
+ $this->image->expects($this->once())
->method('valid')
- ->will($this->returnValue(true));
- $image->expects($this->once())
+ ->willReturn(true);
+ $this->image->expects($this->once())
->method('width')
- ->will($this->returnValue(128));
- $image->expects($this->once())
+ ->willReturn(128);
+ $this->image->expects($this->once())
->method('height')
- ->will($this->returnValue(128));
- $image->expects($this->once())
+ ->willReturn(128);
+ $this->image->expects($this->once())
->method('centerCrop')
- ->will($this->returnValue(true));
+ ->willReturn(true);
+ $this->image->expects($this->once())
+ ->method('data')
+ ->willReturn('this is a photo');
- $filesys->expects($this->once())
- ->method('isLoaded')
- ->will($this->returnValue(true));
+ $this->config->expects($this->once())
+ ->method('getUserValue')
+ ->with($this->uid, 'user_ldap', 'lastAvatarChecksum', '')
+ ->willReturn('');
+ $this->config->expects($this->once())
+ ->method('setUserValue')
+ ->with($this->uid, 'user_ldap', 'lastAvatarChecksum', md5('this is a photo'));
$avatar = $this->createMock(IAvatar::class);
$avatar->expects($this->once())
->method('set')
- ->with($this->isInstanceOf($image));
+ ->with($this->image);
- $avaMgr->expects($this->once())
+ $this->avatarManager->expects($this->once())
->method('getAvatar')
- ->with($this->equalTo('alice'))
- ->will($this->returnValue($avatar));
+ ->with($this->equalTo($this->uid))
+ ->willReturn($avatar);
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ $this->connection->expects($this->any())
+ ->method('resolveRule')
+ ->with('avatar')
+ ->willReturn(['jpegphoto', 'thumbnailphoto']);
- $user->updateAvatar();
+ $this->user->updateAvatar();
}
- public function testUpdateAvatarThumbnailPhotoProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
+ public function testUpdateAvatarKnownJpegPhotoProvided(): void {
+ $this->access->expects($this->once())
+ ->method('readAttribute')
+ ->with($this->equalTo($this->dn),
+ $this->equalTo('jpegphoto'))
+ ->willReturn(['this is a photo']);
+
+ $this->image->expects($this->once())
+ ->method('loadFromBase64')
+ ->willReturn('imageResource');
+ $this->image->expects($this->never())
+ ->method('valid');
+ $this->image->expects($this->never())
+ ->method('width');
+ $this->image->expects($this->never())
+ ->method('height');
+ $this->image->expects($this->never())
+ ->method('centerCrop');
+ $this->image->expects($this->once())
+ ->method('data')
+ ->willReturn('this is a photo');
+
+ $this->config->expects($this->once())
+ ->method('getUserValue')
+ ->with($this->uid, 'user_ldap', 'lastAvatarChecksum', '')
+ ->willReturn(md5('this is a photo'));
+ $this->config->expects($this->never())
+ ->method('setUserValue');
+
+ $avatar = $this->createMock(IAvatar::class);
+ $avatar->expects($this->never())
+ ->method('set');
+ $avatar->expects($this->any())
+ ->method('exists')
+ ->willReturn(true);
+ $avatar->expects($this->any())
+ ->method('isCustomAvatar')
+ ->willReturn(true);
+
+ $this->avatarManager->expects($this->any())
+ ->method('getAvatar')
+ ->with($this->uid)
+ ->willReturn($avatar);
+
+ $this->connection->expects($this->any())
+ ->method('resolveRule')
+ ->with('avatar')
+ ->willReturn(['jpegphoto', 'thumbnailphoto']);
+ $this->assertTrue($this->user->updateAvatar());
+ }
+
+ public function XtestUpdateAvatarThumbnailPhotoProvided() {
$this->access->expects($this->any())
->method('readAttribute')
- ->willReturnCallback(function($dn, $attr) {
- if($dn === 'uid=alice,dc=foo,dc=bar'
- && $attr === 'jpegPhoto')
- {
+ ->willReturnCallback(function ($dn, $attr) {
+ if ($dn === $this->dn
+ && $attr === 'jpegphoto') {
return false;
- } elseif($dn === 'uid=alice,dc=foo,dc=bar'
- && $attr === 'thumbnailPhoto')
- {
+ } elseif ($dn === $this->dn
+ && $attr === 'thumbnailphoto') {
return ['this is a photo'];
}
return null;
});
- $image->expects($this->once())
+ $this->image->expects($this->once())
+ ->method('loadFromBase64')
+ ->willReturn('imageResource');
+ $this->image->expects($this->once())
->method('valid')
- ->will($this->returnValue(true));
- $image->expects($this->once())
+ ->willReturn(true);
+ $this->image->expects($this->once())
->method('width')
- ->will($this->returnValue(128));
- $image->expects($this->once())
+ ->willReturn(128);
+ $this->image->expects($this->once())
->method('height')
- ->will($this->returnValue(128));
- $image->expects($this->once())
+ ->willReturn(128);
+ $this->image->expects($this->once())
->method('centerCrop')
- ->will($this->returnValue(true));
+ ->willReturn(true);
+ $this->image->expects($this->once())
+ ->method('data')
+ ->willReturn('this is a photo');
- $filesys->expects($this->once())
- ->method('isLoaded')
- ->will($this->returnValue(true));
+ $this->config->expects($this->once())
+ ->method('getUserValue')
+ ->with($this->uid, 'user_ldap', 'lastAvatarChecksum', '')
+ ->willReturn('');
+ $this->config->expects($this->once())
+ ->method('setUserValue')
+ ->with($this->uid, 'user_ldap', 'lastAvatarChecksum', md5('this is a photo'));
$avatar = $this->createMock(IAvatar::class);
$avatar->expects($this->once())
->method('set')
- ->with($this->isInstanceOf($image));
+ ->with($this->image);
- $avaMgr->expects($this->once())
+ $this->avatarManager->expects($this->once())
->method('getAvatar')
- ->with($this->equalTo('alice'))
- ->will($this->returnValue($avatar));
+ ->with($this->equalTo($this->uid))
+ ->willReturn($avatar);
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ $this->connection->expects($this->any())
+ ->method('resolveRule')
+ ->with('avatar')
+ ->willReturn(['jpegphoto', 'thumbnailphoto']);
- $user->updateAvatar();
+ $this->user->updateAvatar();
}
- public function testUpdateAvatarNotProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
+ public function testUpdateAvatarCorruptPhotoProvided(): void {
$this->access->expects($this->any())
->method('readAttribute')
- ->willReturnCallback(function($dn, $attr) {
- if($dn === 'uid=alice,dc=foo,dc=bar'
- && $attr === 'jpegPhoto')
- {
- return false;
- } elseif($dn === 'uid=alice,dc=foo,dc=bar'
- && $attr === 'thumbnailPhoto')
- {
+ ->willReturnCallback(function ($dn, $attr) {
+ if ($dn === $this->dn
+ && $attr === 'jpegphoto') {
return false;
+ } elseif ($dn === $this->dn
+ && $attr === 'thumbnailphoto') {
+ return ['this is a photo'];
}
return null;
});
- $image->expects($this->never())
+ $this->image->expects($this->once())
+ ->method('loadFromBase64')
+ ->willReturn(false);
+ $this->image->expects($this->never())
->method('valid');
- $image->expects($this->never())
+ $this->image->expects($this->never())
->method('width');
- $image->expects($this->never())
+ $this->image->expects($this->never())
->method('height');
- $image->expects($this->never())
+ $this->image->expects($this->never())
->method('centerCrop');
+ $this->image->expects($this->never())
+ ->method('data');
- $filesys->expects($this->never())
- ->method('isLoaded');
+ $this->config->expects($this->never())
+ ->method('getUserValue');
+ $this->config->expects($this->never())
+ ->method('setUserValue');
- $avaMgr->expects($this->never())
- ->method('getAvatar');
+ $avatar = $this->createMock(IAvatar::class);
+ $avatar->expects($this->never())
+ ->method('set');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
+ $this->avatarManager->expects($this->never())
+ ->method('getAvatar');
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ $this->connection->expects($this->any())
+ ->method('resolveRule')
+ ->with('avatar')
+ ->willReturn(['jpegphoto', 'thumbnailphoto']);
- $user->updateAvatar();
+ $this->user->updateAvatar();
}
- public function testUpdateBeforeFirstLogin() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
+ public function XtestUpdateAvatarUnsupportedThumbnailPhotoProvided() {
+ $this->access->expects($this->any())
+ ->method('readAttribute')
+ ->willReturnCallback(function ($dn, $attr) {
+ if ($dn === $this->dn
+ && $attr === 'jpegphoto') {
+ return false;
+ } elseif ($dn === $this->dn
+ && $attr === 'thumbnailphoto') {
+ return ['this is a photo'];
+ }
+ return null;
+ });
- $config->expects($this->at(0))
- ->method('getUserValue')
- ->with($this->equalTo('alice'), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_FIRSTLOGIN),
- $this->equalTo(0))
- ->will($this->returnValue(0));
- $config->expects($this->at(1))
+ $this->image->expects($this->once())
+ ->method('loadFromBase64')
+ ->willReturn('imageResource');
+ $this->image->expects($this->once())
+ ->method('valid')
+ ->willReturn(true);
+ $this->image->expects($this->once())
+ ->method('width')
+ ->willReturn(128);
+ $this->image->expects($this->once())
+ ->method('height')
+ ->willReturn(128);
+ $this->image->expects($this->once())
+ ->method('centerCrop')
+ ->willReturn(true);
+ $this->image->expects($this->once())
+ ->method('data')
+ ->willReturn('this is a photo');
+
+ $this->config->expects($this->once())
->method('getUserValue')
- ->with($this->equalTo('alice'), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_LASTREFRESH),
- $this->equalTo(0))
- ->will($this->returnValue(0));
- $config->expects($this->exactly(2))
- ->method('getUserValue');
- $config->expects($this->never())
+ ->with($this->uid, 'user_ldap', 'lastAvatarChecksum', '')
+ ->willReturn('');
+ $this->config->expects($this->never())
->method('setUserValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
+ $avatar = $this->createMock(IAvatar::class);
+ $avatar->expects($this->once())
+ ->method('set')
+ ->with($this->image)
+ ->willThrowException(new \Exception());
+
+ $this->avatarManager->expects($this->once())
+ ->method('getAvatar')
+ ->with($this->equalTo($this->uid))
+ ->willReturn($avatar);
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ $this->connection->expects($this->any())
+ ->method('resolveRule')
+ ->with('avatar')
+ ->willReturn(['jpegphoto', 'thumbnailphoto']);
- $user->update();
+ $this->assertFalse($this->user->updateAvatar());
}
- public function testUpdateAfterFirstLogin() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
+ public function testUpdateAvatarNotProvided(): void {
+ $this->access->expects($this->any())
+ ->method('readAttribute')
+ ->willReturnCallback(function ($dn, $attr) {
+ if ($dn === $this->dn
+ && $attr === 'jpegPhoto') {
+ return false;
+ } elseif ($dn === $this->dn
+ && $attr === 'thumbnailPhoto') {
+ return false;
+ }
+ return null;
+ });
- $config->expects($this->at(0))
- ->method('getUserValue')
- ->with($this->equalTo('alice'), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_FIRSTLOGIN),
- $this->equalTo(0))
- ->will($this->returnValue(1));
- $config->expects($this->at(1))
- ->method('getUserValue')
- ->with($this->equalTo('alice'), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_LASTREFRESH),
- $this->equalTo(0))
- ->will($this->returnValue(0));
- $config->expects($this->exactly(2))
+ $this->image->expects($this->never())
+ ->method('valid');
+ $this->image->expects($this->never())
+ ->method('width');
+ $this->image->expects($this->never())
+ ->method('height');
+ $this->image->expects($this->never())
+ ->method('centerCrop');
+ $this->image->expects($this->never())
+ ->method('data');
+
+ $this->config->expects($this->never())
->method('getUserValue');
- $config->expects($this->once())
- ->method('setUserValue')
- ->with($this->equalTo('alice'), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_LASTREFRESH),
- $this->anything())
- ->will($this->returnValue(true));
+ $this->config->expects($this->never())
+ ->method('setUserValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
+ $this->avatarManager->expects($this->never())
+ ->method('getAvatar');
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ $this->connection->expects($this->any())
+ ->method('resolveRule')
+ ->with('avatar')
+ ->willReturn(['jpegphoto', 'thumbnailphoto']);
- $user->update();
+ $this->user->updateAvatar();
}
- public function testUpdateNoRefresh() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $config->expects($this->at(0))
- ->method('getUserValue')
- ->with($this->equalTo('alice'), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_FIRSTLOGIN),
- $this->equalTo(0))
- ->will($this->returnValue(1));
- $config->expects($this->at(1))
- ->method('getUserValue')
- ->with($this->equalTo('alice'), $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_LASTREFRESH),
- $this->equalTo(0))
- ->will($this->returnValue(time() - 10));
-
- $config->expects($this->once())
- ->method('getAppValue')
- ->with($this->equalTo('user_ldap'),
- $this->equalTo('updateAttributesInterval'),
- $this->anything())
- ->will($this->returnValue(1800));
- $config->expects($this->exactly(2))
- ->method('getUserValue');
- $config->expects($this->never())
- ->method('setUserValue');
+ public static function extStorageHomeDataProvider(): array {
+ return [
+ [ 'myFolder', null ],
+ [ '', null, false ],
+ [ 'myFolder', 'myFolder' ],
+ ];
+ }
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
+ #[\PHPUnit\Framework\Attributes\DataProvider('extStorageHomeDataProvider')]
+ public function testUpdateExtStorageHome(string $expected, ?string $valueFromLDAP = null, bool $isSet = true): void {
+ if ($valueFromLDAP === null) {
+ $this->connection->expects($this->once())
+ ->method('__get')
+ ->willReturnMap([
+ ['ldapExtStorageHomeAttribute', 'homeDirectory'],
+ ]);
+
+ $return = [];
+ if ($isSet) {
+ $return[] = $expected;
+ }
+ $this->access->expects($this->once())
+ ->method('readAttribute')
+ ->with($this->dn, 'homeDirectory')
+ ->willReturn($return);
+ }
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ if ($expected !== '') {
+ $this->config->expects($this->once())
+ ->method('setUserValue')
+ ->with($this->uid, 'user_ldap', 'extStorageHome', $expected);
+ } else {
+ $this->config->expects($this->once())
+ ->method('deleteUserValue')
+ ->with($this->uid, 'user_ldap', 'extStorageHome');
+ }
- $user->update();
+ $actual = $this->user->updateExtStorageHome($valueFromLDAP);
+ $this->assertSame($expected, $actual);
}
- public function testMarkLogin() {
- list(, $config, $filesys, $image, $log, $avaMgr, $db, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $config->expects($this->once())
+ public function testMarkLogin(): void {
+ $this->config->expects($this->once())
->method('setUserValue')
- ->with($this->equalTo('alice'),
+ ->with($this->equalTo($this->uid),
$this->equalTo('user_ldap'),
$this->equalTo(User::USER_PREFKEY_FIRSTLOGIN),
$this->equalTo(1))
- ->will($this->returnValue(true));
+ ->willReturn(true);
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $user->markLogin();
+ $this->user->markLogin();
}
- public function testGetAvatarImageProvided() {
- list(, $config, $filesys, $image, $log, $avaMgr, $db, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
+ public function testGetAvatarImageProvided(): void {
$this->access->expects($this->once())
->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
- $this->equalTo('jpegPhoto'))
- ->will($this->returnValue(array('this is a photo')));
-
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
+ ->with($this->equalTo($this->dn),
+ $this->equalTo('jpegphoto'))
+ ->willReturn(['this is a photo']);
+ $this->connection->expects($this->any())
+ ->method('resolveRule')
+ ->with('avatar')
+ ->willReturn(['jpegphoto', 'thumbnailphoto']);
- $photo = $user->getAvatarImage();
+ $photo = $this->user->getAvatarImage();
$this->assertSame('this is a photo', $photo);
//make sure readAttribute is not called again but the already fetched
//photo is returned
- $photo = $user->getAvatarImage();
+ $this->user->getAvatarImage();
}
- public function testProcessAttributes() {
- list(, $config, $filesys, $image, $log, $avaMgr, , $userMgr, $notiMgr) =
- $this->getTestInstances();
+ public function testGetAvatarImageDisabled(): void {
+ $this->access->expects($this->never())
+ ->method('readAttribute')
+ ->with($this->equalTo($this->dn), $this->anything());
+ $this->connection->expects($this->any())
+ ->method('resolveRule')
+ ->with('avatar')
+ ->willReturn([]);
+
+ $this->assertFalse($this->user->getAvatarImage());
+ }
- $uid = 'alice';
- $dn = 'uid=alice';
+ public static function imageDataProvider(): array {
+ return [
+ [ false, false ],
+ [ 'corruptData', false ],
+ [ 'validData', true ],
+ ];
+ }
- $requiredMethods = array(
- 'markRefreshTime',
+ public function testProcessAttributes(): void {
+ $requiredMethods = [
'updateQuota',
'updateEmail',
'composeAndStoreDisplayName',
'storeLDAPUserName',
'getHomePath',
- 'updateAvatar'
- );
+ 'updateAvatar',
+ 'updateExtStorageHome',
+ ];
- $userMock = $this->getMockBuilder('OCA\User_LDAP\User\User')
- ->setConstructorArgs(array($uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr))
- ->setMethods($requiredMethods)
+ /** @var User&MockObject $userMock */
+ $userMock = $this->getMockBuilder(User::class)
+ ->setConstructorArgs([
+ $this->uid,
+ $this->dn,
+ $this->access,
+ $this->config,
+ $this->image,
+ $this->logger,
+ $this->avatarManager,
+ $this->userManager,
+ $this->notificationManager
+ ])
+ ->onlyMethods($requiredMethods)
->getMock();
- $this->connection->setConfiguration(array(
+ $this->connection->setConfiguration([
'homeFolderNamingRule' => 'homeDirectory'
- ));
+ ]);
$this->connection->expects($this->any())
->method('__get')
- //->will($this->returnArgument(0));
- ->will($this->returnCallback(function($name) {
- if($name === 'homeFolderNamingRule') {
+ ->willReturnCallback(function ($name) {
+ if ($name === 'homeFolderNamingRule') {
return 'attr:homeDirectory';
}
return $name;
- }));
-
- $record = array(
- strtolower($this->connection->ldapQuotaAttribute) => array('4096'),
- strtolower($this->connection->ldapEmailAttribute) => array('alice@wonderland.org'),
- strtolower($this->connection->ldapUserDisplayName) => array('Aaaaalice'),
- 'uid' => array($uid),
- 'homedirectory' => array('Alice\'s Folder'),
- 'memberof' => array('cn=groupOne', 'cn=groupTwo'),
- 'jpegphoto' => array('here be an image')
- );
+ });
+ $this->connection->expects($this->any())
+ ->method('resolveRule')
+ ->with('avatar')
+ ->willReturn(['jpegphoto', 'thumbnailphoto']);
+
+ $record = [
+ strtolower($this->connection->ldapQuotaAttribute) => ['4096'],
+ strtolower($this->connection->ldapEmailAttribute) => ['alice@wonderland.org'],
+ strtolower($this->connection->ldapUserDisplayName) => ['Aaaaalice'],
+ strtolower($this->connection->ldapExtStorageHomeAttribute) => ['homeDirectory'],
+ 'uid' => [$this->uid],
+ 'homedirectory' => ['Alice\'s Folder'],
+ 'memberof' => ['cn=groupOne', 'cn=groupTwo'],
+ 'jpegphoto' => ['here be an image']
+ ];
- foreach($requiredMethods as $method) {
+ foreach ($requiredMethods as $method) {
$userMock->expects($this->once())
->method($method);
}
- \OC_Hook::clear();//disconnect irrelevant hooks
+ \OC_Hook::clear();//disconnect irrelevant hooks
$userMock->processAttributes($record);
- \OC_Hook::emit('OC_User', 'post_login', array('uid' => $uid));
+ /** @noinspection PhpUnhandledExceptionInspection */
+ \OC_Hook::emit('OC_User', 'post_login', ['uid' => $this->uid]);
}
- public function emptyHomeFolderAttributeValueProvider() {
- return array(
- 'empty' => array(''),
- 'prefixOnly' => array('attr:'),
- );
+ public static function emptyHomeFolderAttributeValueProvider(): array {
+ return [
+ 'empty' => [''],
+ 'prefixOnly' => ['attr:'],
+ ];
}
- /**
- * @dataProvider emptyHomeFolderAttributeValueProvider
- */
- public function testGetHomePathNotConfigured($attributeValue) {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
-
+ #[\PHPUnit\Framework\Attributes\DataProvider('emptyHomeFolderAttributeValueProvider')]
+ public function testGetHomePathNotConfigured(string $attributeValue): void {
$this->connection->expects($this->any())
->method('__get')
->with($this->equalTo('homeFolderNamingRule'))
- ->will($this->returnValue($attributeValue));
+ ->willReturn($attributeValue);
$this->access->expects($this->never())
->method('readAttribute');
- $config->expects($this->never())
+ $this->config->expects($this->never())
->method('getAppValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $path = $user->getHomePath();
- $this->assertSame($path, false);
+ /** @noinspection PhpUnhandledExceptionInspection */
+ $this->assertFalse($this->user->getHomePath());
}
- public function testGetHomePathConfiguredNotAvailableAllowed() {
- list(, $config, $filesys, $image, $log, $avaMgr, , $userMgr, $notiMgr) =
- $this->getTestInstances();
-
+ public function testGetHomePathConfiguredNotAvailableAllowed(): void {
$this->connection->expects($this->any())
->method('__get')
->with($this->equalTo('homeFolderNamingRule'))
- ->will($this->returnValue('attr:foobar'));
+ ->willReturn('attr:foobar');
$this->access->expects($this->once())
->method('readAttribute')
- ->will($this->returnValue(false));
+ ->willReturn(false);
+
+ $this->access->expects($this->once())
+ ->method('username2dn')
+ ->willReturn($this->dn);
// asks for "enforce_home_folder_naming_rule"
- $config->expects($this->once())
+ $this->config->expects($this->once())
->method('getAppValue')
- ->will($this->returnValue(false));
+ ->willReturn(false);
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $path = $user->getHomePath();
-
- $this->assertSame($path, false);
+ /** @noinspection PhpUnhandledExceptionInspection */
+ $this->assertFalse($this->user->getHomePath());
}
- /**
- * @expectedException \Exception
- */
- public function testGetHomePathConfiguredNotAvailableNotAllowed() {
- list(, $config, $filesys, $image, $log, $avaMgr, , $userMgr, $notiMgr) =
- $this->getTestInstances();
+
+ public function testGetHomePathConfiguredNotAvailableNotAllowed(): void {
+ $this->expectException(\Exception::class);
$this->connection->expects($this->any())
->method('__get')
->with($this->equalTo('homeFolderNamingRule'))
- ->will($this->returnValue('attr:foobar'));
+ ->willReturn('attr:foobar');
$this->access->expects($this->once())
->method('readAttribute')
- ->will($this->returnValue(false));
+ ->willReturn(false);
+
+ $this->access->expects($this->once())
+ ->method('username2dn')
+ ->willReturn($this->dn);
// asks for "enforce_home_folder_naming_rule"
- $config->expects($this->once())
+ $this->config->expects($this->once())
->method('getAppValue')
- ->will($this->returnValue(true));
+ ->willReturn(true);
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
-
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $user->getHomePath();
+ $this->user->getHomePath();
}
- public function displayNameProvider() {
+ public static function displayNameProvider(): array {
return [
- ['Roland Deschain', '', 'Roland Deschain'],
- ['Roland Deschain', null, 'Roland Deschain'],
- ['Roland Deschain', 'gunslinger@darktower.com', 'Roland Deschain (gunslinger@darktower.com)'],
+ ['Roland Deschain', '', 'Roland Deschain', false],
+ ['Roland Deschain', '', 'Roland Deschain', true],
+ ['Roland Deschain', 'gunslinger@darktower.com', 'Roland Deschain (gunslinger@darktower.com)', false],
+ ['Roland Deschain', 'gunslinger@darktower.com', 'Roland Deschain (gunslinger@darktower.com)', true],
];
}
- /**
- * @dataProvider displayNameProvider
- */
- public function testComposeAndStoreDisplayName($part1, $part2, $expected) {
- list(, $config, $filesys, $image, $log, $avaMgr, , $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $config->expects($this->once())
+ #[\PHPUnit\Framework\Attributes\DataProvider('displayNameProvider')]
+ public function testComposeAndStoreDisplayName(string $part1, string $part2, string $expected, bool $expectTriggerChange): void {
+ $this->config->expects($this->once())
->method('setUserValue');
+ $oldName = $expectTriggerChange ? 'xxGunslingerxx' : null;
+ $this->config->expects($this->once())
+ ->method('getUserValue')
+ ->with($this->user->getUsername(), 'user_ldap', 'displayName', null)
+ ->willReturn($oldName);
+
+ $ncUserObj = $this->createMock(\OC\User\User::class);
+ if ($expectTriggerChange) {
+ $ncUserObj->expects($this->once())
+ ->method('triggerChange')
+ ->with('displayName', $expected);
+ } else {
+ $ncUserObj->expects($this->never())
+ ->method('triggerChange');
+ }
+ $this->userManager->expects($this->once())
+ ->method('get')
+ ->willReturn($ncUserObj);
- $user = new User(
- 'user', 'cn=user', $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- $displayName = $user->composeAndStoreDisplayName($part1, $part2);
+ $displayName = $this->user->composeAndStoreDisplayName($part1, $part2);
$this->assertSame($expected, $displayName);
}
- public function testHandlePasswordExpiryWarningDefaultPolicy() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr, $notiMgr) =
- $this->getTestInstances();
+ public function testComposeAndStoreDisplayNameNoOverwrite(): void {
+ $displayName = 'Randall Flagg';
+ $this->config->expects($this->never())
+ ->method('setUserValue');
+ $this->config->expects($this->once())
+ ->method('getUserValue')
+ ->willReturn($displayName);
+
+ $this->userManager->expects($this->never())
+ ->method('get'); // Implicit: no triggerChange can be called
- $uid = 'alice';
- $dn = 'uid=alice';
+ $composedDisplayName = $this->user->composeAndStoreDisplayName($displayName);
+ $this->assertSame($composedDisplayName, $displayName);
+ }
+ public function testHandlePasswordExpiryWarningDefaultPolicy(): void {
$this->connection->expects($this->any())
->method('__get')
- ->will($this->returnCallback(function($name) {
- if($name === 'ldapDefaultPPolicyDN') {
+ ->willReturnCallback(function ($name) {
+ if ($name === 'ldapDefaultPPolicyDN') {
return 'cn=default,ou=policies,dc=foo,dc=bar';
}
- if($name === 'turnOnPasswordChange') {
+ if ($name === 'turnOnPasswordChange') {
return '1';
}
return $name;
- }));
+ });
$this->access->expects($this->any())
->method('search')
- ->will($this->returnCallback(function($filter, $base) {
- if($base === 'uid=alice') {
- return array(
- array(
- 'pwdchangedtime' => array((new \DateTime())->sub(new \DateInterval('P28D'))->format('Ymdhis').'Z'),
+ ->willReturnCallback(function ($filter, $base) {
+ if ($base === $this->dn) {
+ return [
+ [
+ 'pwdchangedtime' => [(new \DateTime())->sub(new \DateInterval('P28D'))->format('Ymdhis') . 'Z'],
'pwdgraceusetime' => [],
- ),
- );
+ ],
+ ];
}
- if($base === 'cn=default,ou=policies,dc=foo,dc=bar') {
- return array(
- array(
- 'pwdmaxage' => array('2592000'),
- 'pwdexpirewarning' => array('2591999'),
- ),
- );
+ if ($base === 'cn=default,ou=policies,dc=foo,dc=bar') {
+ return [
+ [
+ 'pwdmaxage' => ['2592000'],
+ 'pwdexpirewarning' => ['2591999'],
+ ],
+ ];
}
- return array();
- }));
+ return [];
+ });
$notification = $this->getMockBuilder(INotification::class)
->disableOriginalConstructor()
->getMock();
$notification->expects($this->any())
->method('setApp')
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$notification->expects($this->any())
->method('setUser')
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$notification->expects($this->any())
->method('setObject')
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$notification->expects($this->any())
->method('setDateTime')
- ->will($this->returnValue($notification));
- $notiMgr->expects($this->exactly(2))
+ ->willReturn($notification);
+
+ $this->notificationManager->expects($this->exactly(2))
->method('createNotification')
- ->will($this->returnValue($notification));
- $notiMgr->expects($this->exactly(1))
+ ->willReturn($notification);
+ $this->notificationManager->expects($this->exactly(1))
->method('notify');
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
\OC_Hook::clear();//disconnect irrelevant hooks
- \OCP\Util::connectHook('OC_User', 'post_login', $user, 'handlePasswordExpiry');
- \OC_Hook::emit('OC_User', 'post_login', array('uid' => $uid));
+ Util::connectHook('OC_User', 'post_login', $this->user, 'handlePasswordExpiry');
+ /** @noinspection PhpUnhandledExceptionInspection */
+ \OC_Hook::emit('OC_User', 'post_login', ['uid' => $this->uid]);
}
- public function testHandlePasswordExpiryWarningCustomPolicy() {
- list(, $config, $filesys, $image, $log, $avaMgr, , $userMgr, $notiMgr) =
- $this->getTestInstances();
-
- $uid = 'alice';
- $dn = 'uid=alice';
-
+ public function testHandlePasswordExpiryWarningCustomPolicy(): void {
$this->connection->expects($this->any())
->method('__get')
- ->will($this->returnCallback(function($name) {
- if($name === 'ldapDefaultPPolicyDN') {
+ ->willReturnCallback(function ($name) {
+ if ($name === 'ldapDefaultPPolicyDN') {
return 'cn=default,ou=policies,dc=foo,dc=bar';
}
- if($name === 'turnOnPasswordChange') {
+ if ($name === 'turnOnPasswordChange') {
return '1';
}
return $name;
- }));
+ });
$this->access->expects($this->any())
->method('search')
- ->will($this->returnCallback(function($filter, $base) {
- if($base === 'uid=alice') {
- return array(
- array(
- 'pwdpolicysubentry' => array('cn=custom,ou=policies,dc=foo,dc=bar'),
- 'pwdchangedtime' => array((new \DateTime())->sub(new \DateInterval('P28D'))->format('Ymdhis').'Z'),
+ ->willReturnCallback(function ($filter, $base) {
+ if ($base === $this->dn) {
+ return [
+ [
+ 'pwdpolicysubentry' => ['cn=custom,ou=policies,dc=foo,dc=bar'],
+ 'pwdchangedtime' => [(new \DateTime())->sub(new \DateInterval('P28D'))->format('Ymdhis') . 'Z'],
'pwdgraceusetime' => [],
- )
- );
+ ]
+ ];
}
- if($base === 'cn=custom,ou=policies,dc=foo,dc=bar') {
- return array(
- array(
- 'pwdmaxage' => array('2592000'),
- 'pwdexpirewarning' => array('2591999'),
- )
- );
+ if ($base === 'cn=custom,ou=policies,dc=foo,dc=bar') {
+ return [
+ [
+ 'pwdmaxage' => ['2592000'],
+ 'pwdexpirewarning' => ['2591999'],
+ ]
+ ];
}
- return array();
- }));
+ return [];
+ });
$notification = $this->getMockBuilder(INotification::class)
->disableOriginalConstructor()
->getMock();
$notification->expects($this->any())
->method('setApp')
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$notification->expects($this->any())
->method('setUser')
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$notification->expects($this->any())
->method('setObject')
- ->will($this->returnValue($notification));
+ ->willReturn($notification);
$notification->expects($this->any())
->method('setDateTime')
- ->will($this->returnValue($notification));
- $notiMgr->expects($this->exactly(2))
+ ->willReturn($notification);
+
+ $this->notificationManager->expects($this->exactly(2))
->method('createNotification')
- ->will($this->returnValue($notification));
- $notiMgr->expects($this->exactly(1))
+ ->willReturn($notification);
+ $this->notificationManager->expects($this->exactly(1))
->method('notify');
- $user = new User(
- $uid, $dn, $this->access, $config, $filesys, $image, $log, $avaMgr, $userMgr, $notiMgr);
-
- \OC_Hook::clear();//disconnect irrelevant hooks
- \OCP\Util::connectHook('OC_User', 'post_login', $user, 'handlePasswordExpiry');
- \OC_Hook::emit('OC_User', 'post_login', array('uid' => $uid));
+ \OC_Hook::clear();//disconnect irrelevant hooks
+ Util::connectHook('OC_User', 'post_login', $this->user, 'handlePasswordExpiry');
+ /** @noinspection PhpUnhandledExceptionInspection */
+ \OC_Hook::emit('OC_User', 'post_login', ['uid' => $this->uid]);
}
}