123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949 |
- <?php
- /**
- * @copyright Copyright (c) 2016, ownCloud, Inc.
- *
- * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
- * @author Joas Schilling <coding@schilljs.com>
- * @author Morris Jobke <hey@morrisjobke.de>
- * @author Thomas Müller <thomas.mueller@tmit.eu>
- *
- * @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/>
- *
- */
- namespace OCA\User_LDAP\Tests\User;
- 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;
- /**
- * Class UserTest
- *
- * @group DB
- *
- * @package OCA\User_LDAP\Tests\User
- */
- class UserTest extends \Test\TestCase {
- 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);
- return array($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr);
- }
- private function getAdvancedMocks($cfMock, $fsMock, $logMock, $avaMgr, $dbc, $userMgr = null) {
- static $conMethods;
- static $accMethods;
- static $umMethods;
- if(is_null($conMethods) || is_null($accMethods)) {
- $conMethods = get_class_methods('\OCA\User_LDAP\Connection');
- $accMethods = get_class_methods('\OCA\User_LDAP\Access');
- //getConnection shall not be replaced
- unset($accMethods[array_search('getConnection', $accMethods)]);
- $umMethods = get_class_methods('\OCA\User_LDAP\User\Manager');
- }
- $lw = $this->createMock(ILDAPWrapper::class);
- $im = $this->createMock(Image::class);
- if (is_null($userMgr)) {
- $userMgr = $this->createMock(IUserManager::class);
- }
- $um = $this->getMockBuilder('\OCA\User_LDAP\User\Manager')
- ->setMethods($umMethods)
- ->setConstructorArgs([$cfMock, $fsMock, $logMock, $avaMgr, $im, $dbc, $userMgr])
- ->getMock();
- $helper = new \OCA\User_LDAP\Helper(\OC::$server->getConfig());
- $connector = $this->getMockBuilder('\OCA\User_LDAP\Connection')
- ->setMethods($conMethods)
- ->setConstructorArgs([$lw, null, null])
- ->getMock();
- $access = $this->getMockBuilder('\OCA\User_LDAP\Access')
- ->setMethods($accMethods)
- ->setConstructorArgs([$connector, $lw, $um, $helper])
- ->getMock();
- return array($access, $connector);
- }
- public function testGetDNandUsername() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $db, $userMgr) =
- $this->getTestInstances();
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $this->assertSame($dn, $user->getDN());
- $this->assertSame($uid, $user->getUsername());
- }
- public function testUpdateEmailProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc, $userMgr);
- $connection->expects($this->once())
- ->method('__get')
- ->with($this->equalTo('ldapEmailAttribute'))
- ->will($this->returnValue('email'));
- $access->expects($this->once())
- ->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
- $this->equalTo('email'))
- ->will($this->returnValue(array('alice@foo.bar')));
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $uuser = $this->getMockBuilder('\OCP\IUser')
- ->disableOriginalConstructor()
- ->getMock();
- $uuser->expects($this->once())
- ->method('setEMailAddress')
- ->with('alice@foo.bar');
- /** @var IUserManager | \PHPUnit_Framework_MockObject_MockObject $userMgr */
- $userMgr->expects($this->any())
- ->method('get')
- ->willReturn($uuser);
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->updateEmail();
- }
- public function testUpdateEmailNotProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $connection->expects($this->once())
- ->method('__get')
- ->with($this->equalTo('ldapEmailAttribute'))
- ->will($this->returnValue('email'));
- $access->expects($this->once())
- ->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
- $this->equalTo('email'))
- ->will($this->returnValue(false));
- $config->expects($this->never())
- ->method('setUserValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->updateEmail();
- }
- public function testUpdateEmailNotConfigured() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $connection->expects($this->once())
- ->method('__get')
- ->with($this->equalTo('ldapEmailAttribute'))
- ->will($this->returnValue(''));
- $access->expects($this->never())
- ->method('readAttribute');
- $config->expects($this->never())
- ->method('setUserValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->updateEmail();
- }
- public function testUpdateQuotaAllProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue('23 GB'));
- $connection->expects($this->at(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $connection->expects($this->exactly(2))
- ->method('__get');
- $access->expects($this->once())
- ->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
- $this->equalTo('myquota'))
- ->will($this->returnValue(array('42 GB')));
- $user = $this->createMock(IUser::class);
- $user->expects($this->once())
- ->method('setQuota')
- ->with('42 GB');
- $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, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->updateQuota();
- }
- public function testUpdateQuotaDefaultProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue('25 GB'));
- $connection->expects($this->at(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $connection->expects($this->exactly(2))
- ->method('__get');
- $access->expects($this->once())
- ->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
- $this->equalTo('myquota'))
- ->will($this->returnValue(false));
- $user = $this->createMock(IUser::class);
- $user->expects($this->once())
- ->method('setQuota')
- ->with('25 GB');
- $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, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->updateQuota();
- }
- public function testUpdateQuotaIndividualProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue(''));
- $connection->expects($this->at(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $connection->expects($this->exactly(2))
- ->method('__get');
- $access->expects($this->once())
- ->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
- $this->equalTo('myquota'))
- ->will($this->returnValue(array('27 GB')));
- $user = $this->createMock(IUser::class);
- $user->expects($this->once())
- ->method('setQuota')
- ->with('27 GB');
- $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, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->updateQuota();
- }
- public function testUpdateQuotaNoneProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue(''));
- $connection->expects($this->at(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue('myquota'));
- $connection->expects($this->exactly(2))
- ->method('__get');
- $access->expects($this->once())
- ->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
- $this->equalTo('myquota'))
- ->will($this->returnValue(false));
- $config->expects($this->never())
- ->method('setUserValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->updateQuota();
- }
- public function testUpdateQuotaNoneConfigured() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue(''));
- $connection->expects($this->at(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaAttribute'))
- ->will($this->returnValue(''));
- $connection->expects($this->exactly(2))
- ->method('__get');
- $access->expects($this->never())
- ->method('readAttribute');
- $config->expects($this->never())
- ->method('setUserValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->updateQuota();
- }
- public function testUpdateQuotaFromValue() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $readQuota = '19 GB';
- $connection->expects($this->at(0))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue(''));
- $connection->expects($this->once(1))
- ->method('__get')
- ->with($this->equalTo('ldapQuotaDefault'))
- ->will($this->returnValue(null));
- $access->expects($this->never())
- ->method('readAttribute');
- $user = $this->createMock(IUser::class);
- $user->expects($this->once())
- ->method('setQuota')
- ->with($readQuota);
- $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, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->updateQuota($readQuota);
- }
- //the testUpdateAvatar series also implicitely tests getAvatarImage
- public function testUpdateAvatarJpegPhotoProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $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())
- ->method('valid')
- ->will($this->returnValue(true));
- $image->expects($this->once())
- ->method('width')
- ->will($this->returnValue(128));
- $image->expects($this->once())
- ->method('height')
- ->will($this->returnValue(128));
- $image->expects($this->once())
- ->method('centerCrop')
- ->will($this->returnValue(true));
- $filesys->expects($this->once())
- ->method('isLoaded')
- ->will($this->returnValue(true));
- $avatar = $this->createMock(IAvatar::class);
- $avatar->expects($this->once())
- ->method('set')
- ->with($this->isInstanceOf($image));
- $avaMgr->expects($this->once())
- ->method('getAvatar')
- ->with($this->equalTo('alice'))
- ->will($this->returnValue($avatar));
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->updateAvatar();
- }
- public function testUpdateAvatarThumbnailPhotoProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $access->expects($this->at(0))
- ->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
- $this->equalTo('jpegPhoto'))
- ->will($this->returnValue(false));
- $access->expects($this->at(1))
- ->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
- $this->equalTo('thumbnailPhoto'))
- ->will($this->returnValue(array('this is a photo')));
- $access->expects($this->exactly(2))
- ->method('readAttribute');
- $image->expects($this->once())
- ->method('valid')
- ->will($this->returnValue(true));
- $image->expects($this->once())
- ->method('width')
- ->will($this->returnValue(128));
- $image->expects($this->once())
- ->method('height')
- ->will($this->returnValue(128));
- $image->expects($this->once())
- ->method('centerCrop')
- ->will($this->returnValue(true));
- $filesys->expects($this->once())
- ->method('isLoaded')
- ->will($this->returnValue(true));
- $avatar = $this->createMock(IAvatar::class);
- $avatar->expects($this->once())
- ->method('set')
- ->with($this->isInstanceOf($image));
- $avaMgr->expects($this->once())
- ->method('getAvatar')
- ->with($this->equalTo('alice'))
- ->will($this->returnValue($avatar));
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->updateAvatar();
- }
- public function testUpdateAvatarNotProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $access->expects($this->at(0))
- ->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
- $this->equalTo('jpegPhoto'))
- ->will($this->returnValue(false));
- $access->expects($this->at(1))
- ->method('readAttribute')
- ->with($this->equalTo('uid=alice,dc=foo,dc=bar'),
- $this->equalTo('thumbnailPhoto'))
- ->will($this->returnValue(false));
- $access->expects($this->exactly(2))
- ->method('readAttribute');
- $image->expects($this->never())
- ->method('valid');
- $image->expects($this->never())
- ->method('width');
- $image->expects($this->never())
- ->method('height');
- $image->expects($this->never())
- ->method('centerCrop');
- $filesys->expects($this->never())
- ->method('isLoaded');
- $avaMgr->expects($this->never())
- ->method('getAvatar');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->updateAvatar();
- }
- public function testUpdateBeforeFirstLogin() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $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))
- ->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())
- ->method('setUserValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->update();
- }
- public function testUpdateAfterFirstLogin() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $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))
- ->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));
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->update();
- }
- public function testUpdateNoRefresh() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $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()));
- $config->expects($this->exactly(2))
- ->method('getUserValue');
- $config->expects($this->never())
- ->method('setUserValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->update();
- }
- public function testMarkLogin() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $db, $userMgr) =
- $this->getTestInstances();
- $config->expects($this->once())
- ->method('setUserValue')
- ->with($this->equalTo('alice'),
- $this->equalTo('user_ldap'),
- $this->equalTo(User::USER_PREFKEY_FIRSTLOGIN),
- $this->equalTo(1))
- ->will($this->returnValue(true));
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->markLogin();
- }
- public function testGetAvatarImageProvided() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $db, $userMgr) =
- $this->getTestInstances();
- $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, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $photo = $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();
- }
- public function testProcessAttributes() {
- list(, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $uid = 'alice';
- $dn = 'uid=alice';
- $requiredMethods = array(
- 'markRefreshTime',
- 'updateQuota',
- 'updateEmail',
- 'composeAndStoreDisplayName',
- 'storeLDAPUserName',
- 'getHomePath',
- 'updateAvatar'
- );
- $userMock = $this->getMockBuilder('OCA\User_LDAP\User\User')
- ->setConstructorArgs(array($uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr))
- ->setMethods($requiredMethods)
- ->getMock();
- $connection->setConfiguration(array(
- 'homeFolderNamingRule' => 'homeDirectory'
- ));
- $connection->expects($this->any())
- ->method('__get')
- //->will($this->returnArgument(0));
- ->will($this->returnCallback(function($name) {
- if($name === 'homeFolderNamingRule') {
- return 'attr:homeDirectory';
- }
- return $name;
- }));
- $record = array(
- strtolower($connection->ldapQuotaAttribute) => array('4096'),
- strtolower($connection->ldapEmailAttribute) => array('alice@wonderland.org'),
- strtolower($connection->ldapUserDisplayName) => array('Aaaaalice'),
- 'uid' => array($uid),
- 'homedirectory' => array('Alice\'s Folder'),
- 'memberof' => array('cn=groupOne', 'cn=groupTwo'),
- 'jpegphoto' => array('here be an image')
- );
- foreach($requiredMethods as $method) {
- $userMock->expects($this->once())
- ->method($method);
- }
- $userMock->processAttributes($record);
- \OC_Hook::emit('OC_User', 'post_login', array('uid' => $uid));
- }
- public function emptyHomeFolderAttributeValueProvider() {
- return array(
- 'empty' => array(''),
- 'prefixOnly' => array('attr:'),
- );
- }
- /**
- * @dataProvider emptyHomeFolderAttributeValueProvider
- */
- public function testGetHomePathNotConfigured($attributeValue) {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $connection->expects($this->any())
- ->method('__get')
- ->with($this->equalTo('homeFolderNamingRule'))
- ->will($this->returnValue($attributeValue));
- $access->expects($this->never())
- ->method('readAttribute');
- $config->expects($this->never())
- ->method('getAppValue');
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $path = $user->getHomePath();
- $this->assertSame($path, false);
- }
- public function testGetHomePathConfiguredNotAvailableAllowed() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc);
- $connection->expects($this->any())
- ->method('__get')
- ->with($this->equalTo('homeFolderNamingRule'))
- ->will($this->returnValue('attr:foobar'));
- $access->expects($this->once())
- ->method('readAttribute')
- ->will($this->returnValue(false));
- // asks for "enforce_home_folder_naming_rule"
- $config->expects($this->once())
- ->method('getAppValue')
- ->will($this->returnValue(false));
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $path = $user->getHomePath();
- $this->assertSame($path, false);
- }
- /**
- * @expectedException \Exception
- */
- public function testGetHomePathConfiguredNotAvailableNotAllowed() {
- list($access, $config, $filesys, $image, $log, $avaMgr, $dbc, $userMgr) =
- $this->getTestInstances();
- list($access, $connection) =
- $this->getAdvancedMocks($config, $filesys, $log, $avaMgr, $dbc, $userMgr);
- $connection->expects($this->any())
- ->method('__get')
- ->with($this->equalTo('homeFolderNamingRule'))
- ->will($this->returnValue('attr:foobar'));
- $access->expects($this->once())
- ->method('readAttribute')
- ->will($this->returnValue(false));
- // asks for "enforce_home_folder_naming_rule"
- $config->expects($this->once())
- ->method('getAppValue')
- ->will($this->returnValue(true));
- $uid = 'alice';
- $dn = 'uid=alice,dc=foo,dc=bar';
- $user = new User(
- $uid, $dn, $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $user->getHomePath();
- }
- public function displayNameProvider() {
- return [
- ['Roland Deschain', '', 'Roland Deschain'],
- ['Roland Deschain', null, 'Roland Deschain'],
- ['Roland Deschain', 'gunslinger@darktower.com', 'Roland Deschain (gunslinger@darktower.com)'],
- ];
- }
- /**
- * @dataProvider displayNameProvider
- */
- public function testComposeAndStoreDisplayName($part1, $part2, $expected) {
- list($access, $config, $filesys, $image, $log, $avaMgr, , $userMgr) =
- $this->getTestInstances();
- $config->expects($this->once())
- ->method('setUserValue');
- $user = new User(
- 'user', 'cn=user', $access, $config, $filesys, $image, $log, $avaMgr, $userMgr);
- $displayName = $user->composeAndStoreDisplayName($part1, $part2);
- $this->assertSame($expected, $displayName);
- }
- }
|