summaryrefslogtreecommitdiffstats
path: root/tests/lib/user/user.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/user/user.php')
-rw-r--r--tests/lib/user/user.php319
1 files changed, 319 insertions, 0 deletions
diff --git a/tests/lib/user/user.php b/tests/lib/user/user.php
new file mode 100644
index 00000000000..ad03bd57483
--- /dev/null
+++ b/tests/lib/user/user.php
@@ -0,0 +1,319 @@
+<?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 extends \PHPUnit_Framework_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());
+ }
+
+ 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('\OC_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('\OC_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 testDelete() {
+ /**
+ * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
+ */
+ $backend = $this->getMock('\OC_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 testCheckPassword() {
+ /**
+ * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
+ */
+ $backend = $this->getMock('\OC_User_Dummy');
+ $backend->expects($this->once())
+ ->method('checkPassword')
+ ->with($this->equalTo('foo'), $this->equalTo('bar'))
+ ->will($this->returnValue(true));
+
+ $backend->expects($this->any())
+ ->method('implementsActions')
+ ->will($this->returnCallback(function ($actions) {
+ if ($actions === \OC_USER_BACKEND_CHECK_PASSWORD) {
+ return true;
+ } else {
+ return false;
+ }
+ }));
+
+ $user = new \OC\User\User('foo', $backend);
+ $this->assertTrue($user->checkPassword('bar'));
+ }
+
+ public function testCheckPasswordNotSupported() {
+ /**
+ * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
+ */
+ $backend = $this->getMock('\OC_User_Dummy');
+ $backend->expects($this->never())
+ ->method('checkPassword');
+
+ $backend->expects($this->any())
+ ->method('implementsActions')
+ ->will($this->returnValue(false));
+
+ $user = new \OC\User\User('foo', $backend);
+ $this->assertFalse($user->checkPassword('bar'));
+ }
+
+ public function testGetHome() {
+ /**
+ * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
+ */
+ $backend = $this->getMock('\OC_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 testGetHomeNotSupported() {
+ /**
+ * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
+ */
+ $backend = $this->getMock('\OC_User_Dummy');
+ $backend->expects($this->never())
+ ->method('getHome');
+
+ $backend->expects($this->any())
+ ->method('implementsActions')
+ ->will($this->returnValue(false));
+
+ $user = new \OC\User\User('foo', $backend);
+ $this->assertEquals(\OC_Config::getValue("datadirectory", \OC::$SERVERROOT . "/data") . '/foo', $user->getHome());
+ }
+
+ public function testCanChangePassword() {
+ /**
+ * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
+ */
+ $backend = $this->getMock('\OC_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('\OC_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('\OC_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('\OC_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 testSetPasswordHooks() {
+ $hooksCalled = 0;
+ $test = $this;
+
+ /**
+ * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
+ */
+ $backend = $this->getMock('\OC_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 testDeleteHooks() {
+ $hooksCalled = 0;
+ $test = $this;
+
+ /**
+ * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend
+ */
+ $backend = $this->getMock('\OC_User_Dummy');
+ $backend->expects($this->once())
+ ->method('deleteUser');
+
+ /**
+ * @param \OC\User\User $user
+ */
+ $hook = function ($user) use ($test, &$hooksCalled) {
+ $hooksCalled++;
+ $test->assertEquals('foo', $user->getUID());
+ };
+
+ $emitter = new PublicEmitter();
+ $emitter->listen('\OC\User', 'preDelete', $hook);
+ $emitter->listen('\OC\User', 'postDelete', $hook);
+
+ $user = new \OC\User\User('foo', $backend, $emitter);
+ $this->assertTrue($user->delete());
+ $this->assertEquals(2, $hooksCalled);
+ }
+}