test cases for user backends
This commit is contained in:
parent
9ef34cd831
commit
d8e54acbf3
|
@ -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]);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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'));
|
||||||
|
}
|
||||||
|
}
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue