123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546 |
- <?php
- /**
- * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com>
- * This file is licensed under the Affero General Public License version 3 or
- * later.
- * See the COPYING-README file.
- */
- namespace Test\User;
- use OC\Hooks\PublicEmitter;
- /**
- * Class User
- *
- * @group DB
- *
- * @package Test\User
- */
- class User extends \Test\TestCase {
- public function testDisplayName() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\OC_User_Backend');
- $backend->expects($this->once())
- ->method('getDisplayName')
- ->with($this->equalTo('foo'))
- ->will($this->returnValue('Foo'));
- $backend->expects($this->any())
- ->method('implementsActions')
- ->with($this->equalTo(\OC_USER_BACKEND_GET_DISPLAYNAME))
- ->will($this->returnValue(true));
- $user = new \OC\User\User('foo', $backend);
- $this->assertEquals('Foo', $user->getDisplayName());
- }
- /**
- * if the display name contain whitespaces only, we expect the uid as result
- */
- public function testDisplayNameEmpty() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\OC_User_Backend');
- $backend->expects($this->once())
- ->method('getDisplayName')
- ->with($this->equalTo('foo'))
- ->will($this->returnValue(' '));
- $backend->expects($this->any())
- ->method('implementsActions')
- ->with($this->equalTo(\OC_USER_BACKEND_GET_DISPLAYNAME))
- ->will($this->returnValue(true));
- $user = new \OC\User\User('foo', $backend);
- $this->assertEquals('foo', $user->getDisplayName());
- }
- public function testDisplayNameNotSupported() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\OC_User_Backend');
- $backend->expects($this->never())
- ->method('getDisplayName');
- $backend->expects($this->any())
- ->method('implementsActions')
- ->with($this->equalTo(\OC_USER_BACKEND_GET_DISPLAYNAME))
- ->will($this->returnValue(false));
- $user = new \OC\User\User('foo', $backend);
- $this->assertEquals('foo', $user->getDisplayName());
- }
- public function testSetPassword() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\Test\Util\User\Dummy');
- $backend->expects($this->once())
- ->method('setPassword')
- ->with($this->equalTo('foo'), $this->equalTo('bar'));
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- if ($actions === \OC_USER_BACKEND_SET_PASSWORD) {
- return true;
- } else {
- return false;
- }
- }));
- $user = new \OC\User\User('foo', $backend);
- $this->assertTrue($user->setPassword('bar',''));
- }
- public function testSetPasswordNotSupported() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\Test\Util\User\Dummy');
- $backend->expects($this->never())
- ->method('setPassword');
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnValue(false));
- $user = new \OC\User\User('foo', $backend);
- $this->assertFalse($user->setPassword('bar',''));
- }
- public function testChangeAvatarSupportedYes() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- require_once 'avataruserdummy.php';
- $backend = $this->getMock('Avatar_User_Dummy');
- $backend->expects($this->once())
- ->method('canChangeAvatar')
- ->with($this->equalTo('foo'))
- ->will($this->returnValue(true));
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- if ($actions === \OC_USER_BACKEND_PROVIDE_AVATAR) {
- return true;
- } else {
- return false;
- }
- }));
- $user = new \OC\User\User('foo', $backend);
- $this->assertTrue($user->canChangeAvatar());
- }
- public function testChangeAvatarSupportedNo() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- require_once 'avataruserdummy.php';
- $backend = $this->getMock('Avatar_User_Dummy');
- $backend->expects($this->once())
- ->method('canChangeAvatar')
- ->with($this->equalTo('foo'))
- ->will($this->returnValue(false));
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- if ($actions === \OC_USER_BACKEND_PROVIDE_AVATAR) {
- return true;
- } else {
- return false;
- }
- }));
- $user = new \OC\User\User('foo', $backend);
- $this->assertFalse($user->canChangeAvatar());
- }
- public function testChangeAvatarNotSupported() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- require_once 'avataruserdummy.php';
- $backend = $this->getMock('Avatar_User_Dummy');
- $backend->expects($this->never())
- ->method('canChangeAvatar');
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- return false;
- }));
- $user = new \OC\User\User('foo', $backend);
- $this->assertTrue($user->canChangeAvatar());
- }
- public function testDelete() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\Test\Util\User\Dummy');
- $backend->expects($this->once())
- ->method('deleteUser')
- ->with($this->equalTo('foo'));
- $user = new \OC\User\User('foo', $backend);
- $this->assertTrue($user->delete());
- }
- public function testGetHome() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\Test\Util\User\Dummy');
- $backend->expects($this->once())
- ->method('getHome')
- ->with($this->equalTo('foo'))
- ->will($this->returnValue('/home/foo'));
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- if ($actions === \OC_USER_BACKEND_GET_HOME) {
- return true;
- } else {
- return false;
- }
- }));
- $user = new \OC\User\User('foo', $backend);
- $this->assertEquals('/home/foo', $user->getHome());
- }
- public function testGetBackendClassName() {
- $user = new \OC\User\User('foo', new \Test\Util\User\Dummy());
- $this->assertEquals('Dummy', $user->getBackendClassName());
- $user = new \OC\User\User('foo', new \OC_User_Database());
- $this->assertEquals('Database', $user->getBackendClassName());
- }
- public function testGetHomeNotSupported() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\Test\Util\User\Dummy');
- $backend->expects($this->never())
- ->method('getHome');
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnValue(false));
- $allConfig = $this->getMockBuilder('\OCP\IConfig')
- ->disableOriginalConstructor()
- ->getMock();
- $allConfig->expects($this->any())
- ->method('getUserValue')
- ->will($this->returnValue(true));
- $allConfig->expects($this->any())
- ->method('getSystemValue')
- ->with($this->equalTo('datadirectory'))
- ->will($this->returnValue('arbitrary/path'));
- $user = new \OC\User\User('foo', $backend, null, $allConfig);
- $this->assertEquals('arbitrary/path/foo', $user->getHome());
- }
- public function testCanChangePassword() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\Test\Util\User\Dummy');
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- if ($actions === \OC_USER_BACKEND_SET_PASSWORD) {
- return true;
- } else {
- return false;
- }
- }));
- $user = new \OC\User\User('foo', $backend);
- $this->assertTrue($user->canChangePassword());
- }
- public function testCanChangePasswordNotSupported() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\Test\Util\User\Dummy');
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnValue(false));
- $user = new \OC\User\User('foo', $backend);
- $this->assertFalse($user->canChangePassword());
- }
- public function testCanChangeDisplayName() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\Test\Util\User\Dummy');
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- if ($actions === \OC_USER_BACKEND_SET_DISPLAYNAME) {
- return true;
- } else {
- return false;
- }
- }));
- $user = new \OC\User\User('foo', $backend);
- $this->assertTrue($user->canChangeDisplayName());
- }
- public function testCanChangeDisplayNameNotSupported() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\Test\Util\User\Dummy');
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnValue(false));
- $user = new \OC\User\User('foo', $backend);
- $this->assertFalse($user->canChangeDisplayName());
- }
- public function testSetDisplayNameSupported() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\OC_User_Database');
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- if ($actions === \OC_USER_BACKEND_SET_DISPLAYNAME) {
- return true;
- } else {
- return false;
- }
- }));
- $backend->expects($this->once())
- ->method('setDisplayName')
- ->with('foo','Foo')
- ->willReturn(true);
- $user = new \OC\User\User('foo', $backend);
- $this->assertTrue($user->setDisplayName('Foo'));
- $this->assertEquals('Foo',$user->getDisplayName());
- }
- /**
- * don't allow display names containing whitespaces only
- */
- public function testSetDisplayNameEmpty() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\OC_User_Database');
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- if ($actions === \OC_USER_BACKEND_SET_DISPLAYNAME) {
- return true;
- } else {
- return false;
- }
- }));
- $user = new \OC\User\User('foo', $backend);
- $this->assertFalse($user->setDisplayName(' '));
- $this->assertEquals('foo',$user->getDisplayName());
- }
- public function testSetDisplayNameNotSupported() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\OC_User_Database');
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- return false;
- }));
- $backend->expects($this->never())
- ->method('setDisplayName');
- $user = new \OC\User\User('foo', $backend);
- $this->assertFalse($user->setDisplayName('Foo'));
- $this->assertEquals('foo',$user->getDisplayName());
- }
- public function testSetPasswordHooks() {
- $hooksCalled = 0;
- $test = $this;
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\Test\Util\User\Dummy');
- $backend->expects($this->once())
- ->method('setPassword');
- /**
- * @param \OC\User\User $user
- * @param string $password
- */
- $hook = function ($user, $password) use ($test, &$hooksCalled) {
- $hooksCalled++;
- $test->assertEquals('foo', $user->getUID());
- $test->assertEquals('bar', $password);
- };
- $emitter = new PublicEmitter();
- $emitter->listen('\OC\User', 'preSetPassword', $hook);
- $emitter->listen('\OC\User', 'postSetPassword', $hook);
- $backend->expects($this->any())
- ->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- if ($actions === \OC_USER_BACKEND_SET_PASSWORD) {
- return true;
- } else {
- return false;
- }
- }));
- $user = new \OC\User\User('foo', $backend, $emitter);
- $user->setPassword('bar','');
- $this->assertEquals(2, $hooksCalled);
- }
- public function dataDeleteHooks() {
- return [
- [true, 2],
- [false, 1],
- ];
- }
- /**
- * @dataProvider dataDeleteHooks
- * @param bool $result
- * @param int $expectedHooks
- */
- public function testDeleteHooks($result, $expectedHooks) {
- $hooksCalled = 0;
- $test = $this;
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\Test\Util\User\Dummy');
- $backend->expects($this->once())
- ->method('deleteUser')
- ->willReturn($result);
- $emitter = new PublicEmitter();
- $user = new \OC\User\User('foo', $backend, $emitter);
- /**
- * @param \OC\User\User $user
- */
- $hook = function ($user) use ($test, &$hooksCalled) {
- $hooksCalled++;
- $test->assertEquals('foo', $user->getUID());
- };
- $emitter->listen('\OC\User', 'preDelete', $hook);
- $emitter->listen('\OC\User', 'postDelete', $hook);
- $config = $this->getMockBuilder('OCP\IConfig')->getMock();
- $commentsManager = $this->getMockBuilder('OCP\Comments\ICommentsManager')->getMock();
- $notificationManager = $this->getMockBuilder('OCP\Notification\IManager')->getMock();
- if ($result) {
- $config->expects($this->once())
- ->method('deleteAllUserValues')
- ->with('foo');
- $commentsManager->expects($this->once())
- ->method('deleteReferencesOfActor')
- ->with('users', 'foo');
- $commentsManager->expects($this->once())
- ->method('deleteReadMarksFromUser')
- ->with($user);
- $notification = $this->getMockBuilder('OCP\Notification\INotification')->getMock();
- $notification->expects($this->once())
- ->method('setUser')
- ->with('foo');
- $notificationManager->expects($this->once())
- ->method('createNotification')
- ->willReturn($notification);
- $notificationManager->expects($this->once())
- ->method('markProcessed')
- ->with($notification);
- } else {
- $config->expects($this->never())
- ->method('deleteAllUserValues');
- $commentsManager->expects($this->never())
- ->method('deleteReferencesOfActor');
- $commentsManager->expects($this->never())
- ->method('deleteReadMarksFromUser');
- $notificationManager->expects($this->never())
- ->method('createNotification');
- $notificationManager->expects($this->never())
- ->method('markProcessed');
- }
- $this->overwriteService('NotificationManager', $notificationManager);
- $this->overwriteService('CommentsManager', $commentsManager);
- $this->overwriteService('AllConfig', $config);
- $this->assertSame($result, $user->delete());
- $this->restoreService('AllConfig');
- $this->restoreService('CommentsManager');
- $this->restoreService('NotificationManager');
-
- $this->assertEquals($expectedHooks, $hooksCalled);
- }
- public function testGetCloudId() {
- /**
- * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
- */
- $backend = $this->getMock('\Test\Util\User\Dummy');
- $urlGenerator = $this->getMockBuilder('\OC\URLGenerator')
- ->setMethods(['getAbsoluteURL'])
- ->disableOriginalConstructor()->getMock();
- $urlGenerator
- ->expects($this->any())
- ->method('getAbsoluteURL')
- ->withAnyParameters()
- ->willReturn('http://localhost:8888/owncloud');
- $user = new \OC\User\User('foo', $backend, null, null, $urlGenerator);
- $this->assertEquals("foo@localhost:8888/owncloud", $user->getCloudId());
- }
- }
|