diff options
author | Robin Appelman <icewind@owncloud.com> | 2012-04-13 22:52:06 +0200 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2012-04-14 10:43:28 +0200 |
commit | d8e54acbf3856b3917912a73481ffb482a1a25e8 (patch) | |
tree | 3e5f3c7acd9848eed8a1017d3c48baad02307ad8 | |
parent | 9ef34cd8316a456d29ae3871f70f098c3a141bd9 (diff) | |
download | nextcloud-server-d8e54acbf3856b3917912a73481ffb482a1a25e8.tar.gz nextcloud-server-d8e54acbf3856b3917912a73481ffb482a1a25e8.zip |
test cases for user backends
-rw-r--r-- | lib/user/dummy.php | 114 | ||||
-rw-r--r-- | tests/lib/user/backend.php | 89 | ||||
-rw-r--r-- | tests/lib/user/database.php | 45 | ||||
-rw-r--r-- | tests/lib/user/dummy.php | 27 |
4 files changed, 275 insertions, 0 deletions
diff --git a/lib/user/dummy.php b/lib/user/dummy.php new file mode 100644 index 00000000000..cfc96c5c52d --- /dev/null +++ b/lib/user/dummy.php @@ -0,0 +1,114 @@ +<?php + +/** +* ownCloud +* +* @author Frank Karlitschek +* @copyright 2010 Frank Karlitschek karlitschek@kde.org +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library 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 along with this library. If not, see <http://www.gnu.org/licenses/>. +* +*/ + +/** + * dummy user backend, does not keep state, only for testing use + */ +class OC_User_Dummy extends OC_User_Backend { + private $users=array(); + /** + * @brief Create a new user + * @param $uid The username of the user to create + * @param $password The password of the new user + * @returns true/false + * + * Creates a new user. Basic checking of username is done in OC_User + * itself, not in its subclasses. + */ + public function createUser($uid, $password){ + if(isset($this->users[$uid])){ + return false; + }else{ + $this->users[$uid]=$password; + return true; + } + } + + /** + * @brief delete a user + * @param $uid The username of the user to delete + * @returns true/false + * + * Deletes a user + */ + public function deleteUser( $uid ){ + if(isset($this->users[$uid])){ + unset($this->users[$uid]); + return true; + }else{ + return false; + } + } + + /** + * @brief Set password + * @param $uid The username + * @param $password The new password + * @returns true/false + * + * Change the password of a user + */ + public function setPassword($uid, $password){ + if(isset($this->users[$uid])){ + $this->users[$uid]=$password; + return true; + }else{ + return false; + } + } + + /** + * @brief Check if the password is correct + * @param $uid The username + * @param $password The password + * @returns true/false + * + * Check if the password is correct without logging in the user + */ + public function checkPassword($uid, $password){ + if(isset($this->users[$uid])){ + return ($this->users[$uid]==$password); + }else{ + return false; + } + } + + /** + * @brief Get a list of all users + * @returns array with all uids + * + * Get a list of all users. + */ + public function getUsers(){ + return array_keys($this->users); + } + + /** + * @brief check if a user exists + * @param string $uid the username + * @return boolean + */ + public function userExists($uid){ + return isset($this->users[$uid]); + } +} diff --git a/tests/lib/user/backend.php b/tests/lib/user/backend.php new file mode 100644 index 00000000000..5dab5afb186 --- /dev/null +++ b/tests/lib/user/backend.php @@ -0,0 +1,89 @@ +<?php +/** +* ownCloud +* +* @author Robin Appelman +* @copyright 2012 Robin Appelman icewind@owncloud.com +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library 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 along with this library. If not, see <http://www.gnu.org/licenses/>. +* +*/ + +abstract class Test_User_Backend extends UnitTestCase { + /** + * @var OC_User_Backend $backend + */ + protected $backend; + + /** + * get a new unique user name + * test cases can override this in order to clean up created user + * @return array + */ + public function getUser(){ + return uniqid('test_'); + } + + public function testAddRemove(){ + //get the number of groups we start with, in case there are exising groups + $startCount=count($this->backend->getUsers()); + + $name1=$this->getUser(); + $name2=$this->getUser(); + $this->backend->createUser($name1,''); + $count=count($this->backend->getUsers())-$startCount; + $this->assertEqual(1,$count); + $this->assertTrue((array_search($name1,$this->backend->getUsers())!==false)); + $this->assertFalse((array_search($name2,$this->backend->getUsers())!==false)); + $this->backend->createUser($name2,''); + $count=count($this->backend->getUsers())-$startCount; + $this->assertEqual(2,$count); + $this->assertTrue((array_search($name1,$this->backend->getUsers())!==false)); + $this->assertTrue((array_search($name2,$this->backend->getUsers())!==false)); + + $this->backend->deleteUser($name2); + $count=count($this->backend->getUsers())-$startCount; + $this->assertEqual(1,$count); + $this->assertTrue((array_search($name1,$this->backend->getUsers())!==false)); + $this->assertFalse((array_search($name2,$this->backend->getUsers())!==false)); + } + + public function testLogin(){ + $name1=$this->getUser(); + $name2=$this->getUser(); + + $this->assertFalse($this->backend->userExists($name1)); + $this->assertFalse($this->backend->userExists($name2)); + + $this->backend->createUser($name1,'pass1'); + $this->backend->createUser($name2,'pass2'); + + $this->assertTrue($this->backend->userExists($name1)); + $this->assertTrue($this->backend->userExists($name2)); + + $this->assertTrue($this->backend->checkPassword($name1,'pass1')); + $this->assertTrue($this->backend->checkPassword($name2,'pass2')); + + $this->assertFalse($this->backend->checkPassword($name1,'pass2')); + $this->assertFalse($this->backend->checkPassword($name2,'pass1')); + + $this->assertFalse($this->backend->checkPassword($name1,'dummy')); + $this->assertFalse($this->backend->checkPassword($name2,'foobar')); + + $this->backend->setPassword($name1,'newpass1'); + $this->assertFalse($this->backend->checkPassword($name1,'pass1')); + $this->assertTrue($this->backend->checkPassword($name1,'newpass1')); + $this->assertFalse($this->backend->checkPassword($name2,'newpass1')); + } +} diff --git a/tests/lib/user/database.php b/tests/lib/user/database.php new file mode 100644 index 00000000000..b2fcce93c5b --- /dev/null +++ b/tests/lib/user/database.php @@ -0,0 +1,45 @@ +<?php +/** +* ownCloud +* +* @author Robin Appelman +* @copyright 2012 Robin Appelman icewind@owncloud.com +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library 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 along with this library. If not, see <http://www.gnu.org/licenses/>. +* +*/ + +class Test_User_Database extends Test_User_Backend { + private $user=array(); + /** + * get a new unique user name + * test cases can override this in order to clean up created user + * @return array + */ + public function getUser(){ + $user=uniqid('test_'); + $this->users[]=$user; + return $user; + } + + public function setUp(){ + $this->backend=new OC_User_Dummy(); + } + + public function tearDown(){ + foreach($this->users as $user){ + $this->backend->deleteUser($user); + } + } +} diff --git a/tests/lib/user/dummy.php b/tests/lib/user/dummy.php new file mode 100644 index 00000000000..062f55ba079 --- /dev/null +++ b/tests/lib/user/dummy.php @@ -0,0 +1,27 @@ +<?php +/** +* ownCloud +* +* @author Robin Appelman +* @copyright 2012 Robin Appelman icewind@owncloud.com +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library 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 along with this library. If not, see <http://www.gnu.org/licenses/>. +* +*/ + +class Test_User_Dummy extends Test_User_Backend { + public function setUp(){ + $this->backend=new OC_User_Dummy(); + } +} |