From d98e23be1d8e6882a2f99d9823d70cb028b53455 Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel Date: Thu, 24 Sep 2009 10:01:51 +0200 Subject: [PATCH] Convert the package and the testsuite to using Horde_Injector. --- framework/Kolab_Server/lib/Horde/Kolab/Server.php | 56 +- .../lib/Horde/Kolab/Server/Factory.php | 129 +++++ .../Kolab_Server/lib/Horde/Kolab/Server/File.php | 8 +- .../Kolab_Server/lib/Horde/Kolab/Server/Ldap.php | 10 +- .../Kolab/{Test/Server.php => Server/Scenario.php} | 391 +++++++++----- .../lib/Horde/Kolab/Server/Structure.php | 31 -- .../Kolab_Server/lib/Horde/Kolab/Server/Test.php | 10 +- framework/Kolab_Server/package.xml | 9 +- .../test/Horde/Kolab/Server/AddingObjectsTest.php | 9 +- .../test/Horde/Kolab/Server/AdminTest.php | 63 ++- .../Horde/Kolab/Server/DistListHandlingTest.php | 16 +- .../test/Horde/Kolab/Server/GroupHandlingTest.php | 187 ++++--- .../test/Horde/Kolab/Server/GroupTest.php | 38 +- .../test/Horde/Kolab/Server/InetorgpersonTest.php | 273 +++++----- .../Server/KolabgermanbankarrangementTest.php | 157 +++--- .../Horde/Kolab/Server/KolabinetorgpersonTest.php | 397 +++++++------- .../Horde/Kolab/Server/Kolabpop3accountTest.php | 221 ++++---- .../test/Horde/Kolab/Server/LdapTest.php | 1 + .../test/Horde/Kolab/Server/ObjectTest.php | 2 +- .../test/Horde/Kolab/Server/OrgPersonTest.php | 155 +++--- .../test/Horde/Kolab/Server/PersonTest.php | 193 ++++--- .../test/Horde/Kolab/Server/ServerTest.php | 61 ++- .../test/Horde/Kolab/Server/TestTest.php | 584 ++++++++++----------- .../test/Horde/Kolab/Server/UserHandlingTest.php | 96 ++-- .../test/Horde/Kolab/Server/UserTest.php | 4 +- 25 files changed, 1639 insertions(+), 1462 deletions(-) create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/Factory.php rename framework/Kolab_Server/lib/Horde/Kolab/{Test/Server.php => Server/Scenario.php} (72%) diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server.php b/framework/Kolab_Server/lib/Horde/Kolab/Server.php index 25acdf42d..47f327d35 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server.php @@ -96,14 +96,10 @@ abstract class Horde_Kolab_Server * @param array $params Parameter array. */ public function __construct(Horde_Kolab_Server_Structure $structure, - Horde_Cache $cache = null, - Horde_Log_Logger $logger = null, $params = array()) { $structure->setServer($this); $this->structure = $structure; - $this->cache = $cache; - $this->logger = $logger; $this->params = $params; if (!isset($this->params['cache_lifetime'])) { @@ -114,38 +110,32 @@ abstract class Horde_Kolab_Server $this->uid = $params['uid']; } - // Initialize the search operations supported by this server. + /** Initialize the search operations supported by this server. */ $this->searches = $this->getSearchOperations(); } /** - * Attempts to return a concrete Horde_Kolab_Server instance based - * on $driver. + * Set the optional log handler. * - * @param mixed $driver The type of concrete Horde_Kolab_Server subclass to - * return. - * @param array $params A hash containing any additional - * configuration or connection parameters a subclass - * might need. + * @param Horde_Log_Logger $logger The log handler. * - * @return Horde_Kolab_Server The newly created concrete Horde_Kolab_Server - * instance. + * @return NULL + */ + public function setLogger(Horde_Log_Logger $logger) + { + $this->logger = $logger; + } + + /** + * Set the optional cache handler. + * + * @param Horde_Cache $cache The cache handler. * - * @throws Horde_Kolab_Server_Exception If the requested Horde_Kolab_Server - * subclass could not be found. + * @return NULL */ - static public function &factory($provider) + public function setCache(Horde_Cache $cache) { - $class = 'Horde_Kolab_Server_' . ucfirst(basename($provider->kolab_server_driver)); - if (class_exists($class)) { - $server = new $class($provider->kolab_server_structure, - isset($provider->cache) ? $provider->cache : null, - isset($provider->logger) ? $provider->logger : null, - $provider->kolab_server_params); - return $server; - } - throw new Horde_Kolab_Server_Exception( - 'Server type definition "' . $class . '" missing.'); + $this->cache = $cache; } /** @@ -228,7 +218,7 @@ abstract class Horde_Kolab_Server $provider->kolab_server_params = $params; - $tmp_server = &Horde_Kolab_Server::factory($provider); + $tmp_server = &Horde_Kolab_Server_Factory::getServer($provider); try { $uid = $tmp_server->uidForIdOrMail($params['user']); @@ -254,7 +244,7 @@ abstract class Horde_Kolab_Server $provider->kolab_server_params = $params; - $instances[$signature] = &Horde_Kolab_Server::factory($provider); + $instances[$signature] = &Horde_Kolab_Server_Factory::getServer($provider); } return $instances[$signature]; @@ -286,7 +276,7 @@ abstract class Horde_Kolab_Server function shutdown() { if (isset($this->attributes)) { - if (!empty($this->cache)) { + if (isset($this->cache)) { foreach ($this->attributes as $key => $value) { $this->cache->set('attributes_' . $key, @serialize($value)); } @@ -461,13 +451,13 @@ abstract class Horde_Kolab_Server public function &getAttributes($class) { if (!isset($this->attributes)) { - if (!empty($this->cache)) { + if (isset($this->cache)) { register_shutdown_function(array($this, 'shutdown')); } } if (empty($this->attributes[$class])) { - if (!empty($this->cache)) { + if (isset($this->cache)) { $this->attributes[$class] = @unserialize($cache->get('attributes_' . $class, $this->params['cache_lifetime'])); } @@ -488,7 +478,7 @@ abstract class Horde_Kolab_Server $classes[] = $childclass; if ($level == self::MAX_HIERARCHY) { - if (!empty($this->logger)) { + if (isset($this->logger)) { $logger->err(sprintf('The maximal level of the object hierarchy has been exceeded for class \"%s\"!', $class)); } diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Factory.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Factory.php new file mode 100644 index 000000000..ee9a41e35 --- /dev/null +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Factory.php @@ -0,0 +1,129 @@ + + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Kolab_Server + */ + +/** + * The Autoloader allows us to omit "require/include" statements. + */ +require_once 'Horde/Autoloader.php'; + +/** + * A factory for Kolab server objects. + * + * Copyright 2008-2009 The Horde Project (http://www.horde.org/) + * + * See the enclosed file COPYING for license information (LGPL). If you + * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. + * + * @category Kolab + * @package Kolab_Server + * @author Gunnar Wrobel + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Kolab_Server + */ +class Horde_Kolab_Server_Factory +{ + /** + * Attempts to return a concrete Horde_Kolab_Server instance. + * + * @param Horde_Injector $injector The object providing our dependencies. + * + * @return Horde_Kolab_Server The newly created concrete Horde_Kolab_Server + * instance. + * + * @throws Horde_Kolab_Server_Exception If the requested Horde_Kolab_Server + * subclass could not be found. + */ + static public function &getServer(Horde_Injector $injector) + { + $driver = 'Horde_Kolab_Server_Ldap'; + $params = array(); + + try { + $config = $injector->getInstance('Horde_Kolab_Server_Config'); + + if (isset($config->driver)) { + $driver = $config->driver; + } + if (isset($config->params)) { + $params = $config->params; + } + } catch (ReflectionException $e) { + } + + if (class_exists($driver)) { + $class = $driver; + } else { + $class = 'Horde_Kolab_Server_' . ucfirst(basename($driver)); + if (!class_exists($class)) { + throw new Horde_Kolab_Server_Exception('Server type definition "' . $class . '" missing.'); + } + } + + $server = new $class($injector->getInstance('Horde_Kolab_Server_Structure'), + $params); + + try { + $server->setCache($injector->getInstance('Horde_Kolab_Server_Cache')); + } catch (ReflectionException $e) { + } + + try { + $server->setLogger($injector->getInstance('Horde_Kolab_Server_Logger')); + } catch (ReflectionException $e) { + } + + return $server; + } + + /** + * Attempts to return a concrete Horde_Kolab_Server_Structure instance. + * + * @param Horde_Injector $injector The object providing our dependencies. + * + * @return Horde_Kolab_Server_Structure The newly created concrete + * Horde_Kolab_Server_Structure + * instance. + * + * @throws Horde_Kolab_Server_Exception If the requested + * Horde_Kolab_Server_Structure + * subclass could not be found. + */ + static public function &getStructure(Horde_Injector $injector) + { + $driver = 'Horde_Kolab_Server_Structure_Kolab'; + $params = array(); + + try { + $config = $injector->getInstance('Horde_Kolab_Server_Structure_Config'); + + if (isset($config->driver)) { + $driver = $config->driver; + } + if (isset($config->params)) { + $params = $config->params; + } + } catch (ReflectionException $e) { + } + + if (class_exists($driver)) { + $class = $driver; + } else { + $class = 'Horde_Kolab_Server_Structure_' . ucfirst(basename($driver)); + if (!class_exists($class)) { + throw new Horde_Kolab_Server_Exception('Structure type definition "' . $class . '" missing.'); + } + } + $structure = new $class($params); + return $structure; + } +} \ No newline at end of file diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/File.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/File.php index e1c990316..5cb63b7d0 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server/File.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/File.php @@ -42,8 +42,6 @@ class Horde_Kolab_Server_File extends Horde_Kolab_Server_Test * @param array $params Parameter array. */ public function __construct(Horde_Kolab_Server_Structure $structure, - Horde_Cache $cache = null, - Horde_Log_Logger $logger = null, $params = array()) { if (isset($params['file'])) { @@ -51,7 +49,7 @@ class Horde_Kolab_Server_File extends Horde_Kolab_Server_Test } else { throw new Horde_Kolab_Server_Exception('The file based driver requires a \'file\' parameter.'); } - parent::__construct($structure, $cache, $logger, $params); + parent::__construct($structure, $params); } @@ -69,7 +67,7 @@ class Horde_Kolab_Server_File extends Horde_Kolab_Server_Test $this->data = $data; } else { $error = error_get_last(); - if (!empty($this->logger)) { + if (isset($this->logger)) { $this->logger->warn(sprintf('Horde_Kolab_Server_file failed to read the database from %s. Error was: %s', $this->_file, $error['message'])); } @@ -89,7 +87,7 @@ class Horde_Kolab_Server_File extends Horde_Kolab_Server_Test $result = @file_put_contents($this->_file, $raw_data); if ($result === false) { $error = error_get_last(); - if (!empty($this->logger)) { + if (isset($this->logger)) { $this->logger->warn(sprintf('Horde_Kolab_Server_file failed to store the database in %s. Error was: %s', $this->_file, $error['message'])); } diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php index f3a41df85..c933c54c3 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php @@ -71,8 +71,6 @@ class Horde_Kolab_Server_Ldap extends Horde_Kolab_Server * @param array $params Parameter array. */ public function __construct(Horde_Kolab_Server_Structure $structure, - Horde_Cache $cache = null, - Horde_Log_Logger $logger = null, $params = array()) { if (!isset($params['charset'])) { @@ -101,7 +99,7 @@ class Horde_Kolab_Server_Ldap extends Horde_Kolab_Server $this->connect(); - parent::__construct($structure, $cache, $logger, $params); + parent::__construct($structure, $params); } @@ -264,7 +262,7 @@ class Horde_Kolab_Server_Ldap extends Horde_Kolab_Server Horde_Kolab_Server_Exception::SYSTEM); } } - if (!empty($this->logger)) { + if (isset($this->logger)) { $this->logger->debug(sprintf('The object \"%s\" has been successfully saved!', $uid)); } @@ -287,7 +285,7 @@ class Horde_Kolab_Server_Ldap extends Horde_Kolab_Server throw new Horde_Kolab_Server_Exception($result, Horde_Kolab_Server_Exception::SYSTEM); } - if (!empty($this->logger)) { + if (isset($this->logger)) { $this->logger(sprintf('The object \"%s\" has been successfully deleted!', $uid)); } @@ -313,7 +311,7 @@ class Horde_Kolab_Server_Ldap extends Horde_Kolab_Server throw new Horde_Kolab_Server_Exception($result, Horde_Kolab_Server_Exception::SYSTEM); } - if (!empty($this->logger)) { + if (isset($this->logger)) { $this->logger->debug(sprintf('The object \"%s\" has been successfully renamed to \"%s\"!', $uid, $new)); } diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Test/Server.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Scenario.php similarity index 72% rename from framework/Kolab_Server/lib/Horde/Kolab/Test/Server.php rename to framework/Kolab_Server/lib/Horde/Kolab/Server/Scenario.php index 358c2c31f..9a665a883 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Test/Server.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Scenario.php @@ -2,7 +2,6 @@ /** * Base for PHPUnit scenarios. * - * * PHP version 5 * * @category Kolab @@ -20,7 +19,6 @@ require_once 'Horde/Autoloader.php'; /** * Base for PHPUnit scenarios. * - * * Copyright 2008-2009 The Horde Project (http://www.horde.org/) * * See the enclosed file COPYING for license information (LGPL). If you @@ -32,8 +30,21 @@ require_once 'Horde/Autoloader.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Share */ -class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase +class Horde_Kolab_Server_Scenario extends PHPUnit_Extensions_Story_TestCase { + /** The mock environment */ + const ENVIRONMENT_MOCK = 'mock'; + + /** The real server environment */ + const ENVIRONMENT_REAL = 'real'; + + /** + * The environments we provide to the test. + * + * @var array + */ + protected $_environments; + /** * Uid of added objects. Should be removed on tearDown. * @@ -53,17 +64,26 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase public function runGiven(&$world, $action, $arguments) { switch($action) { - case 'an empty Kolab server': - $world['server'] = &$this->prepareEmptyKolabServer(); + case 'several injectors': + foreach ($this->getEnvironments() as $environment) { + $this->prepareInjector($environment); + } break; - case 'a basic Kolab server': - $world['server'] = &$this->prepareBasicKolabServer(); + case 'several Kolab servers': + foreach ($this->getEnvironments() as $environment) { + $this->prepareInjector($environment); + $this->prepareKolabServerConfiguration($environment); + $this->prepareKolabServer($environment); + } break; - case 'the Kolab auth driver has been selected': - $world['auth'] = &$this->prepareKolabAuthDriver(); + case 'the test environments': + $this->initializeEnvironments(); break; - case 'the current Kolab server': - $world['server'] = &$this->prepareCurrentKolabServer(); + case 'an empty Kolab server': + $world['server'] = $this->prepareKolabServer(self::ENVIRONMENT_MOCK); + break; + case 'a basic Kolab server': + $world['server'] = &$this->prepareBasicKolabServer($world); break; default: return $this->notImplemented($action); @@ -82,18 +102,12 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase public function runWhen(&$world, $action, $arguments) { switch($action) { - case 'logging in as a user with a password': - $world['login'] = $world['auth']->authenticate($arguments[0], - array('password' => $arguments[1])); - break; case 'adding a Kolab server object': - $result = $world['server']->add($arguments[0]); - $world['result']['add'] = $result; + $world['result']['add'] = $this->addToServers($arguments[0]); break; case 'adding an invalid Kolab server object': try { - $result = $world['server']->add($arguments[0]); - $world['result']['add'] = $result; + $world['result']['add'] = $this->addToServers($arguments[0]); } catch (Horde_Kolab_Server_Exception $e) { $world['result']['add'] = $e; } @@ -101,7 +115,7 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase case 'adding an object list': foreach ($arguments[0] as $object) { try { - $result = $world['server']->add($object); + $world['result']['add'][] = $this->addToServers($object); } catch (Horde_Kolab_Server_Exception $e) { $world['result']['add'] = $e; return; @@ -110,19 +124,23 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase $world['result']['add'] = true; break; case 'adding a distribution list': - $world['result']['add'] = $world['server']->add($this->provideDistributionList()); + $world['result']['add'] = $this->addToServers($this->provideDistributionList()); break; case 'listing all users': - $world['list'] = $world['server']->listObjects('Horde_Kolab_Server_Object_Kolab_User'); + $world['list'] = $this->listObjectsOnServer('Horde_Kolab_Server_Object_Kolab_User'); break; case 'listing all groups': - $world['list'] = $world['server']->listObjects('Horde_Kolab_Server_Object_Kolabgroupofnames'); + $world['list'] = $this->listObjectsOnServer('Horde_Kolab_Server_Object_Kolabgroupofnames'); break; case 'listing all objects of type': - $world['list'] = $world['server']->listObjects($arguments[0]); + $world['list'] = $this->listObjectsOnServer($arguments[0]); break; case 'retrieving a hash list with all objects of type': - $world['list'] = $world['server']->listHash($arguments[0]); + $world['list'] = array(); + foreach ($this->world['injector'] as $injector) { + $server = $injector->getInstance('Horde_Kolab_Server'); + $world['list'][] = $server->listHash($arguments[0]); + } break; default: return $this->notImplemented($action); @@ -145,13 +163,7 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase if (!isset($world['result'])) { $this->fail('Did not receive a result!'); } - foreach ($world['result'] as $result) { - if ($result instanceOf Horde_Kolab_Server_Exception) { - $this->assertEquals('', $result->getMessage()); - } else { - $this->assertEquals($arguments[0], get_class($result)); - } - } + $this->assertRecursiveType($world['result'], $arguments[0]); break; case 'the result indicates success.': if (!isset($world['result'])) { @@ -182,7 +194,7 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase if ($world['list'] instanceOf Horde_Kolab_Server_Exception) { $this->assertEquals('', $world['list']->getMessage()); } else { - $this->assertEquals(array(), $world['list']); + $this->assertEquals(array(array()), $world['list']); } break; case 'the list is an empty array': @@ -207,17 +219,19 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase } } $result_vals = array(); - foreach ($world['list'] as $result_element) { - if (isset($result_element[$arguments[1]])) { - $result_vals[] = $result_element[$arguments[1]]; - } else { - $this->fail(sprintf('The result element %s does have no value for %s.', - print_r($result_element, true), - print_r($arguments[1]))); + foreach ($world['list'] as $result_set) { + foreach ($result_set as $result_element) { + if (isset($result_element[$arguments[1]])) { + $result_vals[] = $result_element[$arguments[1]]; + } else { + $this->fail(sprintf('The result element %s does have no value for %s.', + print_r($result_element, true), + print_r($arguments[1]))); + } } + $this->assertEquals(array(), + array_diff($provided_vals, $result_vals)); } - $this->assertEquals(array(), - array_diff($provided_vals, $result_vals)); } break; case 'each element in the result list has an attribute': @@ -225,11 +239,13 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase $this->assertEquals('', $world['list']->getMessage()); } else { $result_vals = array(); - foreach ($world['list'] as $result_element) { - if (!isset($result_element[$arguments[0]])) { - $this->fail(sprintf('The result element %s does have no value for %s.', - print_r($result_element, true), - print_r($arguments[0]))); + foreach ($world['list'] as $result_set) { + foreach ($result_set as $result_element) { + if (!isset($result_element[$arguments[0]])) { + $this->fail(sprintf('The result element %s does have no value for %s.', + print_r($result_element, true), + print_r($arguments[0], true))); + } } } } @@ -239,17 +255,19 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase $this->assertEquals('', $world['list']->getMessage()); } else { $result_vals = array(); - foreach ($world['list'] as $result_element) { - if (!isset($result_element[$arguments[0]])) { - $this->fail(sprintf('The result element %s does have no value for %s.', - print_r($result_element, true), - print_r($arguments[0], true))); - } - if ($result_element[$arguments[0]] != $arguments[1]) { - $this->fail(sprintf('The result element %s has an unexpected value %s for %s.', - print_r($result_element, true), - print_r($result_element[$arguments[0]], true), - print_r($arguments[0], true))); + foreach ($world['list'] as $result_set) { + foreach ($result_set as $result_element) { + if (!isset($result_element[$arguments[0]])) { + $this->fail(sprintf('The result element %s does have no value for %s.', + print_r($result_element, true), + print_r($arguments[0], true))); + } + if ($result_element[$arguments[0]] != $arguments[1]) { + $this->fail(sprintf('The result element %s has an unexpected value %s for %s.', + print_r($result_element, true), + print_r($result_element[$arguments[0]], true), + print_r($arguments[0], true))); + } } } } @@ -266,105 +284,185 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase } } - /** - * Prepare an empty Kolab server. + * Identify the environments we want to run our tests in. * - * @return Horde_Kolab_Server The empty server. + * @return array The selected environments. */ - public function &prepareEmptyKolabServer($type = 'Test') + public function getEnvironments() { - global $conf; + if (empty($this->_environments)) { + /** The mock environment provides our basic test scenario */ + $this->_environments = array(self::ENVIRONMENT_MOCK); + $testing = getenv('KOLAB_TEST'); + if (!empty($testing)) { + $this->_environments[] = array(self::ENVIRONMENT_REAL); + } + } + return $this->_environments; + } - /** Prepare a Kolab test server */ - $conf['kolab']['server']['driver'] = $type; - $conf['kolab']['server']['params']['basedn'] = 'dc=example,dc=org'; - $conf['kolab']['server']['params']['hashtype'] = 'plain'; + /** + * Specifically set the environments we whish to support. + * + * @param array $environments The selected environments. + * + * @return NULL + */ + public function setEnvironments($environments) + { + $this->_environments = $environments; + } - if ($type == 'file') { - $conf['kolab']['server']['params']['file'] = Horde::getTempFile('fileTest'); + /** + * Initialize an environment for + * + * @param string $environment The name of the environment. + * + * @return NULL + */ + public function initializeEnvironments() + { + foreach ($this->getEnvironments() as $environment) { + $this->initializeEnvironment($environment); } + } - $server = Horde_Kolab_Server::singleton(); + /** + * Prepare an injector for the given environment. + * + * @param string $environment The name of the environment. + * + * @return NULL + */ + public function prepareInjector($environment) + { + if (!isset($this->world['injector'][$environment])) { + $this->world['injector'][$environment] = new Horde_Injector(new Horde_Injector_TopLevel()); + } + } - /** Ensure we don't use a connection from older tests */ - $server->clean(); + /** + * Prepare the server configuration for the given environment. + * + * @param string $environment The name of the environment. + * + * @return NULL + */ + public function prepareKolabServerConfiguration($environment) + { + switch ($environment) { + case self::ENVIRONMENT_MOCK: + /** Prepare a Kolab test server */ + $config = new stdClass; + $config->driver = 'test'; + $config->params = array( + 'basedn' => 'dc=example,dc=org', + 'hashtype' => 'plain' + ); + $this->world['injector'][$environment]->setInstance('Horde_Kolab_Server_Config', $config); + break; + default: + throw new Horde_Exception('Not implemented!'); + } + } - return $server; + /** + * Prepare the server for the given environment. + * + * @param string $environment The name of the environment. + * + * @return NULL + */ + public function prepareKolabServer($environment) + { + $this->world['injector'][$environment]->bindFactory('Horde_Kolab_Server_Structure', + 'Horde_Kolab_Server_Factory', + 'getStructure'); + $this->world['injector'][$environment]->bindFactory('Horde_Kolab_Server', + 'Horde_Kolab_Server_Factory', + 'getServer'); } /** - * Prepare a connection to a real LDAP server. + * Get a server from a specific environment. + * + * @param string $environment The name of the environment. * - * @return Horde_Kolab_Server The LDAP server connection. + * @return Horde_Kolab_Server The server. */ - public function &prepareLdapKolabServer() + public function getKolabServer($environment) { - $base = getenv('HORDE_BASE'); - if (!empty($base)) { - $config = $base . '/config/kolab.php'; - if (file_exists($config)) { - @include $config; - if (!empty($conf['kolab']['server']['params'])) { - $params = $conf['kolab']['server']['params']; - $params['driver'] = 'ldap'; - return Horde_Kolab_Server::singleton($params); - } - } - } - return false; + return $this->world['injector'][$environment]->getInstance('Horde_Kolab_Server'); } /** - * Provide different server types. + * Initialize the given environment. + * + * @param string $environment The name of the environment. * - * @return array The different server types. + * @return NULL */ - public function &provideServers() + public function initializeEnvironment($environment) { - $servers = array(); - /** - * We always use the test server - */ - $servers[] = array($this->prepareEmptyKolabServer()); - $real = $this->prepareLdapKolabServer(); - if (!empty($real)) { - $servers[] = array($real); - } - return $servers; + $this->prepareInjector($environment); + $this->prepareKolabServerConfiguration($environment); + $this->prepareKolabServer($environment); + } + + /** + * Shortcut to get a Kolab mock server. + * + * @return Horde_Kolab_Server The server. + */ + public function getKolabMockServer() + { + $this->initializeEnvironment(self::ENVIRONMENT_MOCK); + return $this->getKolabServer(self::ENVIRONMENT_MOCK); } /** - * Prepare the currently configured Kolab server. + * Retrieves the available servers. This assumes all environments have been + * initialied. * - * @return Horde_Kolab_Server The current server. + * @return array The list of test servers. */ - public function &prepareCurrentKolabServer() + public function getKolabServers() { - $server = Horde_Kolab_Server::singleton(); - return $server; + $servers = array(); + foreach ($this->getEnvironments() as $environment) { + $servers[] = $this->getKolabServer($environment); + } + return $servers; } /** - * Prepare a Kolab server with some basic entries. + * Add an object to the registered servers. + * + * @param array $object The object data to store. * - * @return Horde_Kolab_Server The empty server. + * @return array An array of objects. */ - public function &prepareBasicServer($type = 'Test') + public function addToServers($object) { - $server = $this->prepareEmptyKolabServer($type); - $this->prepareUsers($server); - return $server; + $result = array(); + foreach ($this->world['injector'] as $injector) { + $server = $injector->getInstance('Horde_Kolab_Server'); + $object = $server->add($object); + $result[] = $object; + $this->added[] = array($server, $object->getUid()); + } + return $result; } /** * Fill a Kolab Server with test users. * - * @param Kolab_Server &$server The server to populate. + * @param Horde_Kolab_Server &$server The server to fill. * - * @return Horde_Kolab_Server The empty server. + * @return NULL */ - public function prepareUsers(&$server) + public function addBasicUsersToServer(&$server) { $result = $server->add($this->provideBasicUserOne()); $this->assertNoError($result); @@ -387,16 +485,21 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase } /** - * Prepare a Kolab Auth Driver. + * List objects on the registered servers. * - * @return Auth The auth driver. + * @param array $type The type of objects to list. + * + * @return array An array of objects. */ - public function &prepareKolabAuthDriver() + public function listObjectsOnServer($type) { - include_once 'Horde/Auth.php'; - - $auth = Horde_Auth::singleton('kolab'); - return $auth; + $result = array(); + foreach ($this->world['injector'] as $injector) { + $server = $injector->getInstance('Horde_Kolab_Server'); + $objects = $server->listObjects($type); + $result[] = $objects; + } + return $result; } /** @@ -652,11 +755,6 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase ); } - public function provideServerTypes() - { - return array(array('test'), array('file')); - } - /** FIXME: Prefix the stuff bewlow with provide...() */ public function validUsers() @@ -753,6 +851,17 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase ); } + protected function fetchByCn($server, $cn) + { + $cn_result = $server->uidForCn($cn); + $this->assertNoError($cn_result); + + $object = $server->fetch($cn_result); + $this->assertNoError($object); + + return $object; + } + /** * Ensure that the variable contains no Horde_Kolab_Server_Exception and * fail if it does. @@ -798,17 +907,6 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase } } - protected function fetchByCn($server, $cn) - { - $cn_result = $server->uidForCn($cn); - $this->assertNoError($cn_result); - - $object = $server->fetch($cn_result); - $this->assertNoError($object); - - return $object; - } - /** * Assert that creating a new object operation yields some predictable * attribute results. @@ -923,6 +1021,21 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase } } + public function assertRecursiveType($results, $type) + { + if (is_array($results)) { + foreach ($results as $result) { + $this->assertRecursiveType($result, $type); + } + } else { + if ($results instanceOf Exception) { + $this->assertEquals('', $results->getMessage()); + } else { + $this->assertType($type, $results); + } + } + } + /** * Cleanup function. * diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure.php index 857e90e83..17c6fb917 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure.php @@ -62,37 +62,6 @@ abstract class Horde_Kolab_Server_Structure } /** - * Attempts to return a concrete Horde_Kolab_Server_Structure instance based - * on $driver. - * - * @param mixed $driver The type of concrete Horde_Kolab_Server - * subclass to return. - * @param Horde_Kolab_Server &$server A link to the server handler . - * @param array $params A hash containing any additional - * configuration or connection - * parameters a subclass might need. - * - * @return Horde_Kolab_Server_Structure The newly created concrete - * Horde_Kolab_Server_Structure instance. - * - * @throws Horde_Kolab_Server_Exception If the requested Horde_Kolab_Server_Structure - * subclass could not be found. - */ - static public function &factory($driver, $params = array()) - { - if (class_exists($driver)) { - $class = $driver; - } else { - $class = 'Horde_Kolab_Server_Structure_' . ucfirst(basename($driver)); - if (!class_exists($class)) { - throw new Horde_Kolab_Server_Exception('Structure type definition "' . $class . '" missing.'); - } - } - $structure = new $class($params); - return $structure; - } - - /** * Returns the set of objects supported by this structure. * * @return array An array of supported objects. diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Test.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Test.php index af8451f6e..c04e43722 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Test.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Test.php @@ -90,8 +90,6 @@ class Horde_Kolab_Server_Test extends Horde_Kolab_Server_Ldap * @param array $params Parameter array. */ public function __construct(Horde_Kolab_Server_Structure $structure, - Horde_Cache $cache = null, - Horde_Log_Logger $logger = null, $params = array()) { $this->load(); @@ -103,7 +101,7 @@ class Horde_Kolab_Server_Test extends Horde_Kolab_Server_Ldap } } - parent::__construct($structure, $cache, $logger, $params); + parent::__construct($structure, $params); if (isset($this->params['admin']) && isset($this->params['admin']['type'])) { @@ -598,7 +596,7 @@ class Horde_Kolab_Server_Test extends Horde_Kolab_Server_Ldap $this->store(); - if (!empty($this->logger)) { + if (isset($this->logger)) { $logger->debug(sprintf('The object \"%s\" has been successfully saved!', $uid)); } @@ -643,7 +641,7 @@ class Horde_Kolab_Server_Test extends Horde_Kolab_Server_Ldap $uid)); } $this->store(); - if (!empty($this->logger)) { + if (isset($this->logger)) { $logger->debug(sprintf('The object \"%s\" has been successfully deleted!', $uid)); } @@ -667,7 +665,7 @@ class Horde_Kolab_Server_Test extends Horde_Kolab_Server_Ldap unset($this->data[$uid]); } $this->store(); - if (!empty($this->logger)) { + if (isset($this->logger)) { $logger->debug(sprintf('The object \"%s\" has been successfully renamed to \"%s\"!', $uid, $new)); } diff --git a/framework/Kolab_Server/package.xml b/framework/Kolab_Server/package.xml index bd754e0cc..9798b2515 100644 --- a/framework/Kolab_Server/package.xml +++ b/framework/Kolab_Server/package.xml @@ -62,6 +62,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> + @@ -87,16 +88,13 @@ http://pear.php.net/dtd/package-2.0.xsd"> + - - - - @@ -174,8 +172,8 @@ http://pear.php.net/dtd/package-2.0.xsd"> - + @@ -197,6 +195,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> + diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/AddingObjectsTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/AddingObjectsTest.php index 718a922b8..d4f1544a4 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/AddingObjectsTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/AddingObjectsTest.php @@ -30,7 +30,7 @@ require_once 'Horde/Autoloader.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_AddingObjectsTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_AddingObjectsTest extends Horde_Kolab_Server_Scenario { /** * Test adding valid users. @@ -44,8 +44,11 @@ class Horde_Kolab_Server_AddingObjectsTest extends Horde_Kolab_Test_Server */ public function addingValidUser($user) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a Kolab server object', $user) - ->then('the result should be an object of type', 'Horde_Kolab_Server_Object_Kolab_User'); + ->then( + 'the result should be an object of type', + 'Horde_Kolab_Server_Object_Kolab_User' + ); } } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/AdminTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/AdminTest.php index 1943c763e..87c9fdca0 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/AdminTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/AdminTest.php @@ -30,7 +30,7 @@ require_once 'Horde/Autoloader.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_AdminTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_AdminTest extends Horde_Kolab_Server_Scenario { /** @@ -40,7 +40,7 @@ class Horde_Kolab_Server_AdminTest extends Horde_Kolab_Test_Server */ protected function setUp() { - $this->ldap = $this->prepareEmptyKolabServer(); + $this->server = $this->getKolabMockServer(); } /** @@ -50,9 +50,7 @@ class Horde_Kolab_Server_AdminTest extends Horde_Kolab_Test_Server */ private function _addValidAdmin() { - $admin = $this->provideBasicAdmin(); - $result = $this->ldap->add($admin); - $this->assertNoError($result); + $this->addToServers($this->provideBasicAdmin()); } /** @@ -63,10 +61,12 @@ class Horde_Kolab_Server_AdminTest extends Horde_Kolab_Test_Server public function testGenerateId() { $admin = $this->provideBasicAdmin(); - $this->assertNoError($admin); - $user = new Horde_Kolab_Server_Object_Kolab_Administrator($this->ldap, null, $admin); - $this->assertNoError($user); - $this->assertEquals('cn=The Administrator,dc=example,dc=org', $user->get(Horde_Kolab_Server_Object::ATTRIBUTE_UID)); + $user = new Horde_Kolab_Server_Object_Kolab_Administrator($this->server, + null, $admin); + $this->assertEquals( + 'cn=The Administrator,dc=example,dc=org', + $user->get(Horde_Kolab_Server_Object::ATTRIBUTE_UID) + ); } /** @@ -79,20 +79,25 @@ class Horde_Kolab_Server_AdminTest extends Horde_Kolab_Test_Server $this->_addValidAdmin(); $this->assertEquals(2, count($GLOBALS['KOLAB_SERVER_TEST_DATA'])); - $this->assertContains('cn=admin,cn=internal,dc=example,dc=org', - array_keys($GLOBALS['KOLAB_SERVER_TEST_DATA'])); + $this->assertContains( + 'cn=admin,cn=internal,dc=example,dc=org', + array_keys($GLOBALS['KOLAB_SERVER_TEST_DATA']) + ); + + $administrators = $this->server->getGroups( + 'cn=The Administrator,dc=example,dc=org' + ); + $admin_group = $this->server->fetch( + 'cn=admin,cn=internal,dc=example,dc=org' + ); - $administrators = $this->ldap->getGroups('cn=The Administrator,dc=example,dc=org'); - $this->assertNoError($administrators); - - $admin_group = $this->ldap->fetch('cn=admin,cn=internal,dc=example,dc=org'); - $this->assertNoError($admin_group); $this->assertTrue($admin_group->exists()); - $admin = $this->ldap->fetch('cn=The Administrator,dc=example,dc=org'); - $this->assertNoError($admin); - $this->assertEquals('Horde_Kolab_Server_Object_Kolab_Administrator', - get_class($admin)); + $admin = $this->server->fetch('cn=The Administrator,dc=example,dc=org'); + $this->assertEquals( + 'Horde_Kolab_Server_Object_Kolab_Administrator', + get_class($admin) + ); } /** @@ -104,11 +109,9 @@ class Horde_Kolab_Server_AdminTest extends Horde_Kolab_Test_Server { $this->_addValidAdmin(); - $admin = $this->ldap->fetch('cn=The Administrator,dc=example,dc=org'); - $this->assertNoError($admin); - - $hash = $admin->toHash(); - $this->assertNoError($hash); + $hash = $this->server->fetch( + 'cn=The Administrator,dc=example,dc=org' + )->toHash(); $this->assertContains('uid', array_keys($hash)); $this->assertContains('lnfn', array_keys($hash)); $this->assertEquals('admin', $hash['uid']); @@ -123,12 +126,14 @@ class Horde_Kolab_Server_AdminTest extends Horde_Kolab_Test_Server { $this->_addValidAdmin(); - $entries = $this->ldap->search('(&(cn=*)(objectClass=inetOrgPerson)(!(uid=manager))(sn=*))'); - $this->assertNoError($entries); + $entries = $this->server->search( + '(&(cn=*)(objectClass=inetOrgPerson)(!(uid=manager))(sn=*))' + ); $this->assertEquals(1, count($entries)); - $list = $this->ldap->listObjects('Horde_Kolab_Server_Object_Kolab_Administrator'); - $this->assertNoError($list); + $list = $this->server->listObjects( + 'Horde_Kolab_Server_Object_Kolab_Administrator' + ); $this->assertEquals(1, count($list)); } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/DistListHandlingTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/DistListHandlingTest.php index 0b114eec0..b7dc64503 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/DistListHandlingTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/DistListHandlingTest.php @@ -12,11 +12,9 @@ */ /** - * We need the base class + * The Autoloader allows us to omit "require/include" statements. */ -require_once 'Horde/Kolab/Test/Server.php'; - -require_once 'Horde/Kolab/Server.php'; +require_once 'Horde/Autoloader.php'; /** * Handling distribution lists. @@ -32,7 +30,7 @@ require_once 'Horde/Kolab/Server.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_DistListHandlingTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_DistListHandlingTest extends Horde_Kolab_Server_Scenario { /** @@ -44,10 +42,12 @@ class Horde_Kolab_Server_DistListHandlingTest extends Horde_Kolab_Test_Server */ public function creatingDistributionList() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a distribution list') - ->then('the result should be an object of type', - 'Horde_Kolab_Server_Object_Kolab_Distlist'); + ->then( + 'the result should be an object of type', + 'Horde_Kolab_Server_Object_Kolab_Distlist' + ); } } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/GroupHandlingTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/GroupHandlingTest.php index fe926f77c..c67b36503 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/GroupHandlingTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/GroupHandlingTest.php @@ -12,11 +12,9 @@ */ /** - * We need the base class + * The Autoloader allows us to omit "require/include" statements. */ -require_once 'Horde/Kolab/Test/Server.php'; - -require_once 'Horde/Kolab/Server.php'; +require_once 'Horde/Autoloader.php'; /** * Handling groups. @@ -32,7 +30,7 @@ require_once 'Horde/Kolab/Server.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Server_Scenario { /** * Test listing groups if there are no groups. @@ -43,9 +41,11 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function listingGroupsOnEmptyServer() { - $this->given('an empty Kolab server') - ->when('retrieving a hash list with all objects of type', - 'Horde_Kolab_Server_Object_Kolabgroupofnames') + $this->given('several Kolab servers') + ->when( + 'retrieving a hash list with all objects of type', + 'Horde_Kolab_Server_Object_Kolabgroupofnames' + ) ->then('the list is an empty array'); } @@ -61,13 +61,17 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function listingGroups($group_list) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding an object list', $group_list) - ->and('retrieving a hash list with all objects of type', - 'Horde_Kolab_Server_Object_Kolabgroupofnames') + ->and( + 'retrieving a hash list with all objects of type', + 'Horde_Kolab_Server_Object_Kolabgroupofnames' + ) ->then('the result indicates success.') - ->and('the list has a number of entries equal to', - count($group_list)); + ->and( + 'the list has a number of entries equal to', + count($group_list) + ); } /** @@ -82,12 +86,16 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function listingGroupsHasAttributeId($group_list) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding an object list', $group_list) - ->and('retrieving a hash list with all objects of type', - 'Horde_Kolab_Server_Object_Kolabgroupofnames') - ->then('the provided list and the result list match with regard to these attributes', - 'mail', 'cn', $group_list); + ->and( + 'retrieving a hash list with all objects of type', + 'Horde_Kolab_Server_Object_Kolabgroupofnames' + ) + ->then( + 'the provided list and the result list match with regard to these attributes', + 'mail', 'cn', $group_list + ); } /** @@ -102,12 +110,16 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function listingGroupsHasAttributeMail($group_list) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding an object list', $group_list) - ->and('retrieving a hash list with all objects of type', - 'Horde_Kolab_Server_Object_Kolabgroupofnames') - ->then('the provided list and the result list match with regard to these attributes', - 'mail', 'mail', $group_list); + ->and( + 'retrieving a hash list with all objects of type', + 'Horde_Kolab_Server_Object_Kolabgroupofnames' + ) + ->then( + 'the provided list and the result list match with regard to these attributes', + 'mail', 'mail', $group_list + ); } /** @@ -122,12 +134,16 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function listingGroupsHasAttributeVisibility($group_list) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding an object list', $group_list) - ->and('retrieving a hash list with all objects of type', - 'Horde_Kolab_Server_Object_Kolabgroupofnames') - ->then('each element in the result list has an attribute', - 'visible'); + ->and( + 'retrieving a hash list with all objects of type', + 'Horde_Kolab_Server_Object_Kolabgroupofnames' + ) + ->then( + 'each element in the result list has an attribute', + 'visible' + ); } /** @@ -139,10 +155,12 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function creatingGroupsWithoutMailAddressFails() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a group without a mail address') - ->then('the result should indicate an error with', - 'Adding object failed: The value for "mail" is missing!'); + ->then( + 'the result should indicate an error with', + 'Adding object failed: The value for "mail" is missing!' + ); } /** @@ -154,12 +172,16 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function creatingGroupWithoutVisibilityCreatesVisibleGroup() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding an object', $this->provideGroupWithoutMembers()) - ->and('retrieving a hash list with all objects of type', - 'Horde_Kolab_Server_Object_Kolabgroupofnames') - ->then('each element in the result list has an attribute set to a given value', - 'visible', true); + ->and( + 'retrieving a hash list with all objects of type', + 'Horde_Kolab_Server_Object_Kolabgroupofnames' + ) + ->then( + 'each element in the result list has an attribute set to a given value', + 'visible', true + ); } /** @@ -171,11 +193,13 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function modifyingGroupMailAddressIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a group with the mail address "test@example.org"') ->and('modifying the mail address to "new@example.org"') - ->then('the result should indicate an error with', - 'The group cannot be modified: Changing the mail address from "test@example.org" to "new@example.org" is not allowed!'); + ->then( + 'the result should indicate an error with', + 'The group cannot be modified: Changing the mail address from "test@example.org" to "new@example.org" is not allowed!' + ); } /** @@ -187,25 +211,30 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function conflictBetweenGroupMailAndUserMailIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a group with the mail address "test@example.org"') ->and('adding a user "Test Test" with the mail address "test@example.org"') - ->then('the result should indicate an error with', - 'The user cannot be added: Mail address "test@example.org" is already the mail address for the group "test@example.org"!'); + ->then( + 'the result should indicate an error with', + 'The user cannot be added: Mail address "test@example.org" is already the mail address for the group "test@example.org"!' + ); } /** + * * @scenario * * @return NULL */ public function conflictBetweenUserMailAndGroupMailIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user "Test Test" with the mail address "test@example.org"') ->and('adding a group with the mail address "test@example.org"') - ->then('the result should indicate an error with', - 'The group cannot be added: Mail address "test@example.org" is already the mail address of the user "Test Test"!'); + ->then( + 'the result should indicate an error with', + 'The group cannot be added: Mail address "test@example.org" is already the mail address of the user "Test Test"!' + ); } /** @@ -213,11 +242,13 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function conflictBetweenGroupMailAndUserAliasIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a group with the mail address "test@example.org"') ->and('adding a user with the alias address "test@example.org"') - ->then('the result should indicate an error with', - 'The user cannot be added: Alias address "test@example.org" is already the mail address of the group "test@example.org"!'); + ->then( + 'the result should indicate an error with', + 'The user cannot be added: Alias address "test@example.org" is already the mail address of the group "test@example.org"!' + ); } /** @@ -225,11 +256,13 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function conflictBetweenUserAliasAndGroupMailIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user "Test Test" with the alias address "test@example.org"') ->and('adding a group with the mail address "test@example.org"') - ->then('the result should indicate an error with', - 'The group cannot be added: Mail address "test@example.org" is already the alias address of the user "Test Test"!'); + ->then( + 'the result should indicate an error with', + 'The group cannot be added: Mail address "test@example.org" is already the alias address of the user "Test Test"!' + ); } /** @@ -239,7 +272,7 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function showGroupsWhenFetchingTheUser() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user "cn=Test Test" with the mail address "test@example.org"') ->and('adding a group with the mail address "testgroup@example.org" and the member "cn=Test Test"') ->and('fetching the user "test@example.org"') @@ -252,7 +285,7 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function allowAddingUserToGroup() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a group with the mail address "testgroup@example.org"') ->and('adding a user "cn=Test Test" with the mail address "test@example.org"') ->and('modifying group with the mail address "testgroup@example.org" to contain the member "cn=Test Test".') @@ -266,7 +299,7 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function allowAddingUserToGroupWhenCreatingUser() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a group with the mail address "testgroup@example.org"') ->and('adding a user "cn=Test Test" with the mail address "test@example.org" and member of "testgroup@example.org"') ->and('fetching the groups "group@example.org"') @@ -279,7 +312,7 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function allowRemovingUserFromGroup() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user "cn=Test Test" with the mail address "test@example.org"') ->and('adding a group with the mail address "testgroup@example.org" and the member "cn=Test Test"') ->and('modifying group with the mail address "testgroup@example.org" to contain no members.') @@ -293,7 +326,7 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function deletingUserRemovesUserFromAllDistributionLists() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user "cn=Test Test" with the mail address "test@example.org"') ->and('adding a group with the mail address "testgroup@example.org" and the member "cn=Test Test"') ->and('adding a group with the mail address "testgroup2@example.org" and the member "cn=Test Test"') @@ -309,7 +342,7 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function modifyingUserIDDoesNotChangeGroupMembership() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user "cn=Test Test" with the mail address "test@example.org"') ->and('adding a group with the mail address "testgroup@example.org" and the member "cn=Test Test"') ->and('modifying user "cn=Test Test" to ID "cn=Test2 Test"') @@ -322,10 +355,13 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function addingGroupInUndefinedDomainIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('the only served mail domain is "example.org"') ->when('adding a group with the mail address "test@doesnotexist.org"') - ->then('the result should indicate an error with', 'The group cannot be added: Domain "doesnotexist.org" is not being handled by this server!'); + ->then( + 'the result should indicate an error with', + 'The group cannot be added: Domain "doesnotexist.org" is not being handled by this server!' + ); } /** @@ -336,9 +372,12 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function disallowInvalidMailAddresses($address) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a group with an invalid mail address', $address) - ->then('the result should indicate an error with', "The group cannot be added: Address \"$address\" is not a valid mail address!"); + ->then( + 'the result should indicate an error with', + "The group cannot be added: Address \"$address\" is not a valid mail address!" + ); } /** @@ -346,7 +385,7 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function objectAttributeDescriptionsCanBeRetrieved() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('retrieving the supported attributes by the object type "group"') ->then('the result is an array of Horde attribute descriptions') ->and('contains the description of "members"'); @@ -357,10 +396,13 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function removingGroupFailsIfGroupDoesNotExist() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a group with the mail address "group@example.org"') ->and('deleting the group with the mail address "group@example.org"') - ->then('the result should indicate an error with', 'The group cannot be deleted: Group "group@example.org" does not exist!'); + ->then( + 'the result should indicate an error with', + 'The group cannot be deleted: Group "group@example.org" does not exist!' + ); } /** @@ -368,7 +410,7 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function removingGroupByMailSucceeds() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a group with the mail address "test@example.org"') ->and('deleting the group with mail address "test@example.org"') ->then('the result indicates success') @@ -382,10 +424,13 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function userUidsShouldNotResembleTheLocalPartOfMailAddresses() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a group with the mail address "test@example.org"') ->and('adding a user with the uid "test"') - ->then('the result should indicate an error with', 'The user cannot be added: The uid "test" matches the local part of the mail address "test@example.org" assigned to group "test@example.org"!'); + ->then( + 'the result should indicate an error with', + 'The user cannot be added: The uid "test" matches the local part of the mail address "test@example.org" assigned to group "test@example.org"!' + ); } /** @@ -395,7 +440,7 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function addedUserCanLoginIfInAllowedGroup() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('Horde uses the Kolab auth driver') ->and('only members of group "testgroup@example.org" are allowed') ->when('adding a user "cn=Test Test" with the mail address "test@example.org" and password "test"') @@ -412,7 +457,7 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function addedUserCannotLoginIfInNotInAllowedGroup() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('Horde uses the Kolab auth driver') ->and('only members of group "testgroup@example.org" are allowed') ->when('adding a user "cn=Test Test" with the mail address "test@example.org" and password "test"') @@ -428,7 +473,7 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function addedUserCanLoginIfInNotInDisallowedGroup() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('Horde uses the Kolab auth driver') ->and('members of group "testgroup@example.org" may not login') ->when('adding a user "cn=Test Test" with the mail address "test@example.org" and password "test"') @@ -445,7 +490,7 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server */ public function addedUserCannotLoginIfInDisallowedGroup() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('Horde uses the Kolab auth driver') ->and('members of group "testgroup@example.org" may not login') ->when('adding a user "cn=Test Test" with the mail address "test@example.org" and password "test"') diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/GroupTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/GroupTest.php index 6cbc3d096..619cf5a12 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/GroupTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/GroupTest.php @@ -30,7 +30,7 @@ require_once 'Horde/Autoloader.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_GroupTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_GroupTest extends Horde_Kolab_Server_Scenario { /** @@ -40,7 +40,7 @@ class Horde_Kolab_Server_GroupTest extends Horde_Kolab_Test_Server */ protected function setUp() { - $this->ldap = $this->prepareEmptyKolabServer(); + $this->ldap = $this->getKolabMockServer(); } /** @@ -65,9 +65,14 @@ class Horde_Kolab_Server_GroupTest extends Horde_Kolab_Test_Server public function testGenerateId() { $groups = $this->validGroups(); - $user = new Horde_Kolab_Server_Object_Kolabgroupofnames($this->ldap, null, $groups[0][0]); + $user = new Horde_Kolab_Server_Object_Kolabgroupofnames($this->ldap, + null, + $groups[0][0]); $this->assertNoError($user); - $this->assertEquals('cn=empty.group@example.org,dc=example,dc=org', $user->get(Horde_Kolab_Server_Object::ATTRIBUTE_UID)); + $this->assertEquals( + 'cn=empty.group@example.org,dc=example,dc=org', + $user->get(Horde_Kolab_Server_Object::ATTRIBUTE_UID) + ); } /** @@ -81,7 +86,10 @@ class Horde_Kolab_Server_GroupTest extends Horde_Kolab_Test_Server $group = $this->ldap->fetch('cn=empty.group@example.org,dc=example,dc=org'); $this->assertNoError($group); - $this->assertEquals('Horde_Kolab_Server_Object_Kolabgroupofnames', get_class($group)); + $this->assertEquals( + 'Horde_Kolab_Server_Object_Kolabgroupofnames', + get_class($group) + ); } /** @@ -115,20 +123,26 @@ class Horde_Kolab_Server_GroupTest extends Horde_Kolab_Test_Server { $this->assertEquals(0, count($GLOBALS['KOLAB_SERVER_TEST_DATA'])); - $result = $this->ldap->search('(&(!(cn=domains))(objectClass=kolabGroupOfNames))', - array(), - $this->ldap->getBaseUid()); + $result = $this->ldap->search( + '(&(!(cn=domains))(objectClass=kolabGroupOfNames))', + array(), + $this->ldap->getBaseUid() + ); $this->assertEquals(0, count($result)); $this->_addValidGroups(); $this->assertEquals(3, count($GLOBALS['KOLAB_SERVER_TEST_DATA'])); - $result = $this->ldap->search('(&(!(cn=domains))(objectClass=kolabGroupOfNames))', - array(), - $this->ldap->getBaseUid()); + $result = $this->ldap->search( + '(&(!(cn=domains))(objectClass=kolabGroupOfNames))', + array(), + $this->ldap->getBaseUid() + ); $this->assertEquals(3, count($result)); - $list = $this->ldap->listObjects('Horde_Kolab_Server_Object_Kolabgroupofnames'); + $list = $this->ldap->listObjects( + 'Horde_Kolab_Server_Object_Kolabgroupofnames' + ); $this->assertNoError($list); $this->assertEquals(3, count($list)); } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/InetorgpersonTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/InetorgpersonTest.php index 4797c75db..1b9cf2193 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/InetorgpersonTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/InetorgpersonTest.php @@ -30,7 +30,7 @@ require_once 'Horde/Autoloader.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_InetorgpersonTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_InetorgpersonTest extends Horde_Kolab_Server_Scenario { /** * Objects used within this test @@ -62,146 +62,133 @@ class Horde_Kolab_Server_InetorgpersonTest extends Horde_Kolab_Test_Server ); /** - * Provide different server types. + * Set up testing. * - * @return array The different server types. + * @return NULL */ - public function &provideServers() + protected function setUp() { - $servers = array(); - /** - * We always use the test server - */ - $servers[] = array($this->prepareEmptyKolabServer()); - if (false) { - $real = $this->prepareLdapKolabServer(); - if (!empty($real)) { - $servers[] = array($real); - } - } - return $servers; + $this->initializeEnvironments(); + $this->servers = $this->getKolabServers(); } /** * Test ID generation for a person. * - * @dataProvider provideServers - * * @return NULL */ - public function testGenerateId($server) + public function testGenerateId() { - $a = new Horde_Kolab_Server_Object_Inetorgperson($server, null, $this->objects[0]); - $this->assertContains('Frank Mustermann', - $a->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_UID)); + foreach ($this->servers as $server) { + $a = new Horde_Kolab_Server_Object_Inetorgperson($server, null, $this->objects[0]); + $this->assertContains('Frank Mustermann', + $a->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_UID)); + } } /** * Test adding an invalid person. * - * @dataProvider provideServers * @expectedException Horde_Kolab_Server_Exception * * @return NULL */ - public function testAddInvalidPerson($server) + public function testAddInvalidPerson() { - $result = $server->add($this->objects[1]); + $this->addToServers($this->objects[1]); } /** * Test a person with middle names. * - * @dataProvider provideServers - * * @return NULL */ - public function testHandlePersonWithMiddleNames($server) + public function testHandlePersonWithMiddleNames() { - $person = $this->assertAdd($server, $this->objects[2], - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => $this->objects[2][Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME], - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => $this->objects[2][Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES])); - - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Kolab_Server_InetorgpersonTest_123$123', - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => 'Kolab_Server_InetorgpersonTest_123$123'), - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Kolab_Server_InetorgpersonTest_123$123', - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => 'Kolab_Server_InetorgpersonTest_123$123')); - - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Kolab_Server_InetorgpersonTest_123$456', - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => ''), - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Kolab_Server_InetorgpersonTest_123$456', - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => '')); - - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => 'Kolab_Server_InetorgpersonTest_789'), - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Kolab_Server_InetorgpersonTest_123$456', - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => 'Kolab_Server_InetorgpersonTest_789')); - - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => '', - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => ''), - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => '', - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => '')); - - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => 'Kolab_Server_InetorgpersonTest_789'), - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => '', - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => 'Kolab_Server_InetorgpersonTest_789')); - - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Frank', - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => ''), - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Frank', - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => '')); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[2], + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => $this->objects[2][Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME], + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => $this->objects[2][Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES])); + + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Kolab_Server_InetorgpersonTest_123$123', + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => 'Kolab_Server_InetorgpersonTest_123$123'), + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Kolab_Server_InetorgpersonTest_123$123', + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => 'Kolab_Server_InetorgpersonTest_123$123')); + + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Kolab_Server_InetorgpersonTest_123$456', + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => ''), + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Kolab_Server_InetorgpersonTest_123$456', + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => '')); + + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => 'Kolab_Server_InetorgpersonTest_789'), + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Kolab_Server_InetorgpersonTest_123$456', + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => 'Kolab_Server_InetorgpersonTest_789')); + + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => '', + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => ''), + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => '', + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => '')); + + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => 'Kolab_Server_InetorgpersonTest_789'), + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => '', + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => 'Kolab_Server_InetorgpersonTest_789')); + + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Frank', + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => ''), + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => 'Frank', + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MIDDLENAMES => '')); + } } /** * Test handling labeled URIs. * - * @dataProvider provideServers - * * @return NULL */ - public function testHandleLabeledUris($server) + public function testHandleLabeledUris() { - $person = $this->assertAdd($server, $this->objects[0], - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => $this->objects[0][Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME], - Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array())); - - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array('a' => 'http://a.example.com', - 'b' => 'http://b.example.com')), - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array('a' => array('http://a.example.com'), - 'b' => array('http://b.example.com')))); - - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array('a' => 'http://a.example.com', - 'b' => 'http://b.example.com', - 'c' => 'http://c.example.com')), - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array('a' => array('http://a.example.com'), - 'b' => array('http://b.example.com'), - 'c' => array('http://c.example.com')))); - - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array()), - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array())); - - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array('a' => 'http://a.example.com')), - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array('a' => array('http://a.example.com')))); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[0], + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME => $this->objects[0][Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_GIVENNAME], + Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array())); + + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array('a' => 'http://a.example.com', + 'b' => 'http://b.example.com')), + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array('a' => array('http://a.example.com'), + 'b' => array('http://b.example.com')))); + + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array('a' => 'http://a.example.com', + 'b' => 'http://b.example.com', + 'c' => 'http://c.example.com')), + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array('a' => array('http://a.example.com'), + 'b' => array('http://b.example.com'), + 'c' => array('http://c.example.com')))); + + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array()), + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array())); + + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array('a' => 'http://a.example.com')), + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRARRAY_LABELEDURI => array('a' => array('http://a.example.com')))); + } } /** * Test handling the home postal address. * - * @dataProvider provideServers - * * @return NULL */ - public function testHandlingHomePostalAddress($server) + public function testHandlingHomePostalAddress() { //FIXME } @@ -209,55 +196,55 @@ class Horde_Kolab_Server_InetorgpersonTest extends Horde_Kolab_Test_Server /** * Test handling easy attributes. * - * @dataProvider provideServers - * * @return NULL */ - public function testEasyAttributes($server) + public function testEasyAttributes() { - $person = $this->assertAdd($server, $this->objects[0], - array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_SID => '')); - $this->assertEasyAttributes($person, $server, - array( - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_SID => array( - 'user', - '0', - 'somebody', - null, - '', - array('he', 'she'), - ), - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_ORGANIZATION => array( - 'them', - '0', - 'somebody', - null, - '', - array('they', 'we'), - ), - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_BUSINESSCATEGORY => array( - 'them', - '0', - 'somebody', - null, - '', - array('they', 'we'), - ), - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_HOMEPHONE => array( - '123456789', - '+1234567890', - array('1', '2'), - null, - '0' - ), - Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MOBILE => array( - '123456789', - '+1234567890', - array('1', '2'), - null, - '0' - ), - ) - ); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[0], + array(Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_SID => '')); + $this->assertEasyAttributes($person, $server, + array( + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_SID => array( + 'user', + '0', + 'somebody', + null, + '', + array('he', 'she'), + ), + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_ORGANIZATION => array( + 'them', + '0', + 'somebody', + null, + '', + array('they', 'we'), + ), + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_BUSINESSCATEGORY => array( + 'them', + '0', + 'somebody', + null, + '', + array('they', 'we'), + ), + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_HOMEPHONE => array( + '123456789', + '+1234567890', + array('1', '2'), + null, + '0' + ), + Horde_Kolab_Server_Object_Inetorgperson::ATTRIBUTE_MOBILE => array( + '123456789', + '+1234567890', + array('1', '2'), + null, + '0' + ), + ) + ); + } } } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/KolabgermanbankarrangementTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/KolabgermanbankarrangementTest.php index e987854c8..1a20167b8 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/KolabgermanbankarrangementTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/KolabgermanbankarrangementTest.php @@ -30,7 +30,7 @@ require_once 'Horde/Autoloader.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_KolabgermanbankarrangementTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_KolabgermanbankarrangementTest extends Horde_Kolab_Server_Scenario { /** * Objects used within this test @@ -54,132 +54,121 @@ class Horde_Kolab_Server_KolabgermanbankarrangementTest extends Horde_Kolab_Test ); /** - * Provide different server types. + * Set up testing. * - * @return array The different server types. + * @return NULL */ - public function &provideServers() + protected function setUp() { - $servers = array(); - /** - * We always use the test server - */ - $servers[] = array($this->prepareEmptyKolabServer()); - if (false) { - $real = $this->prepareLdapKolabServer(); - if (!empty($real)) { - $servers[] = array($real); - } - } - return $servers; + $this->initializeEnvironments(); + $this->servers = $this->getKolabServers(); } /** * Test ID generation for a person. * - * @dataProvider provideServers - * * @return NULL */ - public function testGenerateId($server) + public function testGenerateId() { - $person = $this->assertAdd($server, $this->objects[0], - array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); - $account_data = $this->objects[1]; - $account_data[Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_OWNERUID] = $person->getUid(); - $a = new Horde_Kolab_Server_Object_Kolabgermanbankarrangement($server, null, $account_data); - $this->assertContains(Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_NUMBER . '=' . $this->objects[1][Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_NUMBER], - $a->get(Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_UID)); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[0], + array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); + $account_data = $this->objects[1]; + $account_data[Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_OWNERUID] = $person->getUid(); + $a = new Horde_Kolab_Server_Object_Kolabgermanbankarrangement($server, null, $account_data); + $this->assertContains(Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_NUMBER . '=' . $this->objects[1][Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_NUMBER], + $a->get(Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_UID)); + } } /** * Test adding an invalid Account. * - * @dataProvider provideServers * @expectedException Horde_Kolab_Server_Exception * * @return NULL */ - public function testAddInvalidAccount($server) + public function testAddInvalidAccount() { - $result = $server->add($this->objects[1]); + $this->addToServers($this->objects[1]); } /** * Test handling easy attributes. * - * @dataProvider provideServers - * * @return NULL */ - public function testEasyAttributes($server) + public function testEasyAttributes() { - $person = $this->assertAdd($server, $this->objects[0], - array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); - $account_data = $this->objects[1]; - $account_data[Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_OWNERUID] = $person->getUid(); - $account = $this->assertAdd($server, $account_data, - array(Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_OWNERUID => $person->getUid())); - $this->assertEasyAttributes($account, $server, - array( - Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_HOLDER => array( - 'something', - 'somewhere', - null, - array('a', 'b'), - '', - ), - Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_BANKNAME => array( - 'something', - 'somewhere', - null, - array('a', 'b'), - '', - ), - Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_INFO => array( - 'something', - 'somewhere', - null, - array('a', 'b'), - '', - ), - ) - ); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[0], + array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); + $account_data = $this->objects[1]; + $account_data[Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_OWNERUID] = $person->getUid(); + $account = $this->assertAdd($server, $account_data, + array(Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_OWNERUID => $person->getUid())); + $this->assertEasyAttributes($account, $server, + array( + Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_HOLDER => array( + 'something', + 'somewhere', + null, + array('a', 'b'), + '', + ), + Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_BANKNAME => array( + 'something', + 'somewhere', + null, + array('a', 'b'), + '', + ), + Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_INFO => array( + 'something', + 'somewhere', + null, + array('a', 'b'), + '', + ), + ) + ); + } } /** * Test modifying the account number of an account. This should have an * effect on the UID of the object and needs to rename the object. * - * @dataProvider provideServers - * * @return NULL */ - public function testModifyAccountNumber($server) + public function testModifyAccountNumber() { - $person = $this->assertAdd($server, $this->objects[0], - array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); - $account_data = $this->objects[1]; - $account_data[Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_OWNERUID] = $person->getUid(); - $account = $server->add($account_data); - $this->assertNoError($account); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[0], + array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); + $account_data = $this->objects[1]; + $account_data[Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_OWNERUID] = $person->getUid(); + $account = $server->add($account_data); + $this->assertNoError($account); - $account = $server->fetch($account->getUid()); - $this->assertNoError($account); + $account = $server->fetch($account->getUid()); + $this->assertNoError($account); - $this->assertEquals($this->objects[1][Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_NUMBER], - $account->get(Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_NUMBER)); + $this->assertEquals($this->objects[1][Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_NUMBER], + $account->get(Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_NUMBER)); - $result = $account->save(array(Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_NUMBER => '66666666')); - $this->assertNoError($result); + $result = $account->save(array(Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_NUMBER => '66666666')); + $this->assertNoError($result); - $account = $server->fetch($account->getUid()); - $this->assertNoError($account); + $account = $server->fetch($account->getUid()); + $this->assertNoError($account); - $this->assertEquals($account->get(Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_NUMBER), - '66666666'); + $this->assertEquals($account->get(Horde_Kolab_Server_Object_Kolabgermanbankarrangement::ATTRIBUTE_NUMBER), + '66666666'); - $result = $server->delete($account->getUid()); - $this->assertNoError($result); + $result = $server->delete($account->getUid()); + $this->assertNoError($result); + } } } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/KolabinetorgpersonTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/KolabinetorgpersonTest.php index 2f3aba98d..cada6395e 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/KolabinetorgpersonTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/KolabinetorgpersonTest.php @@ -30,7 +30,7 @@ require_once 'Horde/Autoloader.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_KolabinetorgpersonTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_KolabinetorgpersonTest extends Horde_Kolab_Server_Scenario { /** * Objects used within this test @@ -54,251 +54,240 @@ class Horde_Kolab_Server_KolabinetorgpersonTest extends Horde_Kolab_Test_Server ); /** - * Provide different server types. + * Set up testing. * - * @return array The different server types. + * @return NULL */ - public function &provideServers() + protected function setUp() { - $servers = array(); - /** - * We always use the test server - */ - $servers[] = array($this->prepareEmptyKolabServer()); - if (false) { - $real = $this->prepareLdapKolabServer(); - if (!empty($real)) { - $servers[] = array($real); - } - } - return $servers; + $this->initializeEnvironments(); + $this->servers = $this->getKolabServers(); } /** * Test ID generation for a person. * - * @dataProvider provideServers - * * @return NULL */ - public function testGenerateId($server) + public function testGenerateId() { - $a = new Horde_Kolab_Server_Object_Kolabinetorgperson($server, null, $this->objects[0]); - $this->assertContains('Frank Mustermann', - $a->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_UID)); + foreach ($this->servers as $server) { + $a = new Horde_Kolab_Server_Object_Kolabinetorgperson($server, null, $this->objects[0]); + $this->assertContains('Frank Mustermann', + $a->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_UID)); + } } /** * Test adding an invalid person. * - * @dataProvider provideServers * @expectedException Horde_Kolab_Server_Exception * * @return NULL */ - public function testAddInvalidPerson($server) + public function testAddInvalidPerson() { - $result = $server->add($this->objects[1]); + $this->addToServers($this->objects[1]); } /** * Test handling easy attributes. * - * @dataProvider provideServers - * * @return NULL */ - public function testEasyAttributes($server) + public function testEasyAttributes() { - $person = $this->assertAdd($server, $this->objects[0], - array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); - $this->assertEasyAttributes($person, $server, - array( - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_GERMANTAXID => array( - '01234567890123456789', - '0', - '101', - null, - 'DE', - array('101', '202'), - ), - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_HOMESERVER => array( - 'a.b.c', - '', - 'jodeldodel', - null, - array('a.example.com', 'b.example.com'), - ), - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_QUOTA => array( - '100', - null, - array('0', '1000'), - ), - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_ALLOWEDRECIPIENTS => array( - '-a@example.com', - '', - array('a', 'b'), - null, - '0' - ), - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_ALLOWEDFROM => array( - '-a@example.com', - '', - array('a', 'b'), - null, - '0' - ), - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SALUTATION => array( - 'Herr', - 'Mrs.', - null, - array('Herr', 'Mrs.'), - '0' - ), - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_GENDER => array( - '1', - null, - '0', - '2', - ), - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_BIRTHNAME => array( - 'Adam', - null, - '', - '0', - ), - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_PLACEOFBIRTH => array( - 'Jotwede', - null, - '', - ), - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_COUNTRY => array( - 'DE', - 'SE', - null, - 'DE', - ), - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_COUNTRYCITIZENSHIP => array( - 'DE', - 'SE', - //FIXME: "null" does not work. Why? - //null, - 'DE', - ), - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_LEGALFORM => array( - 'GmbH', - 'Freelancer', - null, - 'Freelancer', - ), -// FIXME: Undefined in object class -/* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_REGISTEREDCAPITAL => array( */ -/* '1212121211', */ -/* '0', */ -/* null, */ -/* '' */ -/* ), */ + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[0], + array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); + $this->assertEasyAttributes($person, $server, + array( + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_GERMANTAXID => array( + '01234567890123456789', + '0', + '101', + null, + 'DE', + array('101', '202'), + ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_HOMESERVER => array( + 'a.b.c', + '', + 'jodeldodel', + null, + array('a.example.com', 'b.example.com'), + ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_QUOTA => array( + '100', + null, + array('0', '1000'), + ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_ALLOWEDRECIPIENTS => array( + '-a@example.com', + '', + array('a', 'b'), + null, + '0' + ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_ALLOWEDFROM => array( + '-a@example.com', + '', + array('a', 'b'), + null, + '0' + ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SALUTATION => array( + 'Herr', + 'Mrs.', + null, + array('Herr', 'Mrs.'), + '0' + ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_GENDER => array( + '1', + null, + '0', + '2', + ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_BIRTHNAME => array( + 'Adam', + null, + '', + '0', + ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_PLACEOFBIRTH => array( + 'Jotwede', + null, + '', + ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_COUNTRY => array( + 'DE', + 'SE', + null, + 'DE', + ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_COUNTRYCITIZENSHIP => array( + 'DE', + 'SE', + //FIXME: "null" does not work. Why? + //null, + 'DE', + ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_LEGALFORM => array( + 'GmbH', + 'Freelancer', + null, + 'Freelancer', + ), + // FIXME: Undefined in object class + /* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_REGISTEREDCAPITAL => array( */ + /* '1212121211', */ + /* '0', */ + /* null, */ + /* '' */ + /* ), */ -// FIXME: Undefined in object class -/* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_BYLAWURI => array( */ -/* 'something', */ -/* 'somewhere', */ -/* null, */ -/* array('a', 'b'), */ -/* '', */ -/* ), */ + // FIXME: Undefined in object class + /* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_BYLAWURI => array( */ + /* 'something', */ + /* 'somewhere', */ + /* null, */ + /* array('a', 'b'), */ + /* '', */ + /* ), */ -//FIXME: Alias support -/* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_DATEOFINCORPORATION => array( */ -/* '199911220707Z', */ -/* ), */ + //FIXME: Alias support + /* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_DATEOFINCORPORATION => array( */ + /* '199911220707Z', */ + /* ), */ -// FIXME: Undefined in object class -/* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_LEGALREPRESENTATIONPOLICY => array( */ -/* 'something', */ -/* 'somewhere', */ -/* null, */ -/* array('a', 'b'), */ -/* '', */ -/* ), */ + // FIXME: Undefined in object class + /* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_LEGALREPRESENTATIONPOLICY => array( */ + /* 'something', */ + /* 'somewhere', */ + /* null, */ + /* array('a', 'b'), */ + /* '', */ + /* ), */ - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_VATNUMBER => array( - 'something', - 'somewhere', - null, - array('a', 'b'), - ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_VATNUMBER => array( + 'something', + 'somewhere', + null, + array('a', 'b'), + ), -//FIXME: Undefined -/* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_OTHERLEGAL => array( */ -/* 'something', */ -/* 'somewhere', */ -/* null, */ -/* array('a', 'b'), */ -/* ), */ + //FIXME: Undefined + /* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_OTHERLEGAL => array( */ + /* 'something', */ + /* 'somewhere', */ + /* null, */ + /* array('a', 'b'), */ + /* ), */ -// FIXME: Undefined in object class -/* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_INLIQUIDATION => array( */ -/* 'TRUE', */ -/* 'FALSE', */ -/* null, */ -/* array('TRUE', 'FALSE'), */ -/* ), */ + // FIXME: Undefined in object class + /* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_INLIQUIDATION => array( */ + /* 'TRUE', */ + /* 'FALSE', */ + /* null, */ + /* array('TRUE', 'FALSE'), */ + /* ), */ -// FIXME: Undefined in object class -/* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_TRTYPE => array( */ -/* 'something', */ -/* 'somewhere', */ -/* null, */ -/* array('a', 'b'), */ -/* ), */ + // FIXME: Undefined in object class + /* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_TRTYPE => array( */ + /* 'something', */ + /* 'somewhere', */ + /* null, */ + /* array('a', 'b'), */ + /* ), */ - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_TRLOCATION => array( - 'something', - 'somewhere', - null, - 'somewhere', - ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_TRLOCATION => array( + 'something', + 'somewhere', + null, + 'somewhere', + ), - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_TRIDENTIFIER => array( - 'something', - 'somewhere', - null, - 'somewhere', - ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_TRIDENTIFIER => array( + 'something', + 'somewhere', + null, + 'somewhere', + ), -// FIXME: Undefined in object class -/* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_TRURI => array( */ -/* 'something', */ -/* 'somewhere', */ -/* null, */ -/* array('a', 'b'), */ -/* ), */ + // FIXME: Undefined in object class + /* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_TRURI => array( */ + /* 'something', */ + /* 'somewhere', */ + /* null, */ + /* array('a', 'b'), */ + /* ), */ -// FIXME: Undefined in object class -/* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_TRLASTCHANGED => array( */ -/* 'something', */ -/* 'somewhere', */ -/* null, */ -/* array('a', 'b'), */ -/* ), */ + // FIXME: Undefined in object class + /* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_TRLASTCHANGED => array( */ + /* 'something', */ + /* 'somewhere', */ + /* null, */ + /* array('a', 'b'), */ + /* ), */ -// FIXME: Undefined in object class -/* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_DC => array( */ -/* 'something', */ -/* 'somewhere', */ -/* null, */ -/* array('a', 'b'), */ -/* ), */ + // FIXME: Undefined in object class + /* Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_DC => array( */ + /* 'something', */ + /* 'somewhere', */ + /* null, */ + /* array('a', 'b'), */ + /* ), */ - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_ALIAS => array( - 'something', - 'somewhere', - null, - array('a', 'b'), - ), + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_ALIAS => array( + 'something', + 'somewhere', + null, + array('a', 'b'), + ), - ) - ); + ) + ); + } } } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Kolabpop3accountTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Kolabpop3accountTest.php index 2a3718537..da596047f 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/Kolabpop3accountTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Kolabpop3accountTest.php @@ -30,7 +30,7 @@ require_once 'Horde/Autoloader.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_Kolabpop3accountTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_Kolabpop3accountTest extends Horde_Kolab_Server_Scenario { /** * Objects used within this test @@ -56,165 +56,154 @@ class Horde_Kolab_Server_Kolabpop3accountTest extends Horde_Kolab_Test_Server ); /** - * Provide different server types. + * Set up testing. * - * @return array The different server types. + * @return NULL */ - public function &provideServers() + protected function setUp() { - $servers = array(); - /** - * We always use the test server - */ - $servers[] = array($this->prepareEmptyKolabServer()); - if (false) { - $real = $this->prepareLdapKolabServer(); - if (!empty($real)) { - $servers[] = array($real); - } - } - return $servers; + $this->initializeEnvironments(); + $this->servers = $this->getKolabServers(); } /** * Test ID generation for a person. * - * @dataProvider provideServers - * * @return NULL */ - public function testGenerateId($server) + public function testGenerateId() { - $person = $this->assertAdd($server, $this->objects[0], - array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); - $account_data = $this->objects[1]; - $account_data[Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_OWNERUID] = $person->getUid(); - $a = new Horde_Kolab_Server_Object_Kolabpop3account($server, null, $account_data); - $this->assertContains(Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_MAIL . '=' . $this->objects[1][Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_MAIL], - $a->get(Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_UID)); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[0], + array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); + $account_data = $this->objects[1]; + $account_data[Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_OWNERUID] = $person->getUid(); + $a = new Horde_Kolab_Server_Object_Kolabpop3account($server, null, $account_data); + $this->assertContains(Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_MAIL . '=' . $this->objects[1][Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_MAIL], + $a->get(Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_UID)); + } } /** * Test adding an invalid Account. * - * @dataProvider provideServers * @expectedException Horde_Kolab_Server_Exception * * @return NULL */ - public function testAddInvalidAccount($server) + public function testAddInvalidAccount() { - $result = $server->add($this->objects[1]); + $this->addToServers($this->objects[1]); } /** * Test handling easy attributes. * - * @dataProvider provideServers - * * @return NULL */ - public function testEasyAttributes($server) + public function testEasyAttributes() { - $person = $this->assertAdd($server, $this->objects[0], - array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); - $account_data = $this->objects[1]; - $account_data[Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_OWNERUID] = $person->getUid(); - $account = $this->assertAdd($server, $account_data, - array(Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_OWNERUID => $person->getUid())); - $this->assertEasyAttributes($account, $server, - array( - Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_PASSWORD => array( - 'something', - 'somewhere', - ), - Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_DESCRIPTION => array( - 'something', - 'somewhere', - null, - '', - ), - Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_SERVER => array( - 'something', - 'somewhere', - array('a', 'b'), - ), - Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_PORT => array( - '110', - '111', - null, - '', - ), - Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_USESSL => array( - 'TRUE', - 'FALSE', - null, - '', - ), - Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_USETLS => array( - 'TRUE', - 'FALSE', - null, - '', - ), - Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_LOGINMETHOD => array( - 'something', - 'somewhere', - null, - array('a', 'b'), - '', - ), - Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_CHECKCERTIFICATE => array( - 'TRUE', - 'FALSE', - null, - '', - ), - Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_KEEPMAILONSERVER => array( - 'TRUE', - 'FALSE', - null, - '', - ), - ) - ); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[0], + array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); + $account_data = $this->objects[1]; + $account_data[Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_OWNERUID] = $person->getUid(); + $account = $this->assertAdd($server, $account_data, + array(Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_OWNERUID => $person->getUid())); + $this->assertEasyAttributes($account, $server, + array( + Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_PASSWORD => array( + 'something', + 'somewhere', + ), + Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_DESCRIPTION => array( + 'something', + 'somewhere', + null, + '', + ), + Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_SERVER => array( + 'something', + 'somewhere', + array('a', 'b'), + ), + Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_PORT => array( + '110', + '111', + null, + '', + ), + Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_USESSL => array( + 'TRUE', + 'FALSE', + null, + '', + ), + Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_USETLS => array( + 'TRUE', + 'FALSE', + null, + '', + ), + Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_LOGINMETHOD => array( + 'something', + 'somewhere', + null, + array('a', 'b'), + '', + ), + Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_CHECKCERTIFICATE => array( + 'TRUE', + 'FALSE', + null, + '', + ), + Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_KEEPMAILONSERVER => array( + 'TRUE', + 'FALSE', + null, + '', + ), + ) + ); + } } /** * Test modifying the attributes required for the UID of the account. This * should lead to renaming object. * - * @dataProvider provideServers - * * @return NULL */ - public function testModifyUidElements($server) + public function testModifyUidElements() { - $person = $this->assertAdd($server, $this->objects[0], - array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); - $account_data = $this->objects[1]; - $account_data[Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_OWNERUID] = $person->getUid(); - $account = $server->add($account_data); - $this->assertNoError($account); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[0], + array(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SID => '')); + $account_data = $this->objects[1]; + $account_data[Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_OWNERUID] = $person->getUid(); + $account = $server->add($account_data); + $this->assertNoError($account); - $account = $server->fetch($account->getUid()); - $this->assertNoError($account); + $account = $server->fetch($account->getUid()); + $this->assertNoError($account); - $this->assertEquals($this->objects[1][Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_SERVER], - $account->get(Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_SERVER)); + $this->assertEquals($this->objects[1][Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_SERVER], + $account->get(Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_SERVER)); - $result = $account->save(array(Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_SERVER => 'pop3s.example.com')); - $this->assertNoError($result); + $result = $account->save(array(Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_SERVER => 'pop3s.example.com')); + $this->assertNoError($result); - $account = $server->fetch($account->getUid()); - $this->assertNoError($account); + $account = $server->fetch($account->getUid()); + $this->assertNoError($account); - $this->assertEquals($account->get(Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_SERVER), - 'pop3s.example.com'); + $this->assertEquals($account->get(Horde_Kolab_Server_Object_Kolabpop3account::ATTRIBUTE_SERVER), + 'pop3s.example.com'); - $this->assertContains('frank@example.com', $account->getUid()); + $this->assertContains('frank@example.com', $account->getUid()); - $result = $server->delete($account->getUid()); - $this->assertNoError($result); + $result = $server->delete($account->getUid()); + $this->assertNoError($result); + } } } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/LdapTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/LdapTest.php index 086e3b1ba..8ad44a463 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/LdapTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/LdapTest.php @@ -1,3 +1,4 @@ + prepareEmptyKolabServer()); - if (false) { - $real = $this->prepareLdapKolabServer(); - if (!empty($real)) { - $servers[] = array($real); - } - } - return $servers; + $this->initializeEnvironments(); + $this->servers = $this->getKolabServers(); } /** * Test ID generation for a person. * - * @dataProvider provideServers - * * @return NULL */ - public function testGenerateId($server) + public function testGenerateId() { - $a = new Horde_Kolab_Server_Object_Organizationalperson($server, null, $this->objects[0]); - $this->assertContains(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN . '=' . $this->objects[0][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN], - $a->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_UID)); + foreach ($this->servers as $server) { + $a = new Horde_Kolab_Server_Object_Organizationalperson($server, null, $this->objects[0]); + $this->assertContains(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN . '=' . $this->objects[0][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN], + $a->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_UID)); + } } /** * Test adding an invalid person. * - * @dataProvider provideServers * @expectedException Horde_Kolab_Server_Exception * * @return NULL */ - public function testAddInvalidPerson($server) + public function testAddInvalidPerson() { - $result = $server->add($this->objects[1]); + $this->addToServers($this->objects[1]); } /** * Test handling simple attributes. * - * @dataProvider provideServers - * * @return NULL */ - public function testSimpleAttributes($server) + public function testSimpleAttributes() { - $person = $this->assertAdd($server, $this->objects[0], - array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => '')); - $this->assertSimpleAttributes($person, $server, - array( - )); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[0], + array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => '')); + $this->assertSimpleAttributes($person, $server, + array( + )); + } } /** * Test handling the postal address. * - * @dataProvider provideServers - * * @return NULL */ - public function testHandlingAPostalAddress($server) + public function testHandlingAPostalAddress() { - $person = $this->assertAdd($server, $this->objects[0], - array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => 'Kolab_Server_OrgPersonTest_123$$ ')); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[0], + array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => 'Kolab_Server_OrgPersonTest_123$$ ')); - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_SN => 'Kolab_Server_OrgPersonTest_456'), - array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => array('Kolab_Server_OrgPersonTest_456$$ '))); + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_SN => 'Kolab_Server_OrgPersonTest_456'), + array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => array('Kolab_Server_OrgPersonTest_456$$ '))); - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_SN => 'Kolab_Server_OrgPersonTest_123', - Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => 'Street 1', - Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALCODE => '12345', - Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CITY => 'Nowhere'), - array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => array('Kolab_Server_OrgPersonTest_123$Street 1$12345 Nowhere'))); - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTOFFICEBOX => 'öäü/)(="§%$&§§$\'*', - Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => null), - array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => array('Kolab_Server_OrgPersonTest_123$öäü/)(="§%\24&§§\24\'*$12345 Nowhere'))); + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_SN => 'Kolab_Server_OrgPersonTest_123', + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => 'Street 1', + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALCODE => '12345', + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CITY => 'Nowhere'), + array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => array('Kolab_Server_OrgPersonTest_123$Street 1$12345 Nowhere'))); + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTOFFICEBOX => 'öäü/)(="§%$&§§$\'*', + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => null), + array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => array('Kolab_Server_OrgPersonTest_123$öäü/)(="§%\24&§§\24\'*$12345 Nowhere'))); - $this->assertStoreFetch($person, $server, - array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => null, - Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALCODE => null, - //FIXME: Why does this need a string? - Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => '', - Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTOFFICEBOX => null, - Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CITY => null), - array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => array('Kolab_Server_OrgPersonTest_123$$ '))); + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => null, + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALCODE => null, + //FIXME: Why does this need a string? + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => '', + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTOFFICEBOX => null, + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CITY => null), + array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS => array('Kolab_Server_OrgPersonTest_123$$ '))); + } } /** * Test handling easy attributes. * - * @dataProvider provideServers - * * @return NULL */ - public function testEasyAttributes($server) + public function testEasyAttributes() { - $person = $this->assertAdd($server, $this->objects[0], - array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => '')); - $this->assertEasyAttributes($person, $server, - array( - Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => array( - 'Teacher', - '0', - 'Something', - null, - '', - array('This', 'That'), - ), - Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_FAX => array( - '123456789', - '+1234567890', - array('1', '2'), - '0', - //FIXME: How to delete? - //null + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[0], + array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => '')); + $this->assertEasyAttributes($person, $server, + array( + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => array( + 'Teacher', + '0', + 'Something', + null, + '', + array('This', 'That'), + ), + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_FAX => array( + '123456789', + '+1234567890', + array('1', '2'), + '0', + //FIXME: How to delete? + //null + ) ) - ) - ); + ); + } } } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/PersonTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/PersonTest.php index 70ddc5959..dd4ad6a75 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/PersonTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/PersonTest.php @@ -30,7 +30,7 @@ require_once 'Horde/Autoloader.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_PersonTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_PersonTest extends Horde_Kolab_Server_Scenario { public $cn = 'Kolab_Server_PersonTest'; @@ -108,181 +108,170 @@ class Horde_Kolab_Server_PersonTest extends Horde_Kolab_Test_Server ); /** - * Provide different server types. + * Set up testing. * - * @return array The different server types. + * @return NULL */ - public function &provideServers() + protected function setUp() { - $servers = array(); - /** - * We always use the test server - */ - $servers[] = array($this->prepareEmptyKolabServer()); - if (false) { - $real = $this->prepareLdapKolabServer(); - if (!empty($real)) { - $servers[] = array($real); - } - } - return $servers; + $this->initializeEnvironments(); + $this->servers = $this->getKolabServers(); } /** * Test ID generation for a person. * - * @dataProvider provideServers - * * @return NULL */ - public function testGenerateId($server) + public function testGenerateId() { - $a = new Horde_Kolab_Server_Object_Person($server, null, $this->objects[0]); - $this->assertContains(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN . '=' . $this->objects[0][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN], - $a->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_UID)); + foreach ($this->servers as $server) { + $a = new Horde_Kolab_Server_Object_Person($server, null, $this->objects[0]); + $this->assertContains(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN . '=' . $this->objects[0][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN], + $a->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_UID)); + } } /** * Test adding an invalid person. * - * @dataProvider provideServers * @expectedException Horde_Kolab_Server_Exception * * @return NULL */ - public function testAddInvalidPerson($server) + public function testAddInvalidPerson() { - $result = $server->add($this->objects[1]); + $this->addToServers($this->objects[1]); } /** * Test adding a person. * - * @dataProvider provideServers - * * @return NULL */ - public function testAddPerson($server) + public function testAddPerson() { - $adds = array(0, 2, 3, 4); - foreach ($adds as $add) { - $result = $server->add($this->objects[$add]); - $this->assertNoError($result); - $cn_result = $server->uidForCn($this->objects[$add][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); - $this->assertNoError($cn_result); - $dn_parts = Net_LDAP2_Util::ldap_explode_dn($cn_result, array('casefold' => 'lower')); - $dnpart = Net_LDAP2_Util::unescape_dn_value($dn_parts[0]); - /** - * FIXME: I currently do not really understand why the forward slash - * is not correctly converted back but I lack the time to analyse it - * in detail. The server entry looks okay. - */ - $dnpart = str_replace('\/', '/', $dnpart); - $this->assertContains(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN . '=' . $this->objects[$add][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN], - $dnpart[0]); - $result = $server->delete($cn_result); - $this->assertNoError($result); - $cn_result = $server->uidForCn($this->objects[$add][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); - $this->assertNoError($cn_result); - $this->assertFalse($server->uidForCn($this->objects[$add][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN])); + foreach ($this->servers as $server) { + $adds = array(0, 2, 3, 4); + foreach ($adds as $add) { + $result = $server->add($this->objects[$add]); + $this->assertNoError($result); + $cn_result = $server->uidForCn($this->objects[$add][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); + $this->assertNoError($cn_result); + $dn_parts = Net_LDAP2_Util::ldap_explode_dn($cn_result, array('casefold' => 'lower')); + $dnpart = Net_LDAP2_Util::unescape_dn_value($dn_parts[0]); + /** + * FIXME: I currently do not really understand why the forward slash + * is not correctly converted back but I lack the time to analyse it + * in detail. The server entry looks okay. + */ + $dnpart = str_replace('\/', '/', $dnpart); + $this->assertContains(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN . '=' . $this->objects[$add][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN], + $dnpart[0]); + $result = $server->delete($cn_result); + $this->assertNoError($result); + $cn_result = $server->uidForCn($this->objects[$add][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); + $this->assertNoError($cn_result); + $this->assertFalse($server->uidForCn($this->objects[$add][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN])); + } } } /** * Test modifying the surname of a person. * - * @dataProvider provideServers - * * @return NULL */ - public function testModifyPersonSn($server) + public function testModifyPersonSn() { - $person = $this->assertAdd($server, $this->objects[2], - array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN => $this->objects[2][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN])); - $this->assertSimpleSequence($person, $server, - Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN, - array('modified', 'modified_again'), true); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[2], + array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN => $this->objects[2][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN])); + $this->assertSimpleSequence($person, $server, + Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN, + array('modified', 'modified_again'), true); + } } /** * Test modifying the cn of a person. This should have an effect on the UID * of the object and needs to rename the object. * - * @dataProvider provideServers - * * @return NULL */ - public function testModifyPersonCn($server) + public function testModifyPersonCn() { - $person = $server->add($this->objects[2]); - $this->assertNoError($person); + foreach ($this->servers as $server) { + $person = $server->add($this->objects[2]); + $this->assertNoError($person); - $person = $server->fetch($person->getUid()); + $person = $server->fetch($person->getUid()); - $this->assertEquals($this->objects[2][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN], - $person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN)); + $this->assertEquals($this->objects[2][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN], + $person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN)); - $result = $person->save(array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN => 'Kolab_Server_PersonTest_äö')); - $cn_result = $server->uidForCn('Kolab_Server_PersonTest_äö'); - $person = $server->fetch($cn_result); - $this->assertEquals($person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN), - 'Kolab_Server_PersonTest_äö'); - $result = $server->delete($cn_result); - $this->assertNoError($result); - $cn_result = $server->uidForCn('Kolab_Server_PersonTest_äö'); - $this->assertNoError($cn_result); - $this->assertFalse($cn_result); + $result = $person->save(array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN => 'Kolab_Server_PersonTest_äö')); + $cn_result = $server->uidForCn('Kolab_Server_PersonTest_äö'); + $person = $server->fetch($cn_result); + $this->assertEquals($person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN), + 'Kolab_Server_PersonTest_äö'); + $result = $server->delete($cn_result); + $this->assertNoError($result); + $cn_result = $server->uidForCn('Kolab_Server_PersonTest_äö'); + $this->assertNoError($cn_result); + $this->assertFalse($cn_result); + } } /** * Test adding a person with two common names. * - * @dataProvider provideServers - * * @return NULL */ - public function testAddDoubleCnPerson($server) + public function testAddDoubleCnPerson() { - $person = $this->assertAdd($server, $this->objects[5], - array()); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[5], + array()); - $cn_result = $server->uidForCn($this->objects[5][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN][0]); - $this->assertNoError($cn_result); - $dn_parts = Net_LDAP2_Util::ldap_explode_dn($cn_result, array('casefold' => 'lower')); - $dnpart = Net_LDAP2_Util::unescape_dn_value($dn_parts[0]); - $this->assertContains(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN . '=' . $this->objects[5][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN][0], - $dnpart[0]); + $cn_result = $server->uidForCn($this->objects[5][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN][0]); + $this->assertNoError($cn_result); + $dn_parts = Net_LDAP2_Util::ldap_explode_dn($cn_result, array('casefold' => 'lower')); + $dnpart = Net_LDAP2_Util::unescape_dn_value($dn_parts[0]); + $this->assertContains(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN . '=' . $this->objects[5][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN][0], + $dnpart[0]); + } } /** * Test handling a phone number. * - * @dataProvider provideServers - * * @return NULL */ - public function testHandlingAPhoneNumaber($server) + public function testHandlingAPhoneNumaber() { - $person = $this->assertAdd($server, $this->objects[7], - array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO => '')); - $this->assertSimpleSequence($person, $server, - Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO, - array('123456789', '+1234567890', array('1', '2'), null, '0'), true); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[7], + array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO => '')); + $this->assertSimpleSequence($person, $server, + Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO, + array('123456789', '+1234567890', array('1', '2'), null, '0'), true); + } } /** * Test retrrieving a date. * - * @dataProvider provideServers - * * @return NULL */ - public function testGetDate($server) + public function testGetDate() { - $person = $this->assertAdd($server, $this->objects[8], - array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO => '')); - $cdate = $person->get(Horde_Kolab_Server_Object_Person::ATTRDATE_CREATIONDATE); - $this->assertEquals('Horde_Date', get_class($cdate)); - $this->assertEquals('1910-08-03 01:00:00', (string) $cdate); + foreach ($this->servers as $server) { + $person = $this->assertAdd($server, $this->objects[8], + array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO => '')); + $cdate = $person->get(Horde_Kolab_Server_Object_Person::ATTRDATE_CREATIONDATE); + $this->assertEquals('Horde_Date', get_class($cdate)); + $this->assertEquals('1910-08-03 01:00:00', (string) $cdate); + } } } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/ServerTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/ServerTest.php index 231d3345c..429dde54e 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/ServerTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/ServerTest.php @@ -33,16 +33,33 @@ require_once 'Horde/Autoloader.php'; class Horde_Kolab_Server_ServerTest extends PHPUnit_Framework_TestCase { /** + * Provide a mock server. + * + * @return Horde_Kolab_Server The mock server. + */ + protected function getMockServer() + { + $injector = new Horde_Injector(new Horde_Injector_TopLevel()); + $config = new stdClass; + $config->driver = 'none'; + $injector->setInstance('Horde_Kolab_Server_Config', $config); + $injector->bindFactory('Horde_Kolab_Server_Structure', + 'Horde_Kolab_Server_Factory', + 'getStructure'); + $injector->bindFactory('Horde_Kolab_Server', + 'Horde_Kolab_Server_Factory', + 'getServer'); + return $injector->getInstance('Horde_Kolab_Server'); + } + + /** * The generating a uid for an object. * * @return NULL */ public function testGenerateUid() { - $provider = new stdClass; - $provider->kolab_server_driver = 'none'; - $provider->kolab_server_structure = new Horde_Kolab_Server_Structure_Ldap(); - $ks = &Horde_Kolab_Server::factory($provider); + $ks = $this->getMockServer(); $user = new Horde_Kolab_Server_Object($ks, null, null); $this->assertEquals(preg_replace('/[0-9a-f]*/', '', $user->get(Horde_Kolab_Server_Object::ATTRIBUTE_UID)), ''); } @@ -55,10 +72,17 @@ class Horde_Kolab_Server_ServerTest extends PHPUnit_Framework_TestCase public function testCreation() { try { - $provider = new stdClass; - $provider->kolab_server_driver = 'dummy'; - $provider->kolab_server_structure = new Horde_Kolab_Server_Structure_Ldap(); - Horde_Kolab_Server::factory($provider); + $injector = new Horde_Injector(new Horde_Injector_TopLevel()); + $config = new stdClass; + $config->driver = 'dummy'; + $injector->setInstance('Horde_Kolab_Server_Config', $config); + $injector->bindFactory('Horde_Kolab_Server_Structure', + 'Horde_Kolab_Server_Factory', + 'getStructure'); + $injector->bindFactory('Horde_Kolab_Server', + 'Horde_Kolab_Server_Factory', + 'getServer'); + Horde_Kolab_Server_Factory::getServer($injector); $this->assertFail('No error!'); } catch (Horde_Kolab_Server_Exception $e) { $this->assertEquals('Server type definition "Horde_Kolab_Server_Dummy" missing.', @@ -75,17 +99,11 @@ class Horde_Kolab_Server_ServerTest extends PHPUnit_Framework_TestCase */ public function testFetch() { - $provider = new stdClass; - $provider->kolab_server_driver = 'none'; - $provider->kolab_server_structure = new Horde_Kolab_Server_Structure_Ldap(); - $ks = &Horde_Kolab_Server::factory($provider); + $ks = $this->getMockServer(); $user = $ks->fetch('test'); $this->assertEquals('Horde_Kolab_Server_Object_Kolab_User', get_class($user)); - $provider = new stdClass; - $provider->kolab_server_driver = 'none'; - $provider->kolab_server_structure = new Horde_Kolab_Server_Structure_Ldap(); - $ks = &Horde_Kolab_Server::factory($provider); + $ks = $this->getMockServer(); $user = $ks->fetch(); $this->assertEquals('Horde_Kolab_Server_Object_Kolab_User', get_class($user)); } @@ -97,18 +115,11 @@ class Horde_Kolab_Server_ServerTest extends PHPUnit_Framework_TestCase */ public function testList() { - $provider = new stdClass; - $provider->kolab_server_driver = 'none'; - $provider->kolab_server_structure = new Horde_Kolab_Server_Structure_Ldap(); - $ks = &Horde_Kolab_Server::factory($provider); + $ks = $this->getMockServer(); $hash = $ks->listHash('Horde_Kolab_Server_Object'); $this->assertEquals($hash, array()); - $provider = new stdClass; - $provider->kolab_server_driver = 'none'; - $provider->kolab_server_params = array('whatever'); - $provider->kolab_server_structure = new Horde_Kolab_Server_Structure_Ldap(); - $ks = &Horde_Kolab_Server::factory($provider); + $ks = $this->getMockServer(); $hash = $ks->listHash('Horde_Kolab_Server_Object'); $this->assertEquals($hash, array()); } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/TestTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/TestTest.php index 9744217f7..867db4e8c 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/TestTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/TestTest.php @@ -30,48 +30,95 @@ require_once 'Horde/Autoloader.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_testTest extends Horde_Kolab_Server_Scenario { + /** The file based mock environment */ + const ENVIRONMENT_FILE = 'file'; + /** - * Test search base. + * The environments we provide to the test. + * + * @var array + */ + protected $_environments = array( + self::ENVIRONMENT_MOCK, + self::ENVIRONMENT_FILE + ); + + /** + * Prepare the server configuration for the given environment. * - * @dataProvider provideServerTypes + * @param string $environment The name of the environment. * * @return NULL */ - public function testSearchBase($type) + public function prepareKolabServerConfiguration($environment) { - $server = &$this->prepareBasicServer($type); + switch ($environment) { + case self::ENVIRONMENT_FILE: + /** Prepare a Kolab test server */ + $config = new stdClass; + $config->driver = 'file'; + $config->params = array( + 'file' => Horde::getTempFile('fileTest'), + 'basedn' => 'dc=example,dc=org', + 'hashtype' => 'plain' + ); + $this->world['injector'][$environment]->setInstance('Horde_Kolab_Server_Config', $config); + break; + default: + return parent::prepareKolabServerConfiguration($environment); + } + } - $result = $server->search( - '(' . Horde_Kolab_Server_Object::ATTRIBUTE_OC - . '=' . Horde_Kolab_Server_Object::OBJECTCLASS_TOP . ')', - array(Horde_Kolab_Server_Object::ATTRIBUTE_OC)); - $this->assertEquals(13, count($result)); + /** + * Set up testing. + * + * @return NULL + */ + protected function setUp() + { + $this->initializeEnvironments(); + $this->servers = $this->getKolabServers(); + foreach ($this->servers as $server) { + $this->addBasicUsersToServer($server); + } + } + + /** + * Test search base. + * + * @return NULL + */ + public function testSearchBase() + { + foreach ($this->servers as $server) { + $result = $server->search( + '(' . Horde_Kolab_Server_Object::ATTRIBUTE_OC + . '=' . Horde_Kolab_Server_Object::OBJECTCLASS_TOP . ')', + array(Horde_Kolab_Server_Object::ATTRIBUTE_OC)); + $this->assertEquals(13, count($result)); - $result = $server->search( - '(' . Horde_Kolab_Server_Object::ATTRIBUTE_OC - . '=' . Horde_Kolab_Server_Object::OBJECTCLASS_TOP . ')', - array(Horde_Kolab_Server_Object::ATTRIBUTE_OC), - 'cn=internal,dc=example,dc=org'); - $this->assertNoError($result); - $this->assertEquals(4, count($result)); + $result = $server->search( + '(' . Horde_Kolab_Server_Object::ATTRIBUTE_OC + . '=' . Horde_Kolab_Server_Object::OBJECTCLASS_TOP . ')', + array(Horde_Kolab_Server_Object::ATTRIBUTE_OC), + 'cn=internal,dc=example,dc=org'); + $this->assertEquals(4, count($result)); + } } /** * Test sorting. * - * @dataProvider provideServerTypes - * * @return NULL */ - public function testSorting($type) + public function testSorting() { - $server = &$this->prepareBasicServer($type); + foreach ($this->servers as $server) { /* $result = $server->search('(mail=*)', array('mail')); */ -/* $this->assertNoError($result); */ /* $this->assertEquals(5, count($result)); */ /* $server->sort($result, 'mail'); */ /* foreach ($result as $object) { */ @@ -86,351 +133,284 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /* } */ /* } */ /* } */ + } } /** * Test listing objects. * - * @dataProvider provideServerTypes - * * @return NULL */ - public function testListObjects($type) + public function testListObjects() { - $server = &$this->prepareBasicServer($type); - - $filter = '(&(objectClass=kolabInetOrgPerson)(uid=*)(mail=*)(sn=*))'; - $attributes = array( - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SN, - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_CN, - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_UID, - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_MAIL, - Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_DELETED, - ); - - $sort = Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SN; - $result = $server->search($filter); - $this->assertNoError($result); - $this->assertEquals(2, count($result)); - - $result = $server->listObjects('Horde_Kolab_Server_Object_Kolab_User'); - $this->assertNoError($result); - $this->assertEquals(2, count($result)); - $this->assertEquals('Horde_Kolab_Server_Object_Kolab_User', get_class(array_shift($result))); - - $result = $server->listObjects('Horde_Kolab_Server_Object_Kolabsharedfolder'); - $this->assertNoError($result); - $this->assertEquals(1, count($result)); - $this->assertEquals('Horde_Kolab_Server_Object_Kolabsharedfolder', get_class(array_shift($result))); + foreach ($this->servers as $server) { + $filter = '(&(objectClass=kolabInetOrgPerson)(uid=*)(mail=*)(sn=*))'; + $attributes = array( + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SN, + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_CN, + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_UID, + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_MAIL, + Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_DELETED, + ); + + $sort = Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_SN; + $result = $server->search($filter); + $this->assertEquals(2, count($result)); + + $result = $server->listObjects('Horde_Kolab_Server_Object_Kolab_User'); + $this->assertEquals('Horde_Kolab_Server_Object_Kolab_User', get_class(array_shift($result))); + + $result = $server->listObjects('Horde_Kolab_Server_Object_Kolabsharedfolder'); + $this->assertEquals(1, count($result)); + $this->assertEquals('Horde_Kolab_Server_Object_Kolabsharedfolder', get_class(array_shift($result))); + } } /** * Test handling of object classes. * - * @dataProvider provideServerTypes - * * @return NULL */ - public function testGetObjectClasses($type) + public function testGetObjectClasses() { - $server = &$this->prepareBasicServer($type); - - $classes = $server->getObjectClasses('cn=Gunnar Wrobel,dc=example,dc=org'); - $this->assertNoError($classes); - $this->assertContains('top', $classes); - $this->assertContains('kolabinetorgperson', $classes); - - try { - $classes = $server->getObjectClasses('cn=DOES NOT EXIST,dc=example,dc=org'); - } catch (Horde_Kolab_Server_Exception $classes) { + foreach ($this->servers as $server) { + $classes = $server->getObjectClasses('cn=Gunnar Wrobel,dc=example,dc=org'); + $this->assertContains('top', $classes); + $this->assertContains('kolabinetorgperson', $classes); + + try { + $classes = $server->getObjectClasses('cn=DOES NOT EXIST,dc=example,dc=org'); + } catch (Horde_Kolab_Server_Exception $classes) { + } + $this->assertError($classes, + 'No such object: cn=DOES NOT EXIST,dc=example,dc=org'); + + $classes = $server->getObjectClasses('cn=The Administrator,dc=example,dc=org'); + $this->assertContains('kolabinetorgperson', $classes); } - $this->assertError($classes, - 'No such object: cn=DOES NOT EXIST,dc=example,dc=org'); - - $classes = $server->getObjectClasses('cn=The Administrator,dc=example,dc=org'); - $this->assertNoError($classes); - $this->assertContains('kolabinetorgperson', $classes); } /** * Test handling of object types. * - * @dataProvider provideServerTypes - * * @return NULL */ - public function testDetermineType($type) + public function testDetermineType() { - $server = &$this->prepareBasicServer($type); - - $type = $server->determineType('cn=empty.group@example.org,dc=example,dc=org'); - $this->assertNoError($type); - $this->assertEquals('Horde_Kolab_Server_Object_Kolabgroupofnames', $type); + foreach ($this->servers as $server) { + $type = $server->determineType('cn=empty.group@example.org,dc=example,dc=org'); + $this->assertEquals('Horde_Kolab_Server_Object_Kolabgroupofnames', $type); - $type = $server->determineType('cn=shared@example.org,dc=example,dc=org'); - $this->assertNoError($type); - $this->assertEquals('Horde_Kolab_Server_Object_Kolabsharedfolder', $type); + $type = $server->determineType('cn=shared@example.org,dc=example,dc=org'); + $this->assertEquals('Horde_Kolab_Server_Object_Kolabsharedfolder', $type); - $type = $server->determineType('cn=The Administrator,dc=example,dc=org'); - $this->assertNoError($type); - $this->assertEquals('Horde_Kolab_Server_Object_Kolab_Administrator', $type); + $type = $server->determineType('cn=The Administrator,dc=example,dc=org'); + $this->assertEquals('Horde_Kolab_Server_Object_Kolab_Administrator', $type); - $type = $server->determineType('cn=Main Tainer,dc=example,dc=org'); - $this->assertNoError($type); - $this->assertEquals('Horde_Kolab_Server_Object_Kolab_Maintainer', $type); + $type = $server->determineType('cn=Main Tainer,dc=example,dc=org'); + $this->assertEquals('Horde_Kolab_Server_Object_Kolab_Maintainer', $type); - $type = $server->determineType('cn=Domain Maintainer,dc=example,dc=org'); - $this->assertNoError($type); - $this->assertEquals('Horde_Kolab_Server_Object_Kolab_Domainmaintainer', $type); + $type = $server->determineType('cn=Domain Maintainer,dc=example,dc=org'); + $this->assertEquals('Horde_Kolab_Server_Object_Kolab_Domainmaintainer', $type); - $type = $server->determineType('cn=Test Address,cn=external,dc=example,dc=org'); - $this->assertNoError($type); - $this->assertEquals('Horde_Kolab_Server_Object_Kolab_Address', $type); + $type = $server->determineType('cn=Test Address,cn=external,dc=example,dc=org'); + $this->assertEquals('Horde_Kolab_Server_Object_Kolab_Address', $type); - $type = $server->determineType('cn=Gunnar Wrobel,dc=example,dc=org'); - $this->assertNoError($type); - $this->assertEquals('Horde_Kolab_Server_Object_Kolab_User', $type); + $type = $server->determineType('cn=Gunnar Wrobel,dc=example,dc=org'); + $this->assertEquals('Horde_Kolab_Server_Object_Kolab_User', $type); + } } /** * Test retrieving a primary mail for a mail or id. * - * @dataProvider provideServerTypes - * * @return NULL */ - public function testMailForIdOrMail($type) + public function testMailForIdOrMail() { - $server = &$this->prepareBasicServer($type); - - $mail = $server->mailForIdOrMail('wrobel'); - $this->assertEquals('wrobel@example.org', $mail); + foreach ($this->servers as $server) { + $mail = $server->mailForIdOrMail('wrobel'); + $this->assertEquals('wrobel@example.org', $mail); - $mail = $server->mailForIdOrMail('wrobel@example.org'); - $this->assertNoError($mail); - $this->assertEquals('wrobel@example.org', $mail); + $mail = $server->mailForIdOrMail('wrobel@example.org'); + $this->assertEquals('wrobel@example.org', $mail); - $mail = $server->mailForIdOrMail('DOES NOT EXIST'); - $this->assertNoError($mail); - $this->assertSame(false, $mail); + $mail = $server->mailForIdOrMail('DOES NOT EXIST'); + $this->assertSame(false, $mail); + } } /** * Test retrieving a UID for a mail or id. * - * @dataProvider provideServerTypes - * * @return NULL */ - public function testUidForIdOrMail($type) + public function testUidForIdOrMail() { - $server = &$this->prepareBasicServer($type); + foreach ($this->servers as $server) { + $uid = $server->uidForIdOrMail('wrobel'); + $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $server->uidForIdOrMail('wrobel'); - $this->assertNoError($uid); - $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); + $uid = $server->uidForIdOrMail('wrobel@example.org'); + $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $server->uidForIdOrMail('wrobel@example.org'); - $this->assertNoError($uid); - $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - - $uid = $server->uidForIdOrMail('DOES NOT EXIST'); - $this->assertNoError($uid); - $this->assertSame(false, $uid); + $uid = $server->uidForIdOrMail('DOES NOT EXIST'); + $this->assertSame(false, $uid); + } } /** * Test retrieving a UID for a mail or id. * - * @dataProvider provideServerTypes - * * @return NULL */ - public function testUidForMailOrIdOrAlias($type) + public function testUidForMailOrIdOrAlias() { - $server = &$this->prepareBasicServer($type); + foreach ($this->servers as $server) { + $uid = $server->uidForIdOrMailOrAlias('g.wrobel@example.org'); + $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $server->uidForIdOrMailOrAlias('g.wrobel@example.org'); - $this->assertNoError($uid); - $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); + $uid = $server->uidForIdOrMailOrAlias('wrobel@example.org'); + $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $server->uidForIdOrMailOrAlias('wrobel@example.org'); - $this->assertNoError($uid); - $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); + $uid = $server->uidForIdOrMailOrAlias('wrobel'); + $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $server->uidForIdOrMailOrAlias('wrobel'); - $this->assertNoError($uid); - $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - - $uid = $server->uidForIdOrMailOrAlias('DOES NOT EXIST'); - $this->assertNoError($uid); - $this->assertSame(false, $uid); + $uid = $server->uidForIdOrMailOrAlias('DOES NOT EXIST'); + $this->assertSame(false, $uid); + } } /** * Test retrieving all addresses for a mail or id. * - * @dataProvider provideServerTypes - * * @return NULL */ - public function testAddrsForIdOrMail($type) + public function testAddrsForIdOrMail() { - $server = &$this->prepareBasicServer($type); - - $addrs = $server->addrsForIdOrMail('wrobel'); - - $testuser = $server->fetch('cn=Test Test,dc=example,dc=org'); - $this->assertNoError($testuser); - $this->assertContains('wrobel@example.org', - $testuser->get(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_DELEGATE, false)); - - $this->assertNoError($addrs); - $this->assertContains('wrobel@example.org', $addrs); - $this->assertContains('test@example.org', $addrs); - $this->assertContains('t.test@example.org', $addrs); - $this->assertContains('g.wrobel@example.org', $addrs); - $this->assertContains('gunnar@example.org', $addrs); - - $addrs = $server->addrsForIdOrMail('test@example.org'); - $this->assertNoError($addrs); - $this->assertContains('test@example.org', $addrs); - $this->assertContains('t.test@example.org', $addrs); + foreach ($this->servers as $server) { + $addrs = $server->addrsForIdOrMail('wrobel'); + + $testuser = $server->fetch('cn=Test Test,dc=example,dc=org'); + $this->assertContains('wrobel@example.org', + $testuser->get(Horde_Kolab_Server_Object_Kolabinetorgperson::ATTRIBUTE_DELEGATE, false)); + + $this->assertContains('wrobel@example.org', $addrs); + $this->assertContains('test@example.org', $addrs); + $this->assertContains('t.test@example.org', $addrs); + $this->assertContains('g.wrobel@example.org', $addrs); + $this->assertContains('gunnar@example.org', $addrs); + + $addrs = $server->addrsForIdOrMail('test@example.org'); + $this->assertContains('test@example.org', $addrs); + $this->assertContains('t.test@example.org', $addrs); + } } /** * Test retrieving a UID for a primary mail. * - * @dataProvider provideServerTypes - * * @return NULL */ - public function testUidForMailAddress($type) + public function testUidForMailAddress() { - $server = &$this->prepareBasicServer($type); + foreach ($this->servers as $server) { + $uid = $server->uidForIdOrMailOrAlias('wrobel@example.org'); + $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $server->uidForIdOrMailOrAlias('wrobel@example.org'); - $this->assertNoError($uid); - $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); + $uid = $server->uidForIdOrMailOrAlias('test@example.org'); + $this->assertEquals('cn=Test Test,dc=example,dc=org', $uid); - $uid = $server->uidForIdOrMailOrAlias('test@example.org'); - $this->assertNoError($uid); - $this->assertEquals('cn=Test Test,dc=example,dc=org', $uid); + $uid = $server->uidForIdOrMailOrAlias('gunnar@example.org'); + $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $server->uidForIdOrMailOrAlias('gunnar@example.org'); - $this->assertNoError($uid); - $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - - $uid = $server->uidForIdOrMailOrAlias('wrobel'); - $this->assertNoError($uid); - $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); + $uid = $server->uidForIdOrMailOrAlias('wrobel'); + $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); + } } /** * Test retrieving a UID for an attribute. * - * @dataProvider provideServerTypes - * * @return NULL */ - public function testUidForAttr($type) + public function testUidForAttr() { - $server = &$this->prepareBasicServer($type); - - $uid = $server->uidForSearch(array('AND' => array(array('field' => 'alias', + foreach ($this->servers as $server) { + $uid = $server->uidForSearch(array('AND' => array(array('field' => 'alias', 'op' => '=', 'test' => 'g.wrobel@example.org')))); - $this->assertNoError($uid); - $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); + $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); + } } /** * Test group membership testing. * - * @dataProvider provideServerTypes - * * @return NULL */ - public function testMemberOfGroupAddress($type) + public function testMemberOfGroupAddress() { - $server = &$this->prepareBasicServer($type); - - $uid = $server->uidForIdOrMailOrAlias('g.wrobel@example.org'); - $this->assertNoError($uid); - $member = $server->memberOfGroupAddress($uid, 'group@example.org'); - $this->assertNoError($member); - $this->assertTrue($member); - - $member = $server->memberOfGroupAddress( - $server->uidForIdOrMailOrAlias('test@example.org'), - 'group@example.org'); - $this->assertNoError($member); - $this->assertTrue($member); - - $member = $server->memberOfGroupAddress( - $server->uidForIdOrMailOrAlias('somebody@example.org'), - 'group@example.org'); - $this->assertNoError($member); - $this->assertFalse($member); + foreach ($this->servers as $server) { + $uid = $server->uidForIdOrMailOrAlias('g.wrobel@example.org'); + $member = $server->memberOfGroupAddress($uid, 'group@example.org'); + $this->assertTrue($member); + + $member = $server->memberOfGroupAddress( + $server->uidForIdOrMailOrAlias('test@example.org'), + 'group@example.org'); + $this->assertTrue($member); + + $member = $server->memberOfGroupAddress( + $server->uidForIdOrMailOrAlias('somebody@example.org'), + 'group@example.org'); + $this->assertFalse($member); + } } /** * Test group fetching. * - * @dataProvider provideServerTypes - * * @return NULL */ - public function testGetGroups($type) + public function testGetGroups() { - $server = &$this->prepareBasicServer($type); - - $filter = '(&(objectClass=kolabGroupOfNames)(member=' - . Horde_LDAP::quote('cn=The Administrator,dc=example,dc=org') . '))'; - $result = $server->search($filter, array()); - $this->assertNoError($result); - $this->assertTrue(!empty($result)); + foreach ($this->servers as $server) { + $filter = '(&(objectClass=kolabGroupOfNames)(member=' + . Horde_LDAP::quote('cn=The Administrator,dc=example,dc=org') . '))'; + $result = $server->search($filter, array()); + $this->assertTrue(!empty($result)); -/* $entry = $server->_firstEntry($result); */ -/* $this->assertNoError($entry); */ -/* $this->assertTrue(!empty($entry)); */ + /* $entry = $server->_firstEntry($result); */ + /* $this->assertTrue(!empty($entry)); */ -/* $uid = $server->_getDn($entry); */ -/* $this->assertNoError($uid); */ -/* $this->assertTrue(!empty($uid)); */ + /* $uid = $server->_getDn($entry); */ + /* $this->assertTrue(!empty($uid)); */ -/* $entry = $server->_nextEntry($entry); */ -/* $this->assertNoError($entry); */ -/* $this->assertTrue(empty($entry)); */ + /* $entry = $server->_nextEntry($entry); */ + /* $this->assertTrue(empty($entry)); */ -/* $entries = $server->_getDns($result); */ -/* $this->assertNoError($entries); */ -/* $this->assertTrue(!empty($entries)); */ + /* $entries = $server->_getDns($result); */ + /* $this->assertTrue(!empty($entries)); */ - $groups = $server->getGroups('cn=The Administrator,dc=example,dc=org'); - $this->assertNoError($groups); - $this->assertTrue(!empty($groups)); + $groups = $server->getGroups('cn=The Administrator,dc=example,dc=org'); + $this->assertTrue(!empty($groups)); - $groups = $server->getGroups($server->uidForIdOrMailOrAlias('g.wrobel@example.org')); - $this->assertNoError($groups); - $this->assertContains('cn=group@example.org,dc=example,dc=org', $groups); + $groups = $server->getGroups($server->uidForIdOrMailOrAlias('g.wrobel@example.org')); + $this->assertContains('cn=group@example.org,dc=example,dc=org', $groups); - $groups = $server->getGroupAddresses($server->uidForIdOrMailOrAlias('g.wrobel@example.org')); - $this->assertNoError($groups); - $this->assertContains('group@example.org', $groups); + $groups = $server->getGroupAddresses($server->uidForIdOrMailOrAlias('g.wrobel@example.org')); + $this->assertContains('group@example.org', $groups); - $groups = $server->getGroups($server->uidForIdOrMailOrAlias('test@example.org')); - $this->assertNoError($groups); - $this->assertContains('cn=group@example.org,dc=example,dc=org', $groups); + $groups = $server->getGroups($server->uidForIdOrMailOrAlias('test@example.org')); + $this->assertContains('cn=group@example.org,dc=example,dc=org', $groups); - $groups = $server->getGroupAddresses($server->uidForIdOrMailOrAlias('test@example.org')); - $this->assertNoError($groups); - $this->assertContains('group@example.org', $groups); - - $groups = $server->getGroups('nobody'); - $this->assertNoError($groups); - $this->assertTrue(empty($groups)); + $groups = $server->getGroupAddresses($server->uidForIdOrMailOrAlias('test@example.org')); + $this->assertContains('group@example.org', $groups); + $groups = $server->getGroups('nobody'); + $this->assertTrue(empty($groups)); + } } /** @@ -440,26 +420,19 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server */ public function testFilterParse() { - $provider = new stdClass; - $provider->kolab_server_driver = 'test'; - $provider->kolab_server_params = array(); - $provider->kolab_server_structure = new Horde_Kolab_Server_Structure_Ldap(); - $db = &Horde_Kolab_Server::factory($provider); + $db = $this->getKolabMockServer(); $a = $db->parse('(a=b)'); - $this->assertNoError($a); $this->assertEquals(array('att' => 'a', 'log' => '=', 'val' => 'b'), $a); $a = $db->parse('(&(a=b)(c=d))'); - $this->assertNoError($a); $this->assertEquals(array('op' => '&', 'sub' => array( array('att' => 'a', 'log' => '=', 'val' => 'b'), array('att' => 'c', 'log' => '=', 'val' => 'd'), )), $a); $a = $db->parse('(&(a=1)(|(b=2)(c=3)))'); - $this->assertNoError($a); $this->assertEquals(array('op' => '&', 'sub' => array( array('att' => 'a', 'log' => '=', 'val' => '1'), array('op' => '|', 'sub' => @@ -469,7 +442,6 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server )))), $a); $a = $db->parseSub('(!(x=2))(b=1)'); - $this->assertNoError($a); $this->assertEquals(array(array('op' => '!', 'sub' => array( array('att' => 'x', 'log' => '=', 'val' => '2'), @@ -479,7 +451,6 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server ), $a); $a = $db->parse('(&(!(x=2))(b=1))'); - $this->assertNoError($a); $this->assertEquals(array('op' => '&', 'sub' => array( array('op' => '!', 'sub' => array( @@ -498,49 +469,56 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server */ public function testSearch() { - $provider = new stdClass; - $provider->kolab_server_driver = 'test'; - $provider->kolab_server_structure = new Horde_Kolab_Server_Structure_Ldap(); - $provider->kolab_server_params = array('data' => - array( - 'cn=a' => array( - 'dn' => 'cn=a', - 'data' => array( - 'a' => '1', - 'b' => '1', - 'c' => '1', - ) - ), - 'cn=b' => array( - 'dn' => 'cn=b', - 'data' => array( - 'a' => '1', - 'b' => '2', - 'c' => '2', - ) - ), - 'cn=c' => array( - 'dn' => 'cn=c', - 'data' => array( - 'a' => '1', - 'b' => '2', - 'c' => '3', - ) - ), - 'cn=d' => array( - 'dn' => 'cn=d', - 'data' => array( - 'a' => '2', - 'b' => '2', - 'c' => '1', - ) - ), - ) + $injector = new Horde_Injector(new Horde_Injector_TopLevel()); + $config = new stdClass; + $config->driver = 'test'; + $config->params = array( + 'data' => + array( + 'cn=a' => array( + 'dn' => 'cn=a', + 'data' => array( + 'a' => '1', + 'b' => '1', + 'c' => '1', + ) + ), + 'cn=b' => array( + 'dn' => 'cn=b', + 'data' => array( + 'a' => '1', + 'b' => '2', + 'c' => '2', + ) + ), + 'cn=c' => array( + 'dn' => 'cn=c', + 'data' => array( + 'a' => '1', + 'b' => '2', + 'c' => '3', + ) + ), + 'cn=d' => array( + 'dn' => 'cn=d', + 'data' => array( + 'a' => '2', + 'b' => '2', + 'c' => '1', + ) + ), + ) ); - $db = &Horde_Kolab_Server::factory($provider); + $injector->setInstance('Horde_Kolab_Server_Config', $config); + $injector->bindFactory('Horde_Kolab_Server_Structure', + 'Horde_Kolab_Server_Factory', + 'getStructure'); + $injector->bindFactory('Horde_Kolab_Server', + 'Horde_Kolab_Server_Factory', + 'getServer'); + $db = $injector->getInstance('Horde_Kolab_Server'); $a = $db->search('(c=1)'); - $this->assertNoError($a); $this->assertEquals( array( 'cn=a' => array( @@ -560,7 +538,6 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server ); $a = $db->search('(c=3)'); - $this->assertNoError($a); $this->assertEquals( array( 'cn=c' => array( @@ -574,7 +551,6 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server ); $a = $db->search('(c=3)', array('attributes' => array('a'))); - $this->assertNoError($a); $this->assertEquals( array( 'cn=c' => array( @@ -586,7 +562,6 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server ); $a = $db->search('(&(a=1)(b=2))', array('attributes' => array('a', 'b'))); - $this->assertNoError($a); $this->assertEquals( array( 'cn=b' => array( @@ -604,7 +579,6 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server ); $a = $db->search('(&(b=2))', array('attributes' => array('b'))); - $this->assertNoError($a); $this->assertEquals( array( 'cn=b' => array( @@ -624,7 +598,6 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server ); $a = $db->search('(!(b=2))', array('attributes' => array('a', 'b'))); - $this->assertNoError($a); $this->assertEquals( array( 'cn=a' => array( @@ -637,7 +610,6 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server ); $a = $db->search('(&(!(x=2))(b=1))', array('attributes' => array('b'))); - $this->assertNoError($a); $this->assertEquals( array( 'cn=a' => array( diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/UserHandlingTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/UserHandlingTest.php index c28744f71..d2612d7fe 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/UserHandlingTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/UserHandlingTest.php @@ -30,7 +30,7 @@ require_once 'Horde/Autoloader.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Server_Scenario { /** @@ -42,7 +42,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function listingUsersOnEmptyServer() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('listing all users') ->then('the list is an empty array'); } @@ -59,7 +59,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function listingUsersAfterAddingUsers($user_list) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding an object list', $user_list) ->and('listing all users') ->then('the list has a number of entries equal to', count($user_list)); @@ -77,7 +77,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function listingUserCount($user_list) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding an object list', $user_list) ->and('retriving the result count') ->then('the count equals to', count($user_list)); @@ -95,7 +95,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function listingUsersHasAttributeId($user_list) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user list', $user_list) ->then('the user list contains the unique ID for each user') ->and('the user list contains the user type for each user'); @@ -113,7 +113,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function listingUsersHasAttributeType($user_list) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user list', $user_list) ->then('the user list contains the user type for each user'); } @@ -130,7 +130,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function listingUsersHasAttributeFullName($user_list) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user list', $user_list) ->then('the user list contains the full name for each user'); } @@ -147,7 +147,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function listingUsersHasAttributeEmail($user_list) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user list', $user_list) ->then('the user list contains the email for each user'); } @@ -164,7 +164,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function listingUsersHasAttributeUid($user_list) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user list', $user_list) ->then('the list contains the uid for each user'); } @@ -175,7 +175,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function listingUsersCanBeRestrictedByStartLetterOfTheLastName($letter, $count) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding user list', $this->largeList()) ->and('retrieving the result count of a list restricted by the start letter of the last name', $letter) ->then('the list contains a correct amount of results', $count); @@ -187,7 +187,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function countingUsersCanBeRestrictedByStartLetterOfTheLastName($letter, $count) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding user list', $this->largeList()) ->and('retrieving the result count of a list restricted by the start letter of the last name', $letter) ->then('the count contains a correct number', $count); @@ -199,7 +199,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function countingUsersCanBeRestrictedByContentsInAnAttribute($attribute, $content, $count) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding user list', $this->largeList()) ->and('retrieving the result count of a list restricted by content in an attribute', $attribute, $content) ->then('the count contains a correct number', $count); @@ -210,7 +210,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function creatingUserWithoutTypeCreatesStandardUser() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user without user type') ->then('a standard user has been created'); } @@ -220,7 +220,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function creatingUserWithoutInvitationPolicySetsManualPolicy() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user without an invitation policy') ->then('the added user has a manual policy'); } @@ -230,7 +230,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function creatingUserWithoutHomeServerFails() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user without a home server') ->then('the result should indicate an error with', 'The user cannot be added: The home Kolab server (or network) has not been specified!'); } @@ -240,7 +240,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function creatingUserForDistributedKolabWithoutImapServerFails() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('distributed Kolab') ->when('adding a user without an imap server') ->then('the result should indicate an error with', 'The user cannot be added: The home imap server has not been specified!'); @@ -251,7 +251,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function creatingUserWithImapServerFailsOnNonDistributedKolab() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('monolithic Kolab') ->when('adding a user with an imap server') ->then('the result should indicate an error with', 'The user cannot be added: A home imap server is only supported with a distributed Kolab setup!'); @@ -262,7 +262,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function creatingUserWithFreeBusyServerFailsOnNonDistributedKolab() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('monolithic Kolab') ->when('adding a user with a free/busy server') ->then('the result should indicate an error with', 'The user cannot be added: A seperate free/busy server is only supported with a distributed Kolab setup!'); @@ -273,7 +273,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function modifyingUserMailAddressIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user with the mail address "test@example.org"') ->and('modifying the mail address to "new@example.org"') ->then('the result should indicate an error with', 'The user cannot be modified: Changing the mail address from "test@example.org" to "new@example.org" is not allowed!'); @@ -284,7 +284,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function modifyingUserHomeServerIsNotAllowd() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user with the home server "test.example.org"') ->and('modifying the home server to "new.example.org"') ->then('the result should indicate an error with', 'The user cannot be modified: Changing the home server from "test.example.org" to "new.example.org" is not allowed!'); @@ -295,7 +295,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function modifyingUserImapServerIsNotAllowd() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('distributed Kolab') ->when('adding a user with the imap server "test.example.org"') ->and('modifying the imap server to "new.example.org"') @@ -307,7 +307,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function conflictBetweenMailAndMailIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user "Test Test" with the mail address "test@example.org"') ->and('adding a user "Test2 Test2" with the mail address "test@example.org"') ->then('the result should indicate an error with', 'The user cannot be added: Mail address "test@example.org" is already the mail address of user "Test Test"!'); @@ -318,7 +318,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function conflictBetweenMailAndAliasIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user "Test Test" with the mail address "test@example.org"') ->and('adding a user with the alias address "test@example.org"') ->then('the result should indicate an error with', 'The user cannot be added: Alias address "test@example.org" is already the mail address of user "Test Test"!'); @@ -329,7 +329,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function conflictBetweenAliasAndAliasIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user "Test Test" with the alias address "test@example.org"') ->and('adding a user with the alias address "test@example.org"') ->then('the result should indicate an error with', 'The user cannot be added: Alias address "test@example.org" is already the alias address of user "Test Test"!'); @@ -340,7 +340,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function conflictBetweenMailAndUidIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user "Test Test" with the mail address "test@example.org"') ->and('adding a user with the uid "test@example.org"') ->then('the result should indicate an error with', 'The user cannot be added: Uid "test@example.org" is already the mail address of user "Test Test"!'); @@ -351,7 +351,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function conflictBetweenUidAndUidIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user "Test Test" with the uid "test"') ->and('adding a user with the uid "test"') ->then('the result should indicate an error with', 'The user cannot be added: Uid "test" is already the uid of user "Test Test"!'); @@ -362,7 +362,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function nonExistingDelegateIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user with the delegate address "test@example.org"') ->then('the result should indicate an error with', 'The user cannot be added: Delegate address "test@example.org" does not exist!'); } @@ -372,7 +372,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function addingUserInUndefinedDomainIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('the only served mail domain is "example.org"') ->when('adding a user with the mail address "test@doesnotexist.org"') ->then('the result should indicate an error with', 'The user cannot be added: Domain "doesnotexist.org" is not being handled by this server!'); @@ -385,7 +385,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function addingUserWithDelegateInUndefinedDomainIsNotAllowed() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('the only served mail domain is "example.org"') ->when('adding a user with the delegate mail address "test@doesnotexist.org"') ->then('the result should indicate an error with', 'The user cannot be added: Domain "doesnotexist.org" is not being handled by this server!'); @@ -399,7 +399,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function disallowInvalidMailAddresses($address) { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user with an invalid mail address', $address) ->then('the result should indicate an error with', "The user cannot be added: Address \"$address\" is not a valid mail address!"); } @@ -409,7 +409,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function addingUserOnUndefinedHomeServer() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('the only home server in the network is "example.org"') ->when('adding a user with the home server "doesnotexist.org"') ->then('the result should indicate an error with', 'The user cannot be added: Host "doesnotexist.org" is not part of the Kolab network!'); @@ -420,7 +420,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function addingUserOnUndefinedImapServer() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('distributed Kolab') ->and('the only imap server in the network is "example.org"') ->when('adding a user with the imap server "doesnotexist.org"') @@ -432,7 +432,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function userAttributesCanBeExtended() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('an extended attribute "test" has been defined') ->when('adding a user with the attribute "test" set to "FIND ME"') ->then('the result indicates success') @@ -444,7 +444,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function extendedObjectAttributeDescriptionsCanBeRetrieved() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('an extended attribute "test" has been defined') ->when('retrieving the supported attributes by the object type "user"') ->then('the result is an array of Horde attribute descriptions') @@ -456,7 +456,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function removingUserFailsIfUserDoesNotExist() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user with the ID "cn=Test Test"') ->and('deleting the user with the ID "cn=Dummy Dummy"') ->then('the result should indicate an error with', 'The user cannot be deleted: User "cn=Dummy Dummy" does not exist!'); @@ -467,7 +467,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function removingUserByMailSucceeds() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user with the mail address "test@example.org"') ->and('deleting the user with mail address "test@example.org"') ->then('the result indicates success') @@ -479,7 +479,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function removingUserByIdSucceeds() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user with the ID "cn=Test Test"') ->and('deleting the user with the ID "cn=Test Test"') ->then('the result indicates success') @@ -491,7 +491,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function addedUserCanLogin() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('Horde uses the Kolab auth driver') ->when('adding a user with the mail address "test@example.org" and password "test"') ->and('trying to login to Horde with "test@example.org" and passowrd "test"') @@ -504,7 +504,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function allowUserWithExtendedObjectClasses() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('an extended set of objectclasses') ->when('adding a user with the mail address "test@example.org"') ->and('fetching user "test@example.org"') @@ -516,7 +516,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function allowToCheckUserPasswords() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('password check enabled') ->when('adding a user with the mail address "test@example.org" and password "tosimple"') ->then('the result should indicate an error with', 'The user cannot be added: The chosen password is not complex enough!'); @@ -527,7 +527,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function allowToSetAttributeDefaults() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('an extended attribute "test" with the default value "test" has been defined') ->when('adding a user with the mail address "test@example.org" and an empty attribute "test"') ->and('fetching user "test@example.org"') @@ -541,7 +541,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function allowToSetDomainSpecificAttributeDefaults() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('domain "example.org" is served by the Kolab server') ->and('domain "example2.org" is served by the Kolab server') ->and('an extended attribute "test" with the default value "test" has been defined') @@ -561,7 +561,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function addedUserHasPreferencesInitialized() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('Horde uses the Kolab auth driver') ->when('adding a user', $user) ->and('trying to login to Horde with "test@example.org" and passowrd "test"') @@ -575,7 +575,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function userUidsShouldNotResembleTheLocalPartOfMailAddresses() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user "cn=Test Test" with the mail address "test@example.org"') ->and('adding a user with the uid "test"') ->then('the result should indicate an error with', 'The user cannot be added: The uid "test" matches the local part of the mail address "test@example.org" assigned to user "cn=Test Test"!'); @@ -588,7 +588,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function allowToSetTheMiddleName() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('an extended attribute "middleName" has been defined') ->when('adding a user with the mail address "test@example.org" and the middle name "Middle"') ->and('fetching user "test@example.org"') @@ -602,7 +602,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function correctlyEscapeApostrophesInNames() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user with the mail address "test@example.org" and the last name "O\'Donnell"') ->and('fetching user "test@example.org"') ->then('the user name has the attribute "sn" set to "O\'Donnell"'); @@ -615,7 +615,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function allowUserToUseExternalAddressAsSender() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->when('adding a user with the mail address "test@example.org" and the external address "other@doesnotexist.org"') ->and('fetching user "test@example.org"') ->then('the user has the attribute external address "other@doesnotexist.org"'); @@ -628,7 +628,7 @@ class Horde_Kolab_Server_UserHandlingTest extends Horde_Kolab_Test_Server */ public function allowCustomFullnameHandling() { - $this->given('an empty Kolab server') + $this->given('several Kolab servers') ->and('an extended attribute "middleName" has been defined') ->and('custom full name handling has been set to "lastname, firstname middlename"') ->when('adding a user with the mail address "test@example.org", the last name "Test", the first name "Test", and the middle name "Middle"') diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/UserTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/UserTest.php index 21735f69b..c91410e75 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/UserTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/UserTest.php @@ -30,7 +30,7 @@ require_once 'Horde/Autoloader.php'; * @license http://www.fsf.org/copyleft/lgpl.html LGPL * @link http://pear.horde.org/index.php?package=Kolab_Server */ -class Horde_Kolab_Server_UserTest extends Horde_Kolab_Test_Server +class Horde_Kolab_Server_UserTest extends Horde_Kolab_Server_Scenario { /** @@ -40,7 +40,7 @@ class Horde_Kolab_Server_UserTest extends Horde_Kolab_Test_Server */ protected function setUp() { - $this->server = $this->prepareEmptyKolabServer(); + $this->server = $this->getKolabMockServer(); $users = $this->validUsers(); foreach ($users as $user) { $result = $this->server->add($user[0]); -- 2.11.0