From 31dca96ddfd1a050c24b04cc619413944902316d Mon Sep 17 00:00:00 2001
From: Gunnar Wrobel
Date: Sat, 31 Oct 2009 00:01:13 +0100
Subject: [PATCH] Continued search implementation. Extended testing. Ensured
that test requiring Net_LDAP2 are skipped.
---
framework/Kolab_Server/lib/Horde/Kolab/Server.php | 21 +-
.../lib/Horde/Kolab/Server/Cleaner.php | 23 +-
.../lib/Horde/Kolab/Server/Composite.php | 2 +-
.../Kolab_Server/lib/Horde/Kolab/Server/Ldap.php | 12 +-
.../lib/Horde/Kolab/Server/Ldap/Changes.php | 6 +-
.../lib/Horde/Kolab/Server/Ldap/Filtered.php | 19 +-
.../lib/Horde/Kolab/Server/Ldap/Standard.php | 14 +-
.../Kolab_Server/lib/Horde/Kolab/Server/Logged.php | 31 +-
.../Kolab_Server/lib/Horde/Kolab/Server/Mapped.php | 23 +-
.../Horde/Kolab/Server/Object/Attribute/Base.php | 8 +-
.../Kolab/Server/Object/Attribute/Objectclass.php | 5 +-
.../lib/Horde/Kolab/Server/Object/Groupofnames.php | 4 +-
.../Server/Object/Kolabgermanbankarrangement.php | 2 +-
.../Kolab/Server/Object/Kolabgroupofnames.php | 6 +-
.../Kolab/Server/Object/Kolabinetorgperson.php | 459 ++-------------------
.../Horde/Kolab/Server/Object/Kolabpop3account.php | 2 +-
.../lib/Horde/Kolab/Server/Object/Person.php | 27 +-
.../lib/Horde/Kolab/Server/Object/Search.php | 6 +-
.../Server/Object/Search/Addressesforuidormail.php | 136 ++++++
.../Kolab/Server/Object/Search/Attributes.php | 11 +-
.../lib/Horde/Kolab/Server/Object/Search/Base.php | 10 +
.../Horde/Kolab/Server/Object/Search/Children.php | 30 +-
.../Server/Object/Search/Constraint/Single.php | 25 +-
.../Server/Object/Search/Constraint/Strict.php | 20 +-
.../lib/Horde/Kolab/Server/Object/Search/Guid.php | 10 +-
.../Kolab/Server/Object/Search/Guidforalias.php | 47 +++
.../Horde/Kolab/Server/Object/Search/Guidforcn.php | 47 +++
.../Server/Object/Search/Guidforkolabusers.php | 46 +++
.../Kolab/Server/Object/Search/Guidformail.php | 47 +++
.../Server/Object/Search/Guidformailoralias.php | 53 +++
.../Kolab/Server/Object/Search/Guidforuid.php | 47 +++
.../Server/Object/Search/Guidforuidormail.php | 54 +++
.../Object/Search/Guidforuidormailoralias.php | 57 +++
.../Server/Object/Search/Mailforuidormail.php | 95 +++++
.../Kolab/Server/Object/Search/Restrictkolab.php | 54 +++
.../lib/Horde/Kolab/Server/Object/Top.php | 6 +-
.../lib/Horde/Kolab/Server/Query/Ldap.php | 29 +-
.../lib/Horde/Kolab/Server/Search/Base.php | 37 +-
.../lib/Horde/Kolab/Server/Structure.php | 41 ++
.../lib/Horde/Kolab/Server/Structure/Base.php | 57 ++-
.../lib/Horde/Kolab/Server/Structure/Kolab.php | 4 +-
.../lib/Horde/Kolab/Server/Structure/Ldap.php | 32 +-
framework/Kolab_Server/package.xml | 108 +++--
.../test/Horde/Kolab/Server/Attribute/BaseTest.php | 14 +-
.../Horde/Kolab/Server/Attribute/ValueTest.php | 2 +-
.../Class/Server/Factory/ConfigurationTest.php | 6 +-
.../Server/Factory/Conn/ConfigurationTest.php | 79 ++++
.../Server/Class/Server/Factory/Conn/LdapTest.php | 6 +-
.../Class/Server/Factory/ConstructorTest.php | 7 +-
.../Server/Class/Server/Factory/InjectorTest.php | 6 +-
.../Server/Class/Server/Factory/KolabTest.php | 7 +-
.../Kolab/Server/Class/Server/Ldap/ChangesTest.php | 190 +++++++++
.../{Server => Class/Server/Ldap}/FilteredTest.php | 21 +-
.../{Server => Class/Server/Ldap}/StandardTest.php | 21 +-
.../Kolab/Server/{ => Class}/Server/LdapTest.php | 30 +-
.../Horde/Kolab/Server/Class/Server/LoggedTest.php | 228 ++++++++++
.../Server/{ => Class/Server}/Result/LdapTest.php | 6 +-
.../Kolab/Server/Class/Server/Search/BaseTest.php | 39 +-
.../{ => Class/Server}/Structure/KolabTest.php | 6 +-
.../{ => Class/Server}/Structure/LdapTest.php | 48 ++-
.../Horde/Kolab/Server/Connection/MockTest.php | 5 +-
.../Kolab/Server/Connection/SimpleldapTest.php | 20 +-
.../Kolab/Server/Connection/SplittedldapTest.php | 20 +-
.../Server/{Search => Integration}/SearchTest.php | 18 +-
.../Server/{LdapBase.php => LdapTestCase.php} | 8 +-
.../test/Horde/Kolab/Server/Object/BaseTest.php | 40 +-
.../test/Horde/Kolab/Server/Query/ElementTest.php | 2 +-
.../test/Horde/Kolab/Server/Query/LdapTest.php | 84 +++-
.../test/Horde/Kolab/Server/Server/FactoryTest.php | 228 ----------
.../test/Horde/Kolab/Server/Server/LoggedTest.php | 185 ---------
.../test/Horde/Kolab/Server/TestCase.php | 2 +-
71 files changed, 1839 insertions(+), 1262 deletions(-)
create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Addressesforuidormail.php
create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforalias.php
create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforcn.php
create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforkolabusers.php
create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidformail.php
create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidformailoralias.php
create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforuid.php
create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforuidormail.php
create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforuidormailoralias.php
create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Mailforuidormail.php
create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Restrictkolab.php
create mode 100644 framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/Conn/ConfigurationTest.php
create mode 100644 framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Ldap/ChangesTest.php
rename framework/Kolab_Server/test/Horde/Kolab/Server/{Server => Class/Server/Ldap}/FilteredTest.php (80%)
rename framework/Kolab_Server/test/Horde/Kolab/Server/{Server => Class/Server/Ldap}/StandardTest.php (79%)
rename framework/Kolab_Server/test/Horde/Kolab/Server/{ => Class}/Server/LdapTest.php (96%)
create mode 100644 framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/LoggedTest.php
rename framework/Kolab_Server/test/Horde/Kolab/Server/{ => Class/Server}/Result/LdapTest.php (91%)
rename framework/Kolab_Server/test/Horde/Kolab/Server/{ => Class/Server}/Structure/KolabTest.php (98%)
rename framework/Kolab_Server/test/Horde/Kolab/Server/{ => Class/Server}/Structure/LdapTest.php (72%)
rename framework/Kolab_Server/test/Horde/Kolab/Server/{Search => Integration}/SearchTest.php (94%)
rename framework/Kolab_Server/test/Horde/Kolab/Server/{LdapBase.php => LdapTestCase.php} (82%)
delete mode 100644 framework/Kolab_Server/test/Horde/Kolab/Server/Server/FactoryTest.php
delete mode 100644 framework/Kolab_Server/test/Horde/Kolab/Server/Server/LoggedTest.php
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server.php b/framework/Kolab_Server/lib/Horde/Kolab/Server.php
index 32cdbff9d..d80da8db1 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server.php
@@ -93,34 +93,27 @@ interface Horde_Kolab_Server
/**
* Finds object data matching a given set of criteria.
*
- * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
- * @param array $params Additional search parameters.
+ * @param string $query The LDAP search query
+ * @param array $params Additional search parameters.
*
* @return Horde_Kolab_Server_Result The result object.
*
* @throws Horde_Kolab_Server_Exception
*/
- public function find(
- Horde_Kolab_Server_Query_Element $criteria,
- array $params = array()
- );
+ public function find($query, array $params = array());
/**
* Finds all object data below a parent matching a given set of criteria.
*
- * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
- * @param string $parent The parent to search below.
- * @param array $params Additional search parameters.
+ * @param string $query The LDAP search query
+ * @param string $parent The parent to search below.
+ * @param array $params Additional search parameters.
*
* @return Horde_Kolab_Server_Result The result object.
*
* @throws Horde_Kolab_Server_Exception
*/
- public function findBelow(
- Horde_Kolab_Server_Query_Element $criteria,
- $parent,
- array $params = array()
- );
+ public function findBelow($query, $parent, array $params = array());
/**
* Modify existing object data.
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Cleaner.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Cleaner.php
index adb685fd5..5c1026683 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Cleaner.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Cleaner.php
@@ -124,36 +124,31 @@ class Horde_Kolab_Server_Cleaner implements Horde_Kolab_Server
/**
* Finds object data matching a given set of criteria.
*
- * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
- * @param array $params Additional search parameters.
+ * @param string $query The LDAP search query
+ * @param array $params Additional search parameters.
*
* @return Horde_Kolab_Server_Result The result object.
*
* @throws Horde_Kolab_Server_Exception
*/
- public function find(
- Horde_Kolab_Server_Query_Element $criteria,
- array $params = array()
- ) {
+ public function find($query, array $params = array())
+ {
return $this->_server->find($criteria, $params);
}
/**
* Finds all object data below a parent matching a given set of criteria.
*
- * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
- * @param string $parent The parent to search below.
- * @param array $params Additional search parameters.
+ * @param string $query The LDAP search query
+ * @param string $parent The parent to search below.
+ * @param array $params Additional search parameters.
*
* @return Horde_Kolab_Server_Result The result object.
*
* @throws Horde_Kolab_Server_Exception
*/
- public function findBelow(
- Horde_Kolab_Server_Query_Element $criteria,
- $parent,
- array $params = array()
- ) {
+ public function findBelow($query, $parent, array $params = array())
+ {
return $this->_server->findBelow($criteria, $parent, $params);
}
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Composite.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Composite.php
index 252aaeac1..7f03c37c1 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Composite.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Composite.php
@@ -123,7 +123,7 @@ class Horde_Kolab_Server_Composite
{
/** Bind anonymously first. */
$this->server->connectGuid();
- $guid = $this->search->getGuidForUser($user);
+ $guid = $this->search->searchGuidForUidOrMail($user);
$this->server->connectGuid($guid, $pass);
}
}
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php
index cf5d7862a..c40f9646f 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap.php
@@ -167,18 +167,16 @@ abstract class Horde_Kolab_Server_Ldap implements Horde_Kolab_Server
/**
* Finds object data matching a given set of criteria.
*
- * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
- * @param array $params Additional search parameters.
+ * @param string $query The LDAP search query
+ * @param array $params Additional search parameters.
*
* @return Horde_Kolab_Server_Result The result object.
*
* @throws Horde_Kolab_Server_Exception
*/
- public function find(
- Horde_Kolab_Server_Query_Element $criteria,
- array $params = array()
- ) {
- return $this->findBelow($criteria, $this->_base_dn, $params);
+ public function find($query, array $params = array())
+ {
+ return $this->findBelow($query, $this->_base_dn, $params);
}
/**
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap/Changes.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap/Changes.php
index 8664f1f85..259977582 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap/Changes.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap/Changes.php
@@ -27,7 +27,6 @@
*/
class Horde_Kolab_Server_Ldap_Changes
{
-
/**
* The object to be modified.
*
@@ -69,7 +68,7 @@ class Horde_Kolab_Server_Ldap_Changes
$attributes = array_merge(array_keys($old), array_keys($new));
foreach ($attributes as $attribute) {
if (!isset($old[$attribute])) {
- $cs['add'][] = array($attribute => $new[$attribute]);
+ $cs['add'][$attribute] = $new[$attribute];
continue;
}
if (!isset($new[$attribute])) {
@@ -77,7 +76,8 @@ class Horde_Kolab_Server_Ldap_Changes
continue;
}
if (count($new[$attribute]) == 1
- && count($old[$attribute]) == 1) {
+ && count($old[$attribute]) == 1
+ ) {
if ($new[$attribute][0] == $old[$attribute][0]) {
continue;
} else {
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap/Filtered.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap/Filtered.php
index 2858c9f82..e172f6f6b 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap/Filtered.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap/Filtered.php
@@ -55,22 +55,17 @@ class Horde_Kolab_Server_Ldap_Filtered extends Horde_Kolab_Server_Ldap
/**
* Finds all object data below a parent matching a given set of criteria.
*
- * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
- * @param string $parent The parent to search below.
- * @param array $params Additional search parameters.
+ * @param string $query The LDAP search query
+ * @param string $parent The parent to search below.
+ * @param array $params Additional search parameters.
*
* @return Horde_Kolab_Server_Result The result object.
*
* @throws Horde_Kolab_Server_Exception
*/
- public function findBelow(
- Horde_Kolab_Server_Query_Element $criteria,
- $parent,
- array $params = array()
- ) {
- $query = new Horde_Kolab_Server_Query_Ldap($criteria);
- $query_string = (string) $query;
- $query_string = '(&(' . $this->_filter . ')' . $query_string . ')';
- return $this->_search($query_string, $params, $parent);
+ public function findBelow($query, $parent, array $params = array())
+ {
+ $query = '(&(' . $this->_filter . ')' . $query . ')';
+ return $this->_search($query, $params, $parent);
}
}
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap/Standard.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap/Standard.php
index dd448dbf0..cc740a34b 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap/Standard.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Ldap/Standard.php
@@ -31,20 +31,16 @@ class Horde_Kolab_Server_Ldap_Standard extends Horde_Kolab_Server_Ldap
/**
* Finds all object data below a parent matching a given set of criteria.
*
- * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
- * @param string $parent The parent to search below.
- * @param array $params Additional search parameters.
+ * @param string $query The LDAP search query
+ * @param string $parent The parent to search below.
+ * @param array $params Additional search parameters.
*
* @return Horde_Kolab_Server_Result The result object.
*
* @throws Horde_Kolab_Server_Exception
*/
- public function findBelow(
- Horde_Kolab_Server_Query_Element $criteria,
- $parent,
- array $params = array()
- ) {
- $query = new Horde_Kolab_Server_Query_Ldap($criteria);
+ public function findBelow($query, $parent, array $params = array())
+ {
return $this->_search((string) $query, $params, $parent);
}
}
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Logged.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Logged.php
index 1644b88e6..c71e5f56e 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Logged.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Logged.php
@@ -91,7 +91,7 @@ class Horde_Kolab_Server_Logged implements Horde_Kolab_Server
*/
public function getGuid()
{
- $this->_server->getGuid();
+ return $this->_server->getGuid();
}
/**
@@ -101,7 +101,7 @@ class Horde_Kolab_Server_Logged implements Horde_Kolab_Server
*/
public function getBaseGuid()
{
- $this->_server->getBaseGuid();
+ return $this->_server->getBaseGuid();
}
/**
@@ -140,37 +140,32 @@ class Horde_Kolab_Server_Logged implements Horde_Kolab_Server
/**
* Finds object data matching a given set of criteria.
*
- * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
- * @param array $params Additional search parameters.
+ * @param string $query The LDAP search query
+ * @param array $params Additional search parameters.
*
* @return Horde_Kolab_Server_Result The result object.
*
* @throws Horde_Kolab_Server_Exception
*/
- public function find(
- Horde_Kolab_Server_Query_Element $criteria,
- array $params = array()
- ) {
- return $this->_server->find($criteria, $params);
+ public function find($query, array $params = array())
+ {
+ return $this->_server->find($query, $params);
}
/**
* Finds all object data below a parent matching a given set of criteria.
*
- * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
- * @param string $parent The parent to search below.
- * @param array $params Additional search parameters.
+ * @param string $query The LDAP search query
+ * @param string $parent The parent to search below.
+ * @param array $params Additional search parameters.
*
* @return Horde_Kolab_Server_Result The result object.
*
* @throws Horde_Kolab_Server_Exception
*/
- public function findBelow(
- Horde_Kolab_Server_Query_Element $criteria,
- $parent,
- array $params = array()
- ) {
- return $this->_server->findBelow($criteria, $parent, $params);
+ public function findBelow($query, $parent, array $params = array())
+ {
+ return $this->_server->findBelow($query, $parent, $params);
}
/**
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Mapped.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Mapped.php
index 0f549c147..f911d748b 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Mapped.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Mapped.php
@@ -146,17 +146,15 @@ class Horde_Kolab_Server_Mapped implements Horde_Kolab_Server
/**
* Finds object data matching a given set of criteria.
*
- * @param array $criteria The criteria for the search.
- * @param array $params Additional search parameters.
+ * @param string $query The LDAP search query
+ * @param array $params Additional search parameters.
*
* @return array The result array.
*
* @throws Horde_Kolab_Server_Exception
*/
- public function find(
- Horde_Kolab_Server_Query_Element $criteria,
- array $params = array()
- ) {
+ public function find($query, array $params = array())
+ {
$criteria = new Horde_Kolab_Server_Query_Element_Mapped($criteria, $this);
$data = $this->_server->find($criteria, $params);
$this->unmapAttributes($data);
@@ -166,19 +164,16 @@ class Horde_Kolab_Server_Mapped implements Horde_Kolab_Server
/**
* Finds all object data below a parent matching a given set of criteria.
*
- * @param array $criteria The criteria for the search.
- * @param string $parent The parent to search below.
- * @param array $params Additional search parameters.
+ * @param string $query The LDAP search query
+ * @param string $parent The parent to search below.
+ * @param array $params Additional search parameters.
*
* @return array The result array.
*
* @throws Horde_Kolab_Server_Exception
*/
- public function findBelow(
- Horde_Kolab_Server_Query_Element $criteria,
- $parent,
- array $params = array()
- ) {
+ public function findBelow($query, $parent, array $params = array())
+ {
$criteria = new Horde_Kolab_Server_Query_Element_Mapped($criteria, $this);
$data = $this->_server->findBelow($criteria, $parent, $params);
$this->unmapAttributes($data);
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Attribute/Base.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Attribute/Base.php
index f579dffec..c3e63b253 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Attribute/Base.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Attribute/Base.php
@@ -67,13 +67,15 @@ implements Horde_Kolab_Server_Object_Attribute
public function __construct(
Horde_Kolab_Server_Object $object,
Horde_Kolab_Server_Composite $composite,
- $internal,
- $external = null
+ $external
) {
- $this->_internal = $internal;
$this->_object = $object;
$this->_composite = $composite;
$this->_external = $external;
+
+ $this->_internal = $this->_composite->structure->getInternalAttribute(
+ $this->_external
+ );
}
/**
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Attribute/Objectclass.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Attribute/Objectclass.php
index effb2d1d1..eed3ebd29 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Attribute/Objectclass.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Attribute/Objectclass.php
@@ -28,9 +28,6 @@
class Horde_Kolab_Server_Object_Attribute_Objectclass
extends Horde_Kolab_Server_Object_Attribute_Decorator
{
- /** The internal attribute name */
- const INTERNAL = 'objectClass';
-
/**
* Constructor
*
@@ -45,7 +42,7 @@ extends Horde_Kolab_Server_Object_Attribute_Decorator
$this->_attribute = new Horde_Kolab_Server_Object_Attribute_Required(
new Horde_Kolab_Server_Object_Attribute_Locked(
new Horde_Kolab_Server_Object_Attribute_Value(
- $object, $composite, self::INTERNAL, 'Objectclass'
+ $object, $composite, 'Objectclass'
)
)
);
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Groupofnames.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Groupofnames.php
index ad68cdeb6..874979925 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Groupofnames.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Groupofnames.php
@@ -168,8 +168,8 @@ class Horde_Kolab_Server_Object_Groupofnames extends Horde_Kolab_Server_Object_T
static public function getSearchOperations()
{
$searches = array(
- 'gidForSearch',
- 'getGroups',
+/* 'gidForSearch', */
+/* 'getGroups', */
);
return $searches;
}
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabgermanbankarrangement.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabgermanbankarrangement.php
index 036574f64..4907a82c0 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabgermanbankarrangement.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabgermanbankarrangement.php
@@ -166,7 +166,7 @@ class Horde_Kolab_Server_Object_Kolabgermanbankarrangement extends Horde_Kolab_S
static public function getSearchOperations()
{
$searches = array(
- 'accountsForMail',
+/* 'accountsForMail', */
);
return $searches;
}
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabgroupofnames.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabgroupofnames.php
index d32071765..4419a125f 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabgroupofnames.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabgroupofnames.php
@@ -162,9 +162,9 @@ class Horde_Kolab_Server_Object_Kolabgroupofnames extends Horde_Kolab_Server_Obj
static public function getSearchOperations()
{
$searches = array(
- 'gidForMail',
- 'memberOfGroupAddress',
- 'getGroupAddresses',
+/* 'gidForMail', */
+/* 'memberOfGroupAddress', */
+/* 'getGroupAddresses', */
);
return $searches;
}
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabinetorgperson.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabinetorgperson.php
index b3d03e357..08eacba14 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabinetorgperson.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabinetorgperson.php
@@ -27,133 +27,32 @@
*/
class Horde_Kolab_Server_Object_Kolabinetorgperson extends Horde_Kolab_Server_Object_Inetorgperson
{
- /** Define attributes specific to this object type */
-
- /** Alias mail addresses */
- const ATTRIBUTE_ALIAS = 'alias';
-
- /** Delegates for this person */
- const ATTRIBUTE_DELEGATE = 'kolabDelegate';
-
- /** Marker for a deleted object */
- const ATTRIBUTE_DELETED = 'kolabDeleteFlag';
+ /** The specific object class of this object type */
+ const OBJECTCLASS_KOLABINETORGPERSON = 'kolabInetOrgPerson';
- /** How many days of the free/busy future should be calculated in advance? */
- const ATTRIBUTE_FBFUTURE = 'kolabFreeBusyFuture';
+ /** Define attributes specific to this object type */
/**
- * The home server of this person. It identifies the correct machine in a
- * master/slave setup.
+ * The attributes defined for this class.
+ *
+ * @var array
*/
- const ATTRIBUTE_HOMESERVER = 'kolabHomeServer';
-
- /** The free/busy server of this person */
- const ATTRIBUTE_FREEBUSYHOST = 'kolabFreeBusyServer';
-
- /** The host that keeps the IMAP mail store of this person */
- const ATTRIBUTE_IMAPHOST = 'kolabImapServer';
-
- /** The invitation policy for this person */
- const ATTRIBUTE_IPOLICY = 'kolabInvitationPolicy';
-
- /** The salutation of this person. */
- const ATTRIBUTE_SALUTATION = 'kolabSalutation';
-
- /** Persons gender */
- const ATTRIBUTE_GENDER = 'gender';
-
- /** The marital status */
- const ATTRIBUTE_MARITALSTATUS = 'kolabMaritalStatus';
-
- /** The home fax number */
- const ATTRIBUTE_HOMEFAX = 'homeFacsimileTelephoneNumber';
-
- /** The german tax ID */
- const ATTRIBUTE_GERMANTAXID = 'germanTaxId';
-
- /** The country of residence */
- const ATTRIBUTE_COUNTRY = 'c';
-
- /** The IMAP quota */
- const ATTRIBUTE_QUOTA = 'cyrus-userquota';
-
- /** Allowed recipients for this person */
- const ATTRIBUTE_ALLOWEDRECIPIENTS = 'kolabAllowSMTPRecipient';
-
- /** Allowed senders for this person */
- const ATTRIBUTE_ALLOWEDFROM = 'kolabAllowSMTPFrom';
-
- /** The date of birth */
- const ATTRIBUTE_DATEOFBIRTH = 'apple-birthday';
-
- /** The date of birth as Horde_Date */
- const ATTRDATE_DATEOFBIRTH = 'apple-birthdayDate';
-
- /** The place of birth */
- const ATTRIBUTE_PLACEOFBIRTH = 'birthPlace';
-
- /** Birth name */
- const ATTRIBUTE_BIRTHNAME = 'birthName';
-
- /** Pseudonym */
- const ATTRIBUTE_PSEUDONYM = 'pseudonym';
-
- /** Country of citizenship */
- const ATTRIBUTE_COUNTRYCITIZENSHIP = 'countryOfCitizenship';
-
- /** Legal form (if the person is a legal entity) */
- const ATTRIBUTE_LEGALFORM = 'legalForm';
-
- /** Registered capital (if the person is a legal entity) */
- const ATTRIBUTE_REGISTEREDCAPITAL = 'tradeRegisterRegisteredCapital';
-
- /** URI for bylaw (if the person is a legal entity) */
- const ATTRIBUTE_BYLAWURI = 'bylawURI';
-
- /** Date of incorporation (if the person is a legal entity) */
- const ATTRIBUTE_DATEOFINCORPORATION = 'dateOfIncorporation';
-
- /** Legal representative (if the person is a legal entity) */
- const ATTRIBUTE_LEGALREPRESENTATIVE = 'legalRepresentative';
-
- /** Commercial procuration (if the person is a legal entity) */
- const ATTRIBUTE_COMMERCIALPROCURATION = 'commercialProcuration';
-
- /** Legal representation policy (if the person is a legal entity) */
- const ATTRIBUTE_LEGALREPRESENTATIONPOLICY = 'legalRepresentationPolicy';
-
- /** Acting deputy (if the person is a legal entity) */
- const ATTRIBUTE_ACTINGDEPUTY = 'actingDeputy';
-
- /** VAT number (if the person is a legal entity) */
- const ATTRIBUTE_VATNUMBER = 'VATNumber';
-
- /** Additional legal relationships (if the person is a legal entity) */
- const ATTRIBUTE_OTHERLEGAL = 'otherLegalRelationship';
-
- /** Is this entity in liquidation? (if the person is a legal entity) */
- const ATTRIBUTE_INLIQUIDATION = 'inLiquidation';
-
- /** Type of entity as given by the trade register (if the person is a legal entity) */
- const ATTRIBUTE_TRTYPE = 'tradeRegisterType';
-
- /** Location of entity as given by the trade register (if the person is a legal entity) */
- const ATTRIBUTE_TRLOCATION = 'tradeRegisterLocation';
-
- /** Identifier of entity as given by the trade register (if the person is a legal entity) */
- const ATTRIBUTE_TRIDENTIFIER = 'tradeRegisterIdentifier';
-
- /** URI of entity as given by the trade register (if the person is a legal entity) */
- const ATTRIBUTE_TRURI = 'tradeRegisterURI';
-
- /** Date of last change in the trade register (if the person is a legal entity) */
- const ATTRIBUTE_TRLASTCHANGED = 'tradeRegisterLastChangedDate';
-
- /** Subdomain for this person */
- const ATTRIBUTE_DC = 'domainComponent';
+ static public $attributes = array(
+ 'alias', 'kolabDelegate', 'kolabDeleteFlag', 'kolabFreeBusyFuture',
+ 'kolabHomeServer', 'kolabFreeBusyServer', 'kolabImapServer',
+ 'kolabInvitationPolicy', 'kolabSalutation', 'gender',
+ 'kolabMaritalStatus', 'homeFacsimileTelephoneNumber', 'germanTaxId',
+ 'c', 'cyrus-userquota', 'kolabAllowSMTPRecipient', 'kolabAllowSMTPFrom',
+ 'apple-birthday', 'apple-birthdayDate', 'birthPlace', 'birthName',
+ 'pseudonym', 'countryOfCitizenship', 'legalForm',
+ 'tradeRegisterRegisteredCapital', 'bylawURI', 'dateOfIncorporation',
+ 'legalRepresentative', 'commercialProcuration',
+ 'legalRepresentationPolicy', 'actingDeputy', 'VATNumber',
+ 'otherLegalRelationship', 'inLiquidation', 'tradeRegisterType',
+ 'tradeRegisterLocation', 'tradeRegisterIdentifier', 'tradeRegisterURI',
+ 'tradeRegisterLastChangedDate', 'domainComponent',
+ );
- /** The specific object class of this object type */
- const OBJECTCLASS_KOLABINETORGPERSON = 'kolabInetOrgPerson';
/**
* A structure to initialize the attribute structure for this class.
@@ -313,12 +212,11 @@ class Horde_Kolab_Server_Object_Kolabinetorgperson extends Horde_Kolab_Server_Ob
*/
public static function getFilter()
{
- $criteria = array('AND' => array(array('field' => self::ATTRIBUTE_OC,
- 'op' => '=',
- 'test' => self::OBJECTCLASS_KOLABINETORGPERSON),
- ),
+ $filter = new Horde_Kolab_Server_Query_Element_Equals(
+ 'Objectclass',
+ self::OBJECTCLASS_KOLABINETORGPERSON
);
- return $criteria;
+ return $filter;
}
/**
@@ -378,309 +276,20 @@ class Horde_Kolab_Server_Object_Kolabinetorgperson extends Horde_Kolab_Server_Ob
static public function getSearchOperations()
{
$searches = array(
- 'uidForSearch',
- 'uidForId',
- 'uidForMail',
- 'uidForIdOrMail',
- 'uidForAlias',
- 'uidForMailOrAlias',
- 'uidForIdOrMailOrAlias',
- 'mailForIdOrMail',
- 'addrsForIdOrMail',
+ 'Horde_Kolab_Server_Object_Search_Guidforkolabusers',
+ 'Horde_Kolab_Server_Object_Search_Guidforuid',
+ 'Horde_Kolab_Server_Object_Search_Guidformail',
+ 'Horde_Kolab_Server_Object_Search_Guidforuidormail',
+ 'Horde_Kolab_Server_Object_Search_Guidforalias',
+ 'Horde_Kolab_Server_Object_Search_Guidformailoralias',
+ 'Horde_Kolab_Server_Object_Search_Guidforuidormailoralias',
+ 'Horde_Kolab_Server_Object_Search_Mailforuidormail',
+ 'Horde_Kolab_Server_Object_Search_Addressesforuidormail',
);
return $searches;
}
/**
- * Identify the kolab UID for the first object found using the specified
- * search criteria.
- *
- * @param Horde_Kolab_Server $server The server to query.
- * @param array $criteria The search parameters as array.
- * @param int $restrict A Horde_Kolab_Server::RESULT_* result restriction.
- *
- * @return boolean|string|array The UID(s) or false if there was no result.
- *
- * @throws Horde_Kolab_Server_Exception
- */
- static public function uidForSearch($server, $criteria,
- $restrict = 0)
- {
- $users = array('field' => self::ATTRIBUTE_OC,
- 'op' => '=',
- 'test' => self::OBJECTCLASS_KOLABINETORGPERSON);
- if (!empty($criteria)) {
- $criteria = array('AND' => array($users, $criteria));
- } else {
- $criteria = array('AND' => array($users));
- }
- return self::basicUidForSearch($server, $criteria, $restrict);
- }
-
- /**
- * Identify the UID for the first object found with the given ID.
- *
- * @param Horde_Kolab_Server $server The server to query.
- * @param string $id Search for objects with this ID.
- * @param int $restrict A Horde_Kolab_Server::RESULT_* result restriction.
- *
- * @return mixed The UID or false if there was no result.
- *
- * @throws Horde_Kolab_Server_Exception
- */
- static public function uidForId($server, $id,
- $restrict = 0)
- {
- $criteria = array('AND' => array(array('field' => self::ATTRIBUTE_SID,
- 'op' => '=',
- 'test' => $id),
- ),
- );
- return self::uidForSearch($server, $criteria, $restrict);
- }
-
- /**
- * Identify the UID for the first user found with the given mail.
- *
- * @param Horde_Kolab_Server $server The server to query.
- * @param string $mail Search for users with this mail address.
- * @param int $restrict A Horde_Kolab_Server::RESULT_* result restriction.
- *
- * @return mixed The UID or false if there was no result.
- *
- * @throws Horde_Kolab_Server_Exception
- */
- static public function uidForMail($server, $mail,
- $restrict = 0)
- {
- $criteria = array('AND' => array(array('field' => self::ATTRIBUTE_MAIL,
- 'op' => '=',
- 'test' => $mail),
- ),
- );
- return self::uidForSearch($server, $criteria, $restrict);
- }
-
- /**
- * Identify the UID for the first object found with the given ID or mail.
- *
- * @param Horde_Kolab_Server $server The server to query.
- * @param string $id Search for objects with this uid/mail.
- *
- * @return string|boolean The UID or false if there was no result.
- *
- * @throws Horde_Kolab_Server_Exception
- */
- static public function uidForIdOrMail($server, $id)
- {
- $criteria = array('OR' =>
- array(
- array('field' => self::ATTRIBUTE_SID,
- 'op' => '=',
- 'test' => $id),
- array('field' => self::ATTRIBUTE_MAIL,
- 'op' => '=',
- 'test' => $id),
- ),
- );
- return self::uidForSearch($server, $criteria);
- }
-
- /**
- * Identify the UID for the first object found with the given alias.
- *
- * @param Horde_Kolab_Server $server The server to query.
- * @param string $mail Search for objects with this mail alias.
- * @param int $restrict A Horde_Kolab_Server::RESULT_* result restriction.
- *
- * @return mixed The UID or false if there was no result.
- *
- * @throws Horde_Kolab_Server_Exception
- */
- static public function uidForAlias($server, $mail,
- $restrict = 0)
- {
- $criteria = array('AND' => array(array('field' => self::ATTRIBUTE_ALIAS,
- 'op' => '=',
- 'test' => $mail),
- ),
- );
- return self::uidForSearch($server, $criteria, $restrict);
- }
-
-
- /**
- * Identify the UID for the first object found with the given mail
- * address or alias.
- *
- * @param Horde_Kolab_Server $server The server to query.
- * @param string $mail Search for objects with this mail address
- * or alias.
- *
- * @return string|boolean The UID or false if there was no result.
- *
- * @throws Horde_Kolab_Server_Exception
- */
- static public function uidForMailOrAlias($server, $mail)
- {
- $criteria = array('OR' =>
- array(
- array('field' => self::ATTRIBUTE_ALIAS,
- 'op' => '=',
- 'test' => $mail),
- array('field' => self::ATTRIBUTE_MAIL,
- 'op' => '=',
- 'test' => $mail),
- )
- );
- return self::uidForSearch($server, $criteria);
- }
-
- /**
- * Identify the UID for the first object found with the given ID,
- * mail or alias.
- *
- * @param Horde_Kolab_Server $server The server to query.
- * @param string $id Search for objects with this ID/mail/alias.
- *
- * @return string|boolean The UID or false if there was no result.
- *
- * @throws Horde_Kolab_Server_Exception
- */
- static public function uidForIdOrMailOrAlias($server, $id)
- {
- $criteria = array('OR' =>
- array(
- array('field' => self::ATTRIBUTE_ALIAS,
- 'op' => '=',
- 'test' => $id),
- array('field' => self::ATTRIBUTE_MAIL,
- 'op' => '=',
- 'test' => $id),
- array('field' => self::ATTRIBUTE_SID,
- 'op' => '=',
- 'test' => $id),
- ),
- );
- return self::uidForSearch($server, $criteria);
- }
-
- /**
- * Identify the primary mail attribute for the first object found
- * with the given ID or mail.
- *
- * @param Horde_Kolab_Server $server The server to query.
- * @param string $id Search for objects with this ID/mail.
- *
- * @return mixed The mail address or false if there was no result.
- *
- * @throws Horde_Kolab_Server_Exception
- */
- static public function mailForIdOrMail($server, $id)
- {
- $criteria = array('AND' =>
- array(
- array('field' => self::ATTRIBUTE_OC,
- 'op' => '=',
- 'test' => self::OBJECTCLASS_KOLABINETORGPERSON),
- array('OR' =>
- array(
- array('field' => self::ATTRIBUTE_SID,
- 'op' => '=',
- 'test' => $id),
- array('field' => self::ATTRIBUTE_MAIL,
- 'op' => '=',
- 'test' => $id),
- ),
- ),
- ),
- );
-
- $data = self::attrsForSearch($server, $criteria, array(self::ATTRIBUTE_MAIL),
- self::RESULT_STRICT);
- if (!empty($data)) {
- return $data[self::ATTRIBUTE_MAIL][0];
- } else {
- return false;
- }
- }
-
- /**
- * Returns a list of allowed email addresses for the given user.
- *
- * @param Horde_Kolab_Server $server The server to query.
- * @param string $id Search for objects with this ID/mail.
- *
- * @return array An array of allowed mail addresses.
- *
- * @throws Horde_Kolab_Server_Exception
- */
- static public function addrsForIdOrMail($server, $id)
- {
- $criteria = array('AND' =>
- array(
- array('field' => self::ATTRIBUTE_OC,
- 'op' => '=',
- 'test' => self::OBJECTCLASS_KOLABINETORGPERSON),
- array('OR' =>
- array(
- array('field' => self::ATTRIBUTE_SID,
- 'op' => '=',
- 'test' => $id),
- array('field' => self::ATTRIBUTE_MAIL,
- 'op' => '=',
- 'test' => $id),
- ),
- ),
- ),
- );
-
- $result = self::attrsForSearch($server, $criteria,
- array(self::ATTRIBUTE_MAIL,
- self::ATTRIBUTE_ALIAS),
- self::RESULT_STRICT);
- if (isset($result[self::ATTRIBUTE_ALIAS])) {
- $addrs = array_merge((array) $result[self::ATTRIBUTE_MAIL],
- (array) $result[self::ATTRIBUTE_ALIAS]);
- } else {
- $addrs = $result[self::ATTRIBUTE_MAIL];
- }
-
- if (empty($result)) {
- return array();
- }
- $criteria = array('AND' =>
- array(
- array('field' => self::ATTRIBUTE_OC,
- 'op' => '=',
- 'test' => self::OBJECTCLASS_KOLABINETORGPERSON),
- array('field' => self::ATTRIBUTE_DELEGATE,
- 'op' => '=',
- 'test' => $result[self::ATTRIBUTE_MAIL][0]),
- ),
- );
-
- $result = self::attrsForSearch($server, $criteria,
- array(self::ATTRIBUTE_MAIL,
- self::ATTRIBUTE_ALIAS),
- self::RESULT_MANY);
- if (!empty($result)) {
- foreach ($result as $adr) {
- if (isset($adr[self::ATTRIBUTE_MAIL])) {
- $addrs = array_merge((array) $addrs, (array) $adr[self::ATTRIBUTE_MAIL]);
- }
- if (isset($adr[self::ATTRIBUTE_ALIAS])) {
- $addrs = array_merge((array) $addrs, (array) $adr[self::ATTRIBUTE_ALIAS]);
- }
- }
- }
-
- $addrs = array_map('strtolower', $addrs);
-
- return $addrs;
- }
-
- /**
* Returns the server url of the given type for this user.
*
* This method is used to encapsulate multidomain support.
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabpop3account.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabpop3account.php
index 00c615e9e..7f0385e2d 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabpop3account.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Kolabpop3account.php
@@ -170,7 +170,7 @@ class Horde_Kolab_Server_Object_Kolabpop3account extends Horde_Kolab_Server_Obje
static public function getSearchOperations()
{
$searches = array(
- 'pop3AccountsForMail',
+/* 'pop3AccountsForMail', */
);
return $searches;
}
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Person.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Person.php
index 469347b00..e0c72f000 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Person.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Person.php
@@ -224,32 +224,7 @@ class Horde_Kolab_Server_Object_Person extends Horde_Kolab_Server_Object_Top
static public function getSearchOperations()
{
return array(
- 'uidForCn',
+ 'Horde_Kolab_Server_Object_Search_Guidforcn',
);
}
-
- /**
- * Identify the UID for the first object found with the given common name.
- *
- * @param Horde_Kolab_Server $server The server to search.
- * @param string $cn Search for objects with this
- * common name.
- * @param int $restrict A Horde_Kolab_Server::RESULT_*
- * result restriction.
- *
- * @return mixed The UID or false if there was no result.
- *
- * @throws Horde_Kolab_Server_Exception
- */
- static public function uidForCn($server, $cn,
- $restrict = 0)
- {
- $criteria = array('AND' => array(array('field' => self::ATTRIBUTE_CN,
- 'op' => '=',
- 'test' => $cn),
- ),
- );
- return self::basicUidForSearch($server, $criteria, $restrict);
- }
-
}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search.php
index b59386fab..445989b33 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search.php
@@ -28,9 +28,9 @@
interface Horde_Kolab_Server_Object_Search
{
/**
- * Perform the search.
+ * Return the refernce to the composite server.
*
- * @return mixed The search result.
+ * @return Horde_Kolab_Server_Composite
*/
- public function search();
+ public function getComposite();
}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Addressesforuidormail.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Addressesforuidormail.php
new file mode 100644
index 000000000..21a24bdcb
--- /dev/null
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Addressesforuidormail.php
@@ -0,0 +1,136 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Return the mail addresses of the KolabInetOrgPersons with the given uid or
+ * mail address and include all alias and delegate addresses.
+ *
+ * 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_Object_Search_Addressesforuidormail
+extends Horde_Kolab_Server_Object_Search_Base
+{
+
+ /**
+ * The basic attribute search.
+ *
+ * @var Horde_Kolab_Server_Object_Search
+ */
+ private $_search;
+
+ /**
+ * Constructor
+ *
+ * @param Horde_Kolab_Server_Composite $composite A link to the composite
+ * server handler.
+ */
+ public function __construct(Horde_Kolab_Server_Composite $composite)
+ {
+ $this->_composite = $composite;
+ $this->_search = new Horde_Kolab_Server_Object_Search_Attributes(
+ $this->getComposite()
+ );
+ }
+
+ /**
+ * Return the mail addresses of the KolabInetOrgPersons with the given uid
+ * or mail address and include all alias and delegate addresses.
+ *
+ * @param string $uid The uid to search for.
+ * @param string $mail The mail address to search for.
+ *
+ * @return array The GUID(s).
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function searchAddressesForUidOrMail($uid, $mail)
+ {
+ $criteria = new Horde_Kolab_Server_Query_Element_And(
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Objectclass',
+ Horde_Kolab_Server_Object_Kolabinetorgperson::OBJECTCLASS_KOLABINETORGPERSON
+ ),
+ new Horde_Kolab_Server_Query_Element_Or(
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Uid', $uid
+ ),
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Mail', $mail
+ )
+ )
+ );
+ $search = new Horde_Kolab_Server_Object_Search_Constraint_Strict(
+ $this->_search
+ );
+
+ $data = $search->searchAttributes(
+ $criteria, array('Mail', 'Alias')
+ );
+
+ if (empty($data)) {
+ return array();
+ }
+
+ $mail = $this->getComposite()->structure->getAttributeInternal(
+ 'Mail'
+ );
+ $alias = $this->getComposite()->structure->getAttributeInternal(
+ 'Alias'
+ );
+
+ if (isset($result[$alias])) {
+ $addrs = array_merge($data[$mail], $data[$alias]);
+ } else {
+ $addrs = $data[$mail];
+ }
+
+ $criteria = new Horde_Kolab_Server_Query_Element_And(
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Objectclass',
+ Horde_Kolab_Server_Object_Kolabinetorgperson::OBJECTCLASS_KOLABINETORGPERSON
+ ),
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Delegate', $data[$mail][0]
+ )
+ );
+
+ $data = $this->_search->searchAttributes(
+ $criteria, array('Mail', 'Alias')
+ );
+
+ if (!empty($data)) {
+ foreach ($data as $adr) {
+ if (isset($adr[$mail])) {
+ $addrs = array_merge($addrs, $adr[$mail]);
+ }
+ if (isset($adr[$alias])) {
+ $addrs = array_merge($addrs, $adr[$alias]);
+ }
+ }
+ }
+
+ $addrs = array_map('strtolower', $addrs);
+
+ return $addrs;
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Attributes.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Attributes.php
index 6e9a0d376..058023552 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Attributes.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Attributes.php
@@ -37,12 +37,11 @@ extends Horde_Kolab_Server_Object_Search_Base
*
* @return mixed The search result.
*/
- public function search()
- {
- $criteria = func_get_arg(0);
- $attributes = func_get_arg(1);
-
+ public function searchAttributes(
+ Horde_Kolab_Server_Query_Element $criteria,
+ array $attributes
+ ) {
$params = array('attributes' => $attributes);
- return $this->_composite->server->find($criteria, $params);
+ return $this->getComposite()->structure->find($criteria, $params);
}
}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Base.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Base.php
index 11dfefdff..b14446e3e 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Base.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Base.php
@@ -45,6 +45,16 @@ implements Horde_Kolab_Server_Object_Search
{
$this->_composite = $composite;
}
+
+ /**
+ * Return the refernce to the composite server.
+ *
+ * @return Horde_Kolab_Server_Composite
+ */
+ public function getComposite()
+ {
+ return $this->_composite;
+ }
/**
* Identify the GUID(s) of the result entry(s).
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Children.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Children.php
index 3deb3b8bd..8d18c8abf 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Children.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Children.php
@@ -26,31 +26,27 @@
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
class Horde_Kolab_Server_Object_Search_Children
-extends Horde_Kolab_Server_Object_Search_Guid
+extends Horde_Kolab_Server_Object_Search_Base
{
/**
* Perform the search.
*
- * @param Horde_Kolab_Server_Query_Element $criteria The search criteria.
- * @param string $objectclass The type of children
- * to return.
+ * @param string $parent_guid The guid of the parent.
+ * @param string $objectclass The type of children to return.
*
* @return mixed The search result.
*/
- public function search()
+ public function searchChildren($parent_guid, $objectclass)
{
- $criteria = func_get_arg(0);
- $objectclass = func_get_arg(1);
-
- $criteria = new Horde_Kolab_Server_Query_Element_And(
- array(
- new Horde_Kolab_Server_Query_Element_Equals(
- Horde_Kolab_Server_Object_Top::ATTRIBUTE_OC,
- $objectclass
- ),
- $criteria
- )
+ $criteria = new Horde_Kolab_Server_Query_Element_Equals(
+ 'Objectclass', $objectclass
+ );
+ $params = array(
+ 'attributes' => Horde_Kolab_Server_Object_Top::ATTRIBUTE_GUID
+ );
+ $data = $this->_composite->server->findBelow(
+ $criteria, $parent, $params
);
- return parent::search($criteria);
+ return self::guidFromResult($data);
}
}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Constraint/Single.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Constraint/Single.php
index 82e2ed37c..c935a5dd9 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Constraint/Single.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Constraint/Single.php
@@ -31,7 +31,7 @@ implements Horde_Kolab_Server_Object_Search
/**
* A link to the search.
*
- * @var Horde_Kolab_Server_Search
+ * @var Horde_Kolab_Server_Object_Search
*/
private $_search;
@@ -40,20 +40,33 @@ implements Horde_Kolab_Server_Object_Search
*
* @param Horde_Kolab_Server_Search $search The search being restricted.
*/
- public function __construct(Horde_Kolab_Server_Search $search)
+ public function __construct(Horde_Kolab_Server_Object_Search $search)
{
$this->_search = $search;
}
/**
- * Perform the search.
+ * Return the refernce to the composite server.
*
- * @return mixed The search result.
+ * @return Horde_Kolab_Server_Composite
*/
- public function search()
+ public function getComposite()
+ {
+ return $this->_search->getComposite();
+ }
+
+ /**
+ * Delegate to the actual search operation.
+ *
+ * @param string $method The name of the called method.
+ * @param array $args Arguments of the call.
+ *
+ * @return array The search result.
+ */
+ public function __call($method, $args)
{
$args = func_get_args();
- $result = call_user_func_array(array($this->_search, 'search'), $args);
+ $result = call_user_func_array(array($this->_search, $method), $args);
return array_pop($result);
}
}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Constraint/Strict.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Constraint/Strict.php
index 65f9e3c12..b1e740d73 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Constraint/Strict.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Constraint/Strict.php
@@ -46,13 +46,27 @@ implements Horde_Kolab_Server_Object_Search
}
/**
- * Perform the search.
+ * Return the refernce to the composite server.
*
- * @return mixed The search result.
+ * @return Horde_Kolab_Server_Composite
*/
- public function search()
+ public function getComposite()
+ {
+ return $this->_search->getComposite();
+ }
+
+ /**
+ * Delegate to the actual search operation.
+ *
+ * @param string $method The name of the called method.
+ * @param array $args Arguments of the call.
+ *
+ * @return array The search result.
+ */
+ public function __call($method, $args)
{
$args = func_get_args();
+ $result = call_user_func_array(array($this->_search, $method), $args);
$result = call_user_func_array(array($this->_search, 'search'), $args);
if (count($result) > 1) {
throw new Horde_Kolab_Server_Exception(
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guid.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guid.php
index 0a105495f..45dc17e6b 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guid.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guid.php
@@ -33,16 +33,14 @@ extends Horde_Kolab_Server_Object_Search_Base
*
* @param Horde_Kolab_Server_Query_Element $criteria The search criteria.
*
- * @return mixed The search result.
+ * @return array The search result.
*/
- public function search()
+ public function searchGuid(Horde_Kolab_Server_Query_Element $criteria)
{
- $criteria = func_get_arg(0);
-
$params = array(
- 'attributes' => Horde_Kolab_Server_Object_Top::ATTRIBUTE_GUID
+ 'attributes' => 'Guid'
);
- $data = $this->_composite->server->find($criteria, $params);
+ $data = $this->getComposite()->structure->find($criteria, $params);
return self::guidFromResult($data);
}
}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforalias.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforalias.php
new file mode 100644
index 000000000..9592bca39
--- /dev/null
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforalias.php
@@ -0,0 +1,47 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Return all KolabInetOrgPersons with the given alias address.
+ *
+ * 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_Object_Search_Guidforalias
+extends Horde_Kolab_Server_Object_Search_Restrictkolab
+{
+ /**
+ * Return all KolabInetOrgPersons with the given alias.
+ *
+ * @param string $alias The alias address to search for.
+ *
+ * @return array The GUID(s).
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function searchGuidForAlias($alias)
+ {
+ $criteria = new Horde_Kolab_Server_Query_Element_Equals(
+ 'Alias', $alias
+ );
+ return parent::searchRestrictKolab($criteria);
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforcn.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforcn.php
new file mode 100644
index 000000000..5b31bd31d
--- /dev/null
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforcn.php
@@ -0,0 +1,47 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Identify the GUID for the objects found with the given common name.
+ *
+ * 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_Object_Search_Guidforcn
+extends Horde_Kolab_Server_Object_Search_Guid
+{
+ /**
+ * Identify the GUID for the objects found with the given common name.
+ *
+ * @param string $cn Search for objects with this common name.
+ *
+ * @return array The GUID(s).
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function searchGuidForCn($cn)
+ {
+ $criteria = new Horde_Kolab_Server_Query_Element_Equals(
+ 'Cn', $cn
+ );
+ return parent::searchGuid($criteria);
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforkolabusers.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforkolabusers.php
new file mode 100644
index 000000000..3266c6320
--- /dev/null
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforkolabusers.php
@@ -0,0 +1,46 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Return the GUIDs of all KolabInetOrgPersons.
+ *
+ * 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_Object_Search_Guidforkolabusers
+extends Horde_Kolab_Server_Object_Search_Guid
+{
+ /**
+ * Return the GUIDs of all KolabInetOrgPersons.
+ *
+ * @return array The GUID(s).
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function searchGuidForKolabUsers()
+ {
+ $criteria = new Horde_Kolab_Server_Query_Element_Equals(
+ 'Objectclass',
+ Horde_Kolab_Server_Object_Kolabinetorgperson::OBJECTCLASS_KOLABINETORGPERSON
+ );
+ return parent::searchGuid($criteria);
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidformail.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidformail.php
new file mode 100644
index 000000000..3974c7124
--- /dev/null
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidformail.php
@@ -0,0 +1,47 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Return all KolabInetOrgPersons with the given mail address.
+ *
+ * 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_Object_Search_Guidformail
+extends Horde_Kolab_Server_Object_Search_Restrictkolab
+{
+ /**
+ * Return all KolabInetOrgPersons with the given mail.
+ *
+ * @param string $mail The mail to search for.
+ *
+ * @return array The GUID(s).
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function searchGuidForMail($mail)
+ {
+ $criteria = new Horde_Kolab_Server_Query_Element_Equals(
+ 'Mail', $mail
+ );
+ return parent::searchRestrictKolab($criteria);
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidformailoralias.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidformailoralias.php
new file mode 100644
index 000000000..6ca3fe585
--- /dev/null
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidformailoralias.php
@@ -0,0 +1,53 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Return all KolabInetOrgPersons with the given mail or alias address.
+ *
+ * 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_Object_Search_Guidformailoralias
+extends Horde_Kolab_Server_Object_Search_Restrictkolab
+{
+ /**
+ * Return all KolabInetOrgPersons with the given mail or alias address.
+ *
+ * @param string $mail The mail address to search for.
+ * @param string $alias The alias address to search for.
+ *
+ * @return array The GUID(s).
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function searchGuidForMailOrAlias($mail, $alias)
+ {
+ $criteria = new Horde_Kolab_Server_Query_Element_Or(
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Mail', $mail
+ ),
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Alias', $alias
+ )
+ );
+ return parent::searchRestrictKolab($criteria);
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforuid.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforuid.php
new file mode 100644
index 000000000..0c62c859d
--- /dev/null
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforuid.php
@@ -0,0 +1,47 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Return all KolabInetOrgPersons with the given uid.
+ *
+ * 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_Object_Search_Guidforuid
+extends Horde_Kolab_Server_Object_Search_Restrictkolab
+{
+ /**
+ * Return all KolabInetOrgPersons with the given uid.
+ *
+ * @param string $uid The uid to search for.
+ *
+ * @return array The GUID(s).
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function searchGuidForUid($uid)
+ {
+ $criteria = new Horde_Kolab_Server_Query_Element_Equals(
+ 'Uid', $uid
+ );
+ return parent::searchRestrictKolab($criteria);
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforuidormail.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforuidormail.php
new file mode 100644
index 000000000..3d5eb60d6
--- /dev/null
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforuidormail.php
@@ -0,0 +1,54 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Return all KolabInetOrgPersons with the given uid or mail address.
+ *
+ * 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_Object_Search_Guidforuidormail
+extends Horde_Kolab_Server_Object_Search_Restrictkolab
+{
+ /**
+ * Return all KolabInetOrgPersons with the given uid or mail address.
+ *
+ * @param string $id The uid or mail address to search for.
+ *
+ * @return array The GUID(s).
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function searchGuidForUidOrMail($id)
+ {
+ $criteria = new Horde_Kolab_Server_Query_Element_Or(
+ array(
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Uid', $id
+ ),
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Mail', $id
+ )
+ )
+ );
+ return parent::searchRestrictKolab($criteria);
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforuidormailoralias.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforuidormailoralias.php
new file mode 100644
index 000000000..177ef9669
--- /dev/null
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Guidforuidormailoralias.php
@@ -0,0 +1,57 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Return all KolabInetOrgPersons with the given uid, mail or alias address.
+ *
+ * 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_Object_Search_Guidforuidormailoralias
+extends Horde_Kolab_Server_Object_Search_Restrictkolab
+{
+ /**
+ * Return all KolabInetOrgPersons with the given uid, mail or alias address.
+ *
+ * @param string $id The uid or mail address or alias address to search for.
+ *
+ * @return array The GUID(s).
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function searchGuidForUidOrMailOrAlias($id)
+ {
+ $criteria = new Horde_Kolab_Server_Query_Element_Or(
+ array(
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Uid', $id
+ ),
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Mail', $id
+ ),
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Alias', $id
+ )
+ )
+ );
+ return parent::searchRestrictKolab($criteria);
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Mailforuidormail.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Mailforuidormail.php
new file mode 100644
index 000000000..3006cf1e0
--- /dev/null
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Mailforuidormail.php
@@ -0,0 +1,95 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Return the mail address of the KolabInetOrgPersons with the given uid or mail
+ * address.
+ *
+ * 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_Object_Search_Mailforuidormail
+extends Horde_Kolab_Server_Object_Search_Base
+{
+
+ /**
+ * The base attribute search.
+ *
+ * @var Horde_Kolab_Server_Object_Search
+ */
+ private $_search;
+
+ /**
+ * Constructor
+ *
+ * @param Horde_Kolab_Server_Composite $composite A link to the composite
+ * server handler.
+ */
+ public function __construct(Horde_Kolab_Server_Composite $composite)
+ {
+ $this->_composite = $composite;
+ $this->_search = new Horde_Kolab_Server_Object_Search_Constraint_Strict(
+ new Horde_Kolab_Server_Object_Search_Attributes(
+ $this->getComposite()
+ )
+ );
+ }
+
+ /**
+ * Return the mail address of the KolabInetOrgPersons with the given uid or
+ * mail address.
+ *
+ * @param string $uid The uid to search for.
+ * @param string $mail The mail address to search for.
+ *
+ * @return array The GUID(s).
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function searchMailForUidOrMail($uid, $mail)
+ {
+ $criteria = new Horde_Kolab_Server_Query_Element_And(
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Objectclass',
+ Horde_Kolab_Server_Object_Kolabinetorgperson::OBJECTCLASS_KOLABINETORGPERSON
+ ),
+ new Horde_Kolab_Server_Query_Element_Or(
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Uid', $uid
+ ),
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Mail', $mail
+ )
+ )
+ );
+ $data = $this->_search->searchAttributes($criteria, array('Mail'));
+
+ $internal = $this->getComposite()->structure->getAttributeInternal(
+ 'Mail'
+ );
+ if (!empty($data)) {
+ return $data[$internal][0];
+ } else {
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Restrictkolab.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Restrictkolab.php
new file mode 100644
index 000000000..c7c7e2517
--- /dev/null
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Search/Restrictkolab.php
@@ -0,0 +1,54 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Restrict a search to KolabInetOrgPersons.
+ *
+ * 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_Object_Search_Restrictkolab
+extends Horde_Kolab_Server_Object_Search_Guid
+{
+ /**
+ * Restrict a search to KolabInetOrgPersons.
+ *
+ * @param Horde_Kolab_Server_Query_Element $criteria The search criteria.
+ *
+ * @return array The GUID(s).
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function searchRestrictKolab(
+ Horde_Kolab_Server_Query_Element $criteria
+ ) {
+ $criteria = new Horde_Kolab_Server_Query_Element_And(
+ array(
+ new Horde_Kolab_Server_Query_Element_Equals(
+ 'Objectclass',
+ Horde_Kolab_Server_Object_Kolabinetorgperson::OBJECTCLASS_KOLABINETORGPERSON
+ ),
+ $criteria
+ )
+ );
+ return parent::searchGuid($criteria);
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Top.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Top.php
index 21cabf950..5b50743b5 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Top.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Object/Top.php
@@ -93,9 +93,9 @@ implements Horde_Kolab_Server_Object_Searches
static public function getSearchOperations()
{
$searches = array(
- 'Guid',
- 'Attributes',
- 'Children',
+ 'Horde_Kolab_Server_Object_Search_Guid',
+ 'Horde_Kolab_Server_Object_Search_Attributes',
+ 'Horde_Kolab_Server_Object_Search_Children',
);
return $searches;
}
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Query/Ldap.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Query/Ldap.php
index f6c6fb6ee..ddb05bb2b 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Query/Ldap.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Query/Ldap.php
@@ -35,13 +35,23 @@ class Horde_Kolab_Server_Query_Ldap implements Horde_Kolab_Server_Query
private $_criteria;
/**
+ * The db structure.
+ *
+ * @var Horde_Kolab_Server_Structure
+ */
+ private $_structure;
+
+ /**
* Constructor.
*
* @param array $criteria The query criteria.
*/
- public function __construct(Horde_Kolab_Server_Query_Element $criteria)
- {
- $this->_criteria = $criteria;
+ public function __construct(
+ Horde_Kolab_Server_Query_Element $criteria,
+ Horde_Kolab_Server_Structure $structure
+ ) {
+ $this->_criteria = $criteria;
+ $this->_structure = $structure;
}
/**
@@ -53,8 +63,13 @@ class Horde_Kolab_Server_Query_Ldap implements Horde_Kolab_Server_Query
*/
public function __toString()
{
- $filter = $this->_criteria->convert($this);
- return $filter->asString();
+ try {
+ $filter = $this->_criteria->convert($this);
+ $result = $filter->asString();
+ return $result;
+ } catch (Horde_Kolab_Server_Exception $e) {
+ return '';
+ }
}
/**
@@ -170,7 +185,9 @@ class Horde_Kolab_Server_Query_Ldap implements Horde_Kolab_Server_Query
$operator
) {
$result = Net_LDAP2_Filter::create(
- $single->getName(), $operator, $single->getValue()
+ $this->_structure->getInternalAttribute($single->getName()),
+ $operator,
+ $single->getValue()
);
$this->_handleError($result);
return $result;
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Search/Base.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Search/Base.php
index 0d4a70661..18f4604cc 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Search/Base.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Search/Base.php
@@ -67,18 +67,25 @@ class Horde_Kolab_Server_Search_Base implements Horde_Kolab_Server_Search
$server_searches = array();
foreach ($this->_composite->structure->getSupportedObjects() as $sobj) {
$methods = get_class_methods($sobj);
- if (in_array('getSearchOperations', $methods)) {
- $searches = call_user_func(array($sobj, 'getSearchOperations'));
- foreach ($searches as $search) {
- if (in_array($search, $methods)) {
- $server_searches[$search] = array('class' => $sobj);
- } else {
+ if (!in_array('getSearchOperations', $methods)) {
+ continue;
+ }
+ $search_classes = call_user_func(array($sobj, 'getSearchOperations'));
+ foreach ($search_classes as $search_class) {
+ if (!class_exists($search_class)) {
+ throw new Horde_Kolab_Server_Exception(
sprintf(
- "Class \"%s\" does not support method \"%s\"!",
+ "%s::getSearchOperations specified non-existing class \"%s\"!",
$sobj,
- $search
- );
- }
+ $search_class
+ )
+ );
+ }
+ $methods = get_class_methods($search_class);
+ unset($methods['getComposite']);
+ unset($methods['__construct']);
+ foreach ($methods as $method) {
+ $server_searches[$method] = array('class' => $search_class);
}
}
}
@@ -108,13 +115,9 @@ class Horde_Kolab_Server_Search_Base implements Horde_Kolab_Server_Search
public function __call($method, $args)
{
if (in_array($method, array_keys($this->_searches))) {
- array_unshift($args, $this->_composite);
- return call_user_func_array(
- array(
- $this->_searches[$method]['class'], $method
- ),
- $args
- );
+ $class = $this->_searches[$method]['class'];
+ $search = new $class($this->_composite);
+ return call_user_func_array(array($search, $method), $args);
}
throw new Horde_Kolab_Server_Exception(
sprintf(
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure.php
index 17ccd6a51..9b38e8040 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure.php
@@ -29,6 +29,38 @@
interface Horde_Kolab_Server_Structure
{
/**
+ * Finds object data matching a given set of criteria.
+ *
+ * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
+ * @param array $params Additional search parameters.
+ *
+ * @return Horde_Kolab_Server_Result The result object.
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function find(
+ Horde_Kolab_Server_Query_Element $criteria,
+ array $params = array()
+ );
+
+ /**
+ * Finds all object data below a parent matching a given set of criteria.
+ *
+ * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
+ * @param string $parent The parent to search below.
+ * @param array $params Additional search parameters.
+ *
+ * @return Horde_Kolab_Server_Result The result object.
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function findBelow(
+ Horde_Kolab_Server_Query_Element $criteria,
+ $parent,
+ array $params = array()
+ );
+
+ /**
* Set the composite server reference for this object.
*
* @param Horde_Kolab_Server_Composite $composite A link to the composite
@@ -46,6 +78,15 @@ interface Horde_Kolab_Server_Structure
public function getSupportedObjects();
/**
+ * Maps the external attribute name to its internal counterpart.
+ *
+ * @param string $external The external attribute name.
+ *
+ * @return string The internal attribute name.
+ */
+ public function getInternalAttribute($external);
+
+ /**
* Determine the type of an object by its tree position and other
* parameters.
*
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure/Base.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure/Base.php
index 0c18a4ea6..d840ef3d2 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure/Base.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure/Base.php
@@ -32,7 +32,49 @@ abstract class Horde_Kolab_Server_Structure_Base implements Horde_Kolab_Server_S
*
* @var Horde_Kolab_Server_Composite
*/
- protected $composite;
+ private $_composite;
+
+ /**
+ * Finds object data matching a given set of criteria.
+ *
+ * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
+ * @param array $params Additional search parameters.
+ *
+ * @return Horde_Kolab_Server_Result The result object.
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function find(
+ Horde_Kolab_Server_Query_Element $criteria,
+ array $params = array()
+ ) {
+ $query = new Horde_Kolab_Server_Query_Ldap($criteria, $this);
+ return $this->_composite->server->find(
+ (string) $query, $params
+ );
+ }
+
+ /**
+ * Finds all object data below a parent matching a given set of criteria.
+ *
+ * @param Horde_Kolab_Server_Query_Element $criteria The criteria for the search.
+ * @param string $parent The parent to search below.
+ * @param array $params Additional search parameters.
+ *
+ * @return Horde_Kolab_Server_Result The result object.
+ *
+ * @throws Horde_Kolab_Server_Exception
+ */
+ public function findBelow(
+ Horde_Kolab_Server_Query_Element $criteria,
+ $parent,
+ array $params = array()
+ ) {
+ $query = new Horde_Kolab_Server_Query_Ldap($criteria, $this);
+ return $this->_composite->server->findBelow(
+ (string) $query, $parent, $params
+ );
+ }
/**
* Set the composite server reference for this object.
@@ -44,6 +86,17 @@ abstract class Horde_Kolab_Server_Structure_Base implements Horde_Kolab_Server_S
*/
public function setComposite(Horde_Kolab_Server_Composite $composite)
{
- $this->composite = $composite;
+ $this->_composite = $composite;
+ }
+
+ /**
+ * Get the composite server reference for this object.
+ *
+ * @return Horde_Kolab_Server_Composite A link to the composite server
+ * handler.
+ */
+ public function getComposite()
+ {
+ return $this->_composite;
}
}
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure/Kolab.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure/Kolab.php
index 263b1a940..28c9a5616 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure/Kolab.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure/Kolab.php
@@ -86,9 +86,9 @@ class Horde_Kolab_Server_Structure_Kolab extends Horde_Kolab_Server_Structure_Ld
return parent::_determineType($guid, $ocs);
}
- $groups = $this->composite->search->getGroups($guid);
+ $groups = $this->getComposite()->search->getGroups($guid);
if (!empty($groups)) {
- $base = $this->composite->server->getBaseGuid();
+ $base = $this->getComposite()->server->getBaseGuid();
if (in_array('cn=admin,cn=internal,' . $base, $groups)) {
return 'Horde_Kolab_Server_Object_Kolab_Administrator';
}
diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure/Ldap.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure/Ldap.php
index 3e1639eb4..8518d0b2c 100644
--- a/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure/Ldap.php
+++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/Structure/Ldap.php
@@ -77,9 +77,6 @@ class Horde_Kolab_Server_Structure_Ldap extends Horde_Kolab_Server_Structure_Bas
} catch (Horde_Kolab_Server_Exception $e) {
}
}
- if ($oc == 'top') {
- return 'Horde_Kolab_Server_Object';
- }
throw new Horde_Kolab_Server_Exception(
sprintf("Unknown object type for GUID %s.", $guid),
Horde_Kolab_Server_Exception::SYSTEM
@@ -97,7 +94,7 @@ class Horde_Kolab_Server_Structure_Ldap extends Horde_Kolab_Server_Structure_Bas
*/
public function generateServerGuid($type, $id, array $info)
{
- return sprintf('%s,%s', $id, $this->composite->server->getBaseGuid());
+ return sprintf('%s,%s', $id, $this->getComposite()->server->getBaseGuid());
}
/**
@@ -115,7 +112,7 @@ class Horde_Kolab_Server_Structure_Ldap extends Horde_Kolab_Server_Structure_Bas
*/
protected function getObjectClasses($guid)
{
- $object = $this->composite->server->read(
+ $object = $this->getComposite()->server->read(
$guid, array('objectClass')
);
if (!isset($object['objectClass'])) {
@@ -133,4 +130,29 @@ class Horde_Kolab_Server_Structure_Ldap extends Horde_Kolab_Server_Structure_Bas
);
return $result;
}
+
+ /**
+ * Maps the external attribute name to its internal counterpart.
+ *
+ * @param string $external The external attribute name.
+ *
+ * @return string The internal attribute name.
+ */
+ public function getInternalAttribute($external)
+ {
+ switch ($external) {
+ case 'Objectclass':
+ return 'objectClass';
+ case 'Guid':
+ return 'dn';
+ case 'Uid':
+ return 'uid';
+ case 'Mail':
+ return 'mail';
+ default:
+ throw new Horde_Kolab_Server_Exception(
+ sprintf('Undefined internal attribute "%s"', $external)
+ );
+ }
+ }
}
diff --git a/framework/Kolab_Server/package.xml b/framework/Kolab_Server/package.xml
index 0891eea69..58265c3fc 100644
--- a/framework/Kolab_Server/package.xml
+++ b/framework/Kolab_Server/package.xml
@@ -141,6 +141,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
+
@@ -149,6 +150,16 @@ http://pear.php.net/dtd/package-2.0.xsd">
+
+
+
+
+
+
+
+
+
+
@@ -218,6 +229,41 @@ http://pear.php.net/dtd/package-2.0.xsd">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -241,7 +287,7 @@ http://pear.php.net/dtd/package-2.0.xsd">
-
+
@@ -252,23 +298,6 @@ http://pear.php.net/dtd/package-2.0.xsd">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -376,12 +405,23 @@ http://pear.php.net/dtd/package-2.0.xsd">
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -416,6 +456,25 @@ http://pear.php.net/dtd/package-2.0.xsd">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -435,20 +494,11 @@ http://pear.php.net/dtd/package-2.0.xsd">
-
+
-
-
-
-
-
-
-
-
-
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Attribute/BaseTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Attribute/BaseTest.php
index 17bac91e3..654f8cc7f 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Attribute/BaseTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Attribute/BaseTest.php
@@ -14,12 +14,12 @@
/**
* Prepare the test setup.
*/
-require_once dirname(__FILE__) . '/../Autoload.php';
+require_once dirname(__FILE__) . '/../TestCase.php';
/**
* Test the base attribute.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
@@ -30,16 +30,14 @@ require_once dirname(__FILE__) . '/../Autoload.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_Attribute_BaseTest extends PHPUnit_Framework_TestCase
+class Horde_Kolab_Server_Attribute_BaseTest extends Horde_Kolab_Server_TestCase
{
public function setUp()
{
$this->object = $this->getMock(
'Horde_Kolab_Server_Object', array(), array(), '', false
);
- $this->composite = $this->getMock(
- 'Horde_Kolab_Server_Composite', array(), array(), '', false
- );
+ $this->composite = $this->getMockedComposite();
}
public function testMethodConstructHasParameterObjectTheObjectOwningTheAttributeAndParameterCompositeWhichIsTheLinkToTheServer()
@@ -60,6 +58,10 @@ class Horde_Kolab_Server_Attribute_BaseTest extends PHPUnit_Framework_TestCase
public function testMethodGetnameReturnsStringTheNameOfTheAttribute()
{
+ $this->composite->structure->expects($this->exactly(1))
+ ->method('getInternalAttribute')
+ ->with('name')
+ ->will($this->returnValue('name'));
$attribute = new Attribute_Mock($this->object, $this->composite, 'name');
$this->assertEquals('name', $attribute->getInternalName());
}
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Attribute/ValueTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Attribute/ValueTest.php
index 428c80789..61c652b1f 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Attribute/ValueTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Attribute/ValueTest.php
@@ -19,7 +19,7 @@ require_once dirname(__FILE__) . '/../Autoload.php';
/**
* Test the value attribute.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/ConfigurationTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/ConfigurationTest.php
index 58ef12411..8e7a6016e 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/ConfigurationTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/ConfigurationTest.php
@@ -12,9 +12,9 @@
*/
/**
- * Prepare the test setup.
+ * Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../../../Autoload.php';
+require_once dirname(__FILE__) . '/../../../LdapTestCase.php';
/**
* Test the configuration based server factory.
@@ -31,7 +31,7 @@ require_once dirname(__FILE__) . '/../../../Autoload.php';
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
class Horde_Kolab_Server_Class_Server_Factory_ConfigurationTest
-extends PHPUnit_Framework_TestCase
+extends Horde_Kolab_Server_LdapTestCase
{
public function testMethodGetserverHasResultLoggedServerIfALoggerWasProvidedInTheConfiguration()
{
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/Conn/ConfigurationTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/Conn/ConfigurationTest.php
new file mode 100644
index 000000000..e081dbcfe
--- /dev/null
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/Conn/ConfigurationTest.php
@@ -0,0 +1,79 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Require our basic test case definition
+ */
+require_once dirname(__FILE__) . '/../../../../LdapTestCase.php';
+
+/**
+ * Test the configuration based connection factory.
+ *
+ * Copyright 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_Class_Server_Factory_Conn_ConfigurationTest
+extends Horde_Kolab_Server_LdapTestCase
+{
+ public function testMethodConstructHasParameterArrayConfiguration()
+ {
+ $factory = new Horde_Kolab_Server_Factory_Conn_Configuration(
+ array('basedn' => 'a')
+ );
+ }
+
+ public function testMethodConstructHasPostconditionThatTheConfigurationWasSaved()
+ {
+ $factory = new Horde_Kolab_Server_Factory_Conn_Configuration(
+ array('basedn' => 'a')
+ );
+ $this->assertEquals(array('basedn' => 'a'), $factory->getConfiguration());
+ }
+
+ public function testMethodConstructHasResultArrayTheConfiguration()
+ {
+ $factory = new Horde_Kolab_Server_Factory_Conn_Configuration(
+ array('basedn' => 'a')
+ );
+ $this->assertType('array', $factory->getConfiguration());
+ }
+
+ public function testMethodConstructHasPostconditionThatTheConnectionFactoryHasBeenSet()
+ {
+ $factory = new Horde_Kolab_Server_Factory_Conn_Configuration(
+ array('mock' => true)
+ );
+ $this->assertType('Horde_Kolab_Server_Connection_Mock', $factory->getConnection());
+ }
+
+ public function testMethodGetconnectionHasResultMockConnectionIfConfiguredThatWay()
+ {
+ $this->testMethodConstructHasPostconditionThatTheConnectionFactoryHasBeenSet();
+ }
+
+ public function testMethodGetconnectionHasResultLdapConnectionIfConfiguredThatWay()
+ {
+ $factory = new Horde_Kolab_Server_Factory_Conn_Configuration(
+ array('basedn' => 'a')
+ );
+ $this->assertType('Horde_Kolab_Server_Connection_Simpleldap', $factory->getConnection());
+ }
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/Conn/LdapTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/Conn/LdapTest.php
index 7f2aaa9f1..b00c13717 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/Conn/LdapTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/Conn/LdapTest.php
@@ -12,9 +12,9 @@
*/
/**
- * Prepare the test setup.
+ * Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../../../../Autoload.php';
+require_once dirname(__FILE__) . '/../../../../LdapTestCase.php';
/**
* Test the ldap connection factory.
@@ -31,7 +31,7 @@ require_once dirname(__FILE__) . '/../../../../Autoload.php';
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
class Horde_Kolab_Server_Class_Server_Factory_Conn_LdapTest
-extends PHPUnit_Framework_TestCase
+extends Horde_Kolab_Server_LdapTestCase
{
public function testMethodSetconfigurationHasPostconditionThatTheServerParameterWasRewritten()
{
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/ConstructorTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/ConstructorTest.php
index 59f42df6e..ed0ca15d5 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/ConstructorTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/ConstructorTest.php
@@ -12,9 +12,9 @@
*/
/**
- * Prepare the test setup.
+ * Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../../../Autoload.php';
+require_once dirname(__FILE__) . '/../../../LdapTestCase.php';
/**
* Test the mapping server factory.
@@ -31,10 +31,11 @@ require_once dirname(__FILE__) . '/../../../Autoload.php';
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
class Horde_Kolab_Server_Class_Server_Factory_ConstructorTest
-extends PHPUnit_Framework_TestCase
+extends Horde_Kolab_Server_LdapTestCase
{
public function setUp()
{
+ parent::setUp();
$this->factory = $this->getMock('Horde_Kolab_Server_Factory_Conn');
$this->objects = $this->getMock('Horde_Kolab_Server_Objects');
$this->structure = $this->getMock('Horde_Kolab_Server_Structure');
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/InjectorTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/InjectorTest.php
index 8dadfb108..3e522348a 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/InjectorTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/InjectorTest.php
@@ -12,9 +12,9 @@
*/
/**
- * Prepare the test setup.
+ * Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../../../Autoload.php';
+require_once dirname(__FILE__) . '/../../../LdapTestCase.php';
/**
* Test the injector based server factory.
@@ -31,7 +31,7 @@ require_once dirname(__FILE__) . '/../../../Autoload.php';
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
class Horde_Kolab_Server_Class_Server_Factory_InjectorTest
-extends PHPUnit_Framework_TestCase
+extends Horde_Kolab_Server_LdapTestCase
{
private function _getFactory(array $configuration = array())
{
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/KolabTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/KolabTest.php
index 2b8a4e8b8..64e4c29ad 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/KolabTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Factory/KolabTest.php
@@ -12,9 +12,9 @@
*/
/**
- * Prepare the test setup.
+ * Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../../../Autoload.php';
+require_once dirname(__FILE__) . '/../../../LdapTestCase.php';
/**
* Test the default Kolab server factory.
@@ -31,10 +31,11 @@ require_once dirname(__FILE__) . '/../../../Autoload.php';
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
class Horde_Kolab_Server_Class_Server_Factory_KolabTest
-extends PHPUnit_Framework_TestCase
+extends Horde_Kolab_Server_LdapTestCase
{
public function setUp()
{
+ parent::setUp();
$this->conn_factory = $this->getMock('Horde_Kolab_Server_Factory_Conn');
$this->connection = $this->getMock('Horde_Kolab_Server_Connection');
}
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Ldap/ChangesTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Ldap/ChangesTest.php
new file mode 100644
index 000000000..a0c47bc69
--- /dev/null
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Ldap/ChangesTest.php
@@ -0,0 +1,190 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Prepare the test setup.
+ */
+require_once dirname(__FILE__) . '/../../../Autoload.php';
+
+/**
+ * Test the LDAP changeset handler.
+ *
+ * Copyright 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_Class_Server_Ldap_ChangesTest extends PHPUnit_Framework_TestCase
+{
+ public function testMethodConstructHasParameterServerobject()
+ {
+ $changes = new Horde_Kolab_Server_Ldap_Changes(
+ $this->getMock('Horde_Kolab_Server_Object'), array()
+ );
+ }
+
+ public function testMethodConstructHasParameterArrayDataToBeStored()
+ {
+ $changes = new Horde_Kolab_Server_Ldap_Changes(
+ $this->getMock('Horde_Kolab_Server_Object'),
+ array('store' => 'value')
+ );
+ }
+
+ public function testMethodGetchangesetHasResultArrayEmptyIfOldAndNewDatasetsWereEmpty()
+ {
+ $object = $this->getMock('Horde_Kolab_Server_Object');
+ $object->expects($this->once())
+ ->method('readInternal')
+ ->will($this->returnValue(array()));
+ $changes = new Horde_Kolab_Server_Ldap_Changes(
+ $object, array()
+ );
+ $this->assertEquals(array(), $changes->getChangeset());
+ }
+
+ public function testMethodGetchangesetHasResultArrayEmptyIfOldAndNewDatasetsWereEqual()
+ {
+ $object = $this->getMock('Horde_Kolab_Server_Object');
+ $object->expects($this->once())
+ ->method('readInternal')
+ ->will($this->returnValue(array('a' => array('a'))));
+ $changes = new Horde_Kolab_Server_Ldap_Changes(
+ $object, array('a' => array('a'))
+ );
+ $this->assertEquals(array(), $changes->getChangeset());
+ }
+
+ public function testMethodGetchangesetHasResultArrayNewAttributesInNewDatasetAsAdded()
+ {
+ $object = $this->getMock('Horde_Kolab_Server_Object');
+ $object->expects($this->once())
+ ->method('readInternal')
+ ->will($this->returnValue(array()));
+ $changes = new Horde_Kolab_Server_Ldap_Changes(
+ $object, array('new' => 'a')
+ );
+ $this->assertEquals(
+ array(
+ 'add' => array(
+ 'new' => 'a'
+ )
+ ),
+ $changes->getChangeset()
+ );
+ }
+
+ public function testMethodGetchangesetHasResultArrayMissingValuesInNewDatasetAsDeleted()
+ {
+ $object = $this->getMock('Horde_Kolab_Server_Object');
+ $object->expects($this->once())
+ ->method('readInternal')
+ ->will($this->returnValue(array('old' => 'a')));
+ $changes = new Horde_Kolab_Server_Ldap_Changes(
+ $object, array()
+ );
+ $this->assertEquals(
+ array(
+ 'delete' => array(
+ 'old'
+ )
+ ),
+ $changes->getChangeset()
+ );
+ }
+
+ public function testMethodGetchangesetHasResultArraySingleValuesWithDifferencesAsReplaced()
+ {
+ $object = $this->getMock('Horde_Kolab_Server_Object');
+ $object->expects($this->once())
+ ->method('readInternal')
+ ->will($this->returnValue(array('value' => 'a')));
+ $changes = new Horde_Kolab_Server_Ldap_Changes(
+ $object, array('value' => 'b')
+ );
+ $this->assertEquals(
+ array(
+ 'replace' => array(
+ 'value' => 'b'
+ )
+ ),
+ $changes->getChangeset()
+ );
+ }
+
+ public function testMethodGetchangesetHasResultArrayTheNewValuesAsAdded()
+ {
+ $object = $this->getMock('Horde_Kolab_Server_Object');
+ $object->expects($this->once())
+ ->method('readInternal')
+ ->will($this->returnValue(array('value' => array('a', 'b', 'c'))));
+ $changes = new Horde_Kolab_Server_Ldap_Changes(
+ $object, array('value' => array('a', 'b', 'c', 'd'))
+ );
+ $this->assertEquals(
+ array(
+ 'add' => array(
+ 'value' => array('d')
+ )
+ ),
+ $changes->getChangeset()
+ );
+ }
+
+ public function testMethodGetchangesetHasResultArrayTheRemovedValuesAsDeleted()
+ {
+ $object = $this->getMock('Horde_Kolab_Server_Object');
+ $object->expects($this->once())
+ ->method('readInternal')
+ ->will($this->returnValue(array('value' => array('a', 'b', 'c'))));
+ $changes = new Horde_Kolab_Server_Ldap_Changes(
+ $object, array('value' => array('b', 'c'))
+ );
+ $this->assertEquals(
+ array(
+ 'delete' => array(
+ 'value' => array('a')
+ )
+ ),
+ $changes->getChangeset()
+ );
+ }
+
+ public function testMethodGetchangesetHasResultArrayTheNewValuesAsAddedAndTheRemovedValuesAsDeleted()
+ {
+ $object = $this->getMock('Horde_Kolab_Server_Object');
+ $object->expects($this->once())
+ ->method('readInternal')
+ ->will($this->returnValue(array('value' => array('a', 'b', 'c'))));
+ $changes = new Horde_Kolab_Server_Ldap_Changes(
+ $object, array('value' => array('b', 'c', 'd'))
+ );
+ $this->assertEquals(
+ array(
+ 'add' => array(
+ 'value' => array('d')
+ ),
+ 'delete' => array(
+ 'value' => array('a')
+ )
+ ),
+ $changes->getChangeset()
+ );
+ }
+}
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Server/FilteredTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Ldap/FilteredTest.php
similarity index 80%
rename from framework/Kolab_Server/test/Horde/Kolab/Server/Server/FilteredTest.php
rename to framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Ldap/FilteredTest.php
index 10478b1ca..e23aabd0b 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Server/FilteredTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Ldap/FilteredTest.php
@@ -14,12 +14,12 @@
/**
* Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../LdapBase.php';
+require_once dirname(__FILE__) . '/../../../LdapTestCase.php';
/**
* Test the filtered LDAP driver.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
@@ -30,7 +30,7 @@ require_once dirname(__FILE__) . '/../LdapBase.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_Server_FilteredTest extends Horde_Kolab_Server_LdapBase
+class Horde_Kolab_Server_Class_Server_Ldap_FilteredTest extends Horde_Kolab_Server_LdapTestCase
{
public function setUp()
{
@@ -70,8 +70,7 @@ class Horde_Kolab_Server_Server_FilteredTest extends Horde_Kolab_Server_LdapBase
->method('search')
->with('', '(&(filter)(equals=equals))', array())
->will($this->returnValue($this->getSearchResultMock()));
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $this->server->findBelow($equals, '');
+ $this->server->findBelow('(equals=equals)', '');
}
public function testMethodFindbelowHasParameterStringParent()
@@ -80,8 +79,7 @@ class Horde_Kolab_Server_Server_FilteredTest extends Horde_Kolab_Server_LdapBase
->method('search')
->with('parent', '(&(filter)(equals=equals))', array())
->will($this->returnValue($this->getSearchResultMock()));
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $this->server->findBelow($equals, 'parent', array());
+ $this->server->findBelow('(equals=equals)', 'parent', array());
}
public function testMethodFindbelowHasParameterArrayAdditionalParameters()
@@ -90,8 +88,7 @@ class Horde_Kolab_Server_Server_FilteredTest extends Horde_Kolab_Server_LdapBase
->method('search')
->with('', '(&(filter)(equals=equals))', array())
->will($this->returnValue($this->getSearchResultMock()));
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $this->server->findBelow($equals, '', array());
+ $this->server->findBelow('(equals=equals)', '', array());
}
public function testMethodFindbelowReturnsArraySearchResult()
@@ -100,10 +97,9 @@ class Horde_Kolab_Server_Server_FilteredTest extends Horde_Kolab_Server_LdapBase
->method('search')
->with('parent', '(&(filter)(equals=equals))', array())
->will($this->returnValue($this->getSearchResultMock()));
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
$this->assertEquals(
array(array('dn' => 'test')),
- $this->server->findBelow($equals, 'parent')->asArray()
+ $this->server->findBelow('(equals=equals)', 'parent')->asArray()
);
}
@@ -113,8 +109,7 @@ class Horde_Kolab_Server_Server_FilteredTest extends Horde_Kolab_Server_LdapBase
->method('search')
->will($this->returnValue(new PEAR_Error('Search failed!')));
try {
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $this->assertEquals(array('dn' => 'test'), $this->server->findBelow($equals, ''));
+ $this->assertEquals(array('dn' => 'test'), $this->server->findBelow('(equals=equals)', ''));
$this->fail('No exception!');
} catch (Exception $e) {
$this->assertEquals('Search failed!', $e->getMessage());
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Server/StandardTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Ldap/StandardTest.php
similarity index 79%
rename from framework/Kolab_Server/test/Horde/Kolab/Server/Server/StandardTest.php
rename to framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Ldap/StandardTest.php
index b5486ef3a..be5bf7cfc 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Server/StandardTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Ldap/StandardTest.php
@@ -14,12 +14,12 @@
/**
* Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../LdapBase.php';
+require_once dirname(__FILE__) . '/../../../LdapTestCase.php';
/**
* Test the standard LDAP driver.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
@@ -30,7 +30,7 @@ require_once dirname(__FILE__) . '/../LdapBase.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_Server_StandardTest extends Horde_Kolab_Server_LdapBase
+class Horde_Kolab_Server_Class_Server_Ldap_StandardTest extends Horde_Kolab_Server_LdapTestCase
{
public function setUp()
{
@@ -69,8 +69,7 @@ class Horde_Kolab_Server_Server_StandardTest extends Horde_Kolab_Server_LdapBase
->method('search')
->with('', '(equals=equals)', array())
->will($this->returnValue($this->getSearchResultMock()));
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $this->server->findBelow($equals, '');
+ $this->server->findBelow('(equals=equals)', '');
}
public function testMethodFindbelowHasParameterStringParent()
@@ -79,8 +78,7 @@ class Horde_Kolab_Server_Server_StandardTest extends Horde_Kolab_Server_LdapBase
->method('search')
->with('parent', '(equals=equals)', array())
->will($this->returnValue($this->getSearchResultMock()));
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $this->server->findBelow($equals, 'parent', array());
+ $this->server->findBelow('(equals=equals)', 'parent', array());
}
public function testMethodFindbelowHasParameterArrayAdditionalParameters()
@@ -89,8 +87,7 @@ class Horde_Kolab_Server_Server_StandardTest extends Horde_Kolab_Server_LdapBase
->method('search')
->with('', '(equals=equals)', array())
->will($this->returnValue($this->getSearchResultMock()));
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $this->server->findBelow($equals, '', array());
+ $this->server->findBelow('(equals=equals)', '', array());
}
public function testMethodFindbelowReturnsArraySearchResult()
@@ -99,10 +96,9 @@ class Horde_Kolab_Server_Server_StandardTest extends Horde_Kolab_Server_LdapBase
->method('search')
->with('parent', '(equals=equals)', array())
->will($this->returnValue($this->getSearchResultMock()));
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
$this->assertEquals(
array(array('dn' => 'test')),
- $this->server->findBelow($equals, 'parent')->asArray()
+ $this->server->findBelow('(equals=equals)', 'parent')->asArray()
);
}
@@ -112,8 +108,7 @@ class Horde_Kolab_Server_Server_StandardTest extends Horde_Kolab_Server_LdapBase
->method('search')
->will($this->returnValue(new PEAR_Error('Search failed!')));
try {
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $this->assertEquals(array('dn' => 'test'), $this->server->findBelow($equals, ''));
+ $this->assertEquals(array('dn' => 'test'), $this->server->findBelow('(equals=equals)', ''));
$this->fail('No exception!');
} catch (Exception $e) {
$this->assertEquals('Search failed!', $e->getMessage());
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Server/LdapTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/LdapTest.php
similarity index 96%
rename from framework/Kolab_Server/test/Horde/Kolab/Server/Server/LdapTest.php
rename to framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/LdapTest.php
index c014d2173..1bdfb16c3 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Server/LdapTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/LdapTest.php
@@ -14,12 +14,12 @@
/**
* Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../LdapBase.php';
+require_once dirname(__FILE__) . '/../../LdapTestCase.php';
/**
* Test the LDAP backend.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
@@ -30,7 +30,7 @@ require_once dirname(__FILE__) . '/../LdapBase.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_Server_LdapTest extends Horde_Kolab_Server_LdapBase
+class Horde_Kolab_Server_Class_Server_LdapTest extends Horde_Kolab_Server_LdapTestCase
{
public function setUp()
{
@@ -63,6 +63,11 @@ class Horde_Kolab_Server_Server_LdapTest extends Horde_Kolab_Server_LdapBase
return $result;
}
+ public function testMethodGetbaseguidHasResultStringBaseGuid()
+ {
+ $this->assertEquals('base', $this->server->getBaseGuid());
+ }
+
public function testMethodConnectguidHasStringParameterGuid()
{
$this->server->connectGuid('guid', '');
@@ -217,8 +222,7 @@ class Horde_Kolab_Server_Server_LdapTest extends Horde_Kolab_Server_LdapBase
->method('search')
->with('base', '(equals=equals)', array())
->will($this->returnValue($this->getSearchResultMock()));
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $this->server->find($equals);
+ $this->server->find('(equals=equals)');
}
public function testMethodFindHasParameterArrayAdditionalParameters()
@@ -227,8 +231,7 @@ class Horde_Kolab_Server_Server_LdapTest extends Horde_Kolab_Server_LdapBase
->method('search')
->with('base', '(equals=equals)', array())
->will($this->returnValue($this->getSearchResultMock()));
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $this->server->find($equals, array());
+ $this->server->find('(equals=equals)', array());
}
public function testMethodFindReturnsArraySearchResult()
@@ -237,10 +240,9 @@ class Horde_Kolab_Server_Server_LdapTest extends Horde_Kolab_Server_LdapBase
->method('search')
->with('base', '(equals=equals)', array())
->will($this->returnValue($this->getSearchResultMock()));
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
$this->assertEquals(
array(array('dn' => 'test')),
- $this->server->find($equals)->asArray()
+ $this->server->find('(equals=equals)')->asArray()
);
}
@@ -250,8 +252,7 @@ class Horde_Kolab_Server_Server_LdapTest extends Horde_Kolab_Server_LdapBase
->method('search')
->will($this->returnValue(new PEAR_Error('Search failed!')));
try {
- $equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $this->assertEquals(array('dn' => 'test'), $this->server->find($equals));
+ $this->assertEquals(array('dn' => 'test'), $this->server->find('(equals=equals)'));
$this->fail('No exception!');
} catch (Exception $e) {
$this->assertEquals('Search failed!', $e->getMessage());
@@ -482,6 +483,13 @@ class Horde_Kolab_Server_Server_LdapTest extends Horde_Kolab_Server_LdapBase
}
}
+ public function testMethodGetparentguidHasResultStringParentGuid()
+ {
+ $this->assertEquals(
+ 'cn=parent', $this->server->getParentGuid('cn=child,cn=parent')
+ );
+ }
+
/* public function testMethodSearchReturnsArrayMappedSearchResultIfMappingIsActivated() */
/* { */
/* $ldap = $this->getMock('Net_LDAP2', array('search')); */
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/LoggedTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/LoggedTest.php
new file mode 100644
index 000000000..f094ee9cc
--- /dev/null
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/LoggedTest.php
@@ -0,0 +1,228 @@
+
+ * @license http://www.fsf.org/copyleft/lgpl.html LGPL
+ * @link http://pear.horde.org/index.php?package=Kolab_Server
+ */
+
+/**
+ * Prepare the test setup.
+ */
+require_once dirname(__FILE__) . '/../../Autoload.php';
+
+/**
+ * Test the log decorator for the server.
+ *
+ * Copyright 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_Class_Server_LoggedTest extends PHPUnit_Framework_TestCase
+{
+ public function setUp()
+ {
+ parent::setUp();
+
+ $this->logger = $this->getMock('Horde_Log_Logger');
+ $this->server = $this->getMock('Horde_Kolab_Server');
+ $this->logged = new Horde_Kolab_Server_Logged(
+ $this->server, $this->logger
+ );
+ }
+
+ public function testMethodGetbaseguidHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $this->server->expects($this->exactly(1))
+ ->method('getBaseGuid')
+ ->will($this->returnValue('base'));
+ $this->assertEquals('base', $this->logged->getBaseGuid());
+ }
+
+ public function testMethodGetuidHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $this->server->expects($this->exactly(1))
+ ->method('getGuid')
+ ->will($this->returnValue('guid'));
+ $this->assertEquals('guid', $this->logged->getGuid());
+ }
+
+ public function testMethodConnectguidHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $this->server->expects($this->exactly(1))
+ ->method('connectGuid')
+ ->with('user', 'pass');
+ $this->logged->connectGuid('user', 'pass');
+ }
+
+ public function testMethodReadHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $this->server->expects($this->exactly(1))
+ ->method('read')
+ ->with('guid')
+ ->will($this->returnValue(array()));
+ $this->assertEquals(array(), $this->logged->read('guid'));
+ }
+
+ public function testMethodReadattributesHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $this->server->expects($this->exactly(1))
+ ->method('readAttributes')
+ ->with('guid', array('a'))
+ ->will($this->returnValue(array()));
+ $this->assertEquals(
+ array(), $this->logged->readAttributes('guid', array('a'))
+ );
+ }
+
+ public function testMethodFindHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $result = $this->getMock('Horde_Kolab_Server_Result');
+ $query = $this->getMock(
+ 'Horde_Kolab_Server_Query_Element', array(), array(), '', false
+ );
+ $this->server->expects($this->exactly(1))
+ ->method('find')
+ ->with($query)
+ ->will($this->returnValue($result));
+ $this->assertType(
+ 'Horde_Kolab_Server_Result',
+ $this->logged->find($query)
+ );
+ }
+
+ public function testMethodFindbelowHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $result = $this->getMock('Horde_Kolab_Server_Result');
+ $query = $this->getMock(
+ 'Horde_Kolab_Server_Query_Element', array(), array(), '', false
+ );
+ $this->server->expects($this->exactly(1))
+ ->method('findBelow')
+ ->with($query, 'none')
+ ->will($this->returnValue($result));
+ $this->assertType(
+ 'Horde_Kolab_Server_Result',
+ $this->logged->findBelow($query, 'none')
+ );
+ }
+
+ public function testMethodSaveHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $object = $this->getMock(
+ 'Horde_Kolab_Server_Object', array(), array(), '', false
+ );
+ $this->server->expects($this->exactly(1))
+ ->method('save')
+ ->with($object, array('a' => 'a'));
+ $this->logged->save($object, array('a' => 'a'));
+ }
+
+ public function testMethodAddHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $object = $this->getMock(
+ 'Horde_Kolab_Server_Object', array(), array(), '', false
+ );
+ $this->server->expects($this->exactly(1))
+ ->method('add')
+ ->with($object, array('a' => 'a'));
+ $this->logged->add($object, array('a' => 'a'));
+ }
+
+ public function testMethodDeleteHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $this->server->expects($this->exactly(1))
+ ->method('delete')
+ ->with('a');
+ $this->logged->delete('a');
+ }
+
+ public function testMethodRenameHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $this->server->expects($this->exactly(1))
+ ->method('rename')
+ ->with('a', 'b');
+ $this->logged->rename('a', 'b');
+ }
+
+ public function testMethodGetschemaHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $this->server->expects($this->exactly(1))
+ ->method('getSchema');
+ $this->logged->getSchema();
+ }
+
+ public function testMethodSaveHasPostconditionThatTheEventWasLogged()
+ {
+ $object = $this->getMock(
+ 'Horde_Kolab_Server_Object', array(), array(), '', false
+ );
+ $object->expects($this->once())
+ ->method('getGuid')
+ ->will($this->returnValue('a'));
+ $this->logger->expects($this->once())
+ ->method('__call')
+ ->with(
+ 'info', array('The object "a" has been successfully saved!')
+ );
+ $this->logged->save($object, array('a' => 'a'));
+ }
+
+ public function testMethodAddHasPostconditionThatTheEventWasLogged()
+ {
+ $object = $this->getMock(
+ 'Horde_Kolab_Server_Object', array(), array(), '', false
+ );
+ $object->expects($this->once())
+ ->method('getGuid')
+ ->will($this->returnValue('a'));
+ $this->logger->expects($this->once())
+ ->method('__call')
+ ->with(
+ 'info', array('The object "a" has been successfully added!')
+ );
+ $this->logged->add($object, array('a' => 'a'));
+ }
+
+ public function testMethodDeleteHasPostconditionThatTheEventWasLogged()
+ {
+ $this->logger->expects($this->once())
+ ->method('__call')
+ ->with(
+ 'info', array('The object "a" has been successfully deleted!')
+ );
+ $this->logged->delete('a');
+ }
+
+ public function testMethodRenameHasPostconditionThatTheEventWasLogged()
+ {
+ $this->logger->expects($this->once())
+ ->method('__call')
+ ->with(
+ 'info',
+ array('The object "a" has been successfully renamed to "b"!')
+ );
+ $this->logged->rename('a', 'b');
+ }
+
+ public function testMethodGetparentguidHasPostconditionThatTheCallWasDelegatedToTheServer()
+ {
+ $this->server->expects($this->exactly(1))
+ ->method('getParentGuid')
+ ->will($this->returnValue('parent'));
+ $this->assertEquals('parent', $this->logged->getParentGuid('child'));
+ }
+
+}
\ No newline at end of file
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Result/LdapTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Result/LdapTest.php
similarity index 91%
rename from framework/Kolab_Server/test/Horde/Kolab/Server/Result/LdapTest.php
rename to framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Result/LdapTest.php
index 668a68e4f..bfd508720 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Result/LdapTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Result/LdapTest.php
@@ -14,12 +14,12 @@
/**
* Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../LdapBase.php';
+require_once dirname(__FILE__) . '/../../../LdapTestCase.php';
/**
* Test the LDAP result handler.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
@@ -30,7 +30,7 @@ require_once dirname(__FILE__) . '/../LdapBase.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_Result_LdapTest extends Horde_Kolab_Server_LdapBase
+class Horde_Kolab_Server_Class_Server_Result_LdapTest extends Horde_Kolab_Server_LdapTestCase
{
public function testMethodConstructHasParameterNetldap2searchSearchResult()
{
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Search/BaseTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Search/BaseTest.php
index 5a6ca1c63..18c7bb12e 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Search/BaseTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Search/BaseTest.php
@@ -48,16 +48,19 @@ extends Horde_Kolab_Server_TestCase
$composite = $this->getMockedComposite();
$composite->structure->expects($this->once())
->method('getSupportedObjects')
- ->will($this->returnValue(array('Object_Search')));
+ ->will($this->returnValue(array('Object_Dummy')));
$search = new Horde_Kolab_Server_Search_Base();
$search->setComposite($composite);
$this->assertEquals(
- array('call' => array('class' => 'Object_Search')),
+ array(
+ 'call' => array('class' => 'Object_Search'),
+ 'reset' => array('class' => 'Object_Search')
+ ),
$search->getSearchOperations()
);
}
- public function testSetcompositeThrowsExceptionIfADeclaredSearchOperationDoesNotExist()
+ public function testSetcompositeThrowsExceptionIfADeclaredSearchClassDoesNotExist()
{
$composite = $this->getMockedComposite();
$composite->structure->expects($this->once())
@@ -67,8 +70,8 @@ extends Horde_Kolab_Server_TestCase
try {
$search->setComposite($composite);
} catch (Horde_Kolab_Server_Exception $e) {
- $this->assertContains(
- 'Class "Object_Search_Fail" does not support method "call"!',
+ $this->assertEquals(
+ 'Object_Search_Fail::getSearchOperations specified non-existing class "Does_Not_Exist"!',
$e->getMessage()
);
}
@@ -84,7 +87,7 @@ extends Horde_Kolab_Server_TestCase
$composite = $this->getMockedComposite();
$composite->structure->expects($this->once())
->method('getSupportedObjects')
- ->will($this->returnValue(array('Object_Search')));
+ ->will($this->returnValue(array('Object_Dummy')));
$search = new Horde_Kolab_Server_Search_Base();
$search->setComposite($composite);
$this->assertEquals(1, $search->call());
@@ -95,12 +98,11 @@ extends Horde_Kolab_Server_TestCase
$composite = $this->getMockedComposite();
$composite->structure->expects($this->once())
->method('getSupportedObjects')
- ->will($this->returnValue(array('Object_Search')));
+ ->will($this->returnValue(array('Object_Dummy')));
$search = new Horde_Kolab_Server_Search_Base();
$search->setComposite($composite);
- $search->call();
- $call = Object_Search::$last_call;
- $this->assertType('Horde_Kolab_Server_Composite', $call[0]);
+ $search->call('a');
+ $this->assertEquals(array('a'), Object_Search::$last_call);
}
public function testCallThrowsExceptionIfTheSearchOperationIsNotSupported()
@@ -108,7 +110,7 @@ extends Horde_Kolab_Server_TestCase
$composite = $this->getMockedComposite();
$composite->structure->expects($this->once())
->method('getSupportedObjects')
- ->will($this->returnValue(array('Object_Search')));
+ ->will($this->returnValue(array('Object_Dummy')));
$search = new Horde_Kolab_Server_Search_Base();
$search->setComposite($composite);
try {
@@ -128,17 +130,20 @@ extends Horde_Kolab_Server_TestCase
}
}
+class Object_Dummy
+{
+ static public function getSearchOperations()
+ {
+ return array('Object_Search');
+ }
+}
+
class Object_Search
{
static public $calls = 0;
static public $last_call;
- static public function getSearchOperations()
- {
- return array('call');
- }
-
static public function call()
{
self::$last_call = func_get_args();
@@ -155,6 +160,6 @@ class Object_Search_Fail
{
static public function getSearchOperations()
{
- return array('call');
+ return array('Does_Not_Exist');
}
}
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Structure/KolabTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Structure/KolabTest.php
similarity index 98%
rename from framework/Kolab_Server/test/Horde/Kolab/Server/Structure/KolabTest.php
rename to framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Structure/KolabTest.php
index 2ff1ff110..c30b1c9d8 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Structure/KolabTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Structure/KolabTest.php
@@ -14,12 +14,12 @@
/**
* Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../LdapBase.php';
+require_once dirname(__FILE__) . '/../../../Autoload.php';
/**
* Test the LDAP backend.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
@@ -30,7 +30,7 @@ require_once dirname(__FILE__) . '/../LdapBase.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_Structure_KolabTest extends PHPUnit_Framework_TestCase
+class Horde_Kolab_Server_Class_Server_Structure_KolabTest extends PHPUnit_Framework_TestCase
{
public function setUp()
{
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Structure/LdapTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Structure/LdapTest.php
similarity index 72%
rename from framework/Kolab_Server/test/Horde/Kolab/Server/Structure/LdapTest.php
rename to framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Structure/LdapTest.php
index 95ed217be..96725b5d6 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Structure/LdapTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Class/Server/Structure/LdapTest.php
@@ -14,12 +14,12 @@
/**
* Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../LdapBase.php';
+require_once dirname(__FILE__) . '/../../../Autoload.php';
/**
* Test the LDAP backend.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
@@ -30,7 +30,7 @@ require_once dirname(__FILE__) . '/../LdapBase.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_Structure_LdapTest extends PHPUnit_Framework_TestCase
+class Horde_Kolab_Server_Class_Server_Structure_LdapTest extends PHPUnit_Framework_TestCase
{
public function setUp()
{
@@ -44,6 +44,34 @@ class Horde_Kolab_Server_Structure_LdapTest extends PHPUnit_Framework_TestCase
);
}
+ public function testMethodFindHasResultServerResultTheSearchResult()
+ {
+ $result = $this->getMock('Horde_Kolab_Server_Result');
+ $this->composite->server->expects($this->exactly(1))
+ ->method('find')
+ ->with('(objectClass=equals)', array())
+ ->will($this->returnValue($result));
+ $equals = new Horde_Kolab_Server_Query_Element_Equals('Objectclass', 'equals');
+ $this->assertType(
+ 'Horde_Kolab_Server_Result',
+ $this->composite->structure->find($equals, array())
+ );
+ }
+
+ public function testMethodFindBelowHasResultServerResultTheSearchResult()
+ {
+ $result = $this->getMock('Horde_Kolab_Server_Result');
+ $this->composite->server->expects($this->exactly(1))
+ ->method('findBelow')
+ ->with('(objectClass=equals)', 'base', array())
+ ->will($this->returnValue($result));
+ $equals = new Horde_Kolab_Server_Query_Element_Equals('Objectclass', 'equals');
+ $this->assertType(
+ 'Horde_Kolab_Server_Result',
+ $this->composite->structure->findBelow($equals, 'base', array())
+ );
+ }
+
public function testMethodGetsupportedobjectsHasResultArrayTheObjectTypesSupportedByThisStructure()
{
$this->assertEquals(array('Horde_Kolab_Server_Object'), $this->composite->structure->getSupportedObjects());
@@ -135,4 +163,18 @@ class Horde_Kolab_Server_Structure_LdapTest extends PHPUnit_Framework_TestCase
->will($this->returnValue('base'));
$this->assertEquals('id,base', $this->composite->structure->generateServerGuid('', 'id', array()));
}
+
+ public function testMethodGetinternalattributeThrowsExceptionForUndefinedAttributeName()
+ {
+ $structure = new Horde_Kolab_Server_Structure_Ldap();
+ try {
+ $structure->getInternalAttribute('undefined');
+ $this->fail('No exception!');
+ } catch (Horde_Kolab_Server_Exception $e) {
+ $this->assertEquals(
+ 'Undefined internal attribute "undefined"',
+ $e->getMessage()
+ );
+ }
+ }
}
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Connection/MockTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Connection/MockTest.php
index 6801ca533..64cd092ed 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Connection/MockTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Connection/MockTest.php
@@ -14,7 +14,7 @@
/**
* Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../LdapBase.php';
+require_once dirname(__FILE__) . '/../LdapTestCase.php';
/**
* Test the test backend.
@@ -30,7 +30,8 @@ require_once dirname(__FILE__) . '/../LdapBase.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_Connection_MockTest extends Horde_Kolab_Server_LdapBase
+class Horde_Kolab_Server_Connection_MockTest
+extends Horde_Kolab_Server_LdapTestCase
{
/**
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Connection/SimpleldapTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Connection/SimpleldapTest.php
index cff61dc29..c2d5f08ea 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Connection/SimpleldapTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Connection/SimpleldapTest.php
@@ -12,14 +12,14 @@
*/
/**
- * Prepare the test setup.
+ * Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../Autoload.php';
+require_once dirname(__FILE__) . '/../LdapTestCase.php';
/**
* Test the handler for a simple LDAP setup without read-only slaves.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
@@ -30,19 +30,9 @@ require_once dirname(__FILE__) . '/../Autoload.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_Connection_SimpleldapTest extends PHPUnit_Framework_TestCase
+class Horde_Kolab_Server_Connection_SimpleldapTest
+extends Horde_Kolab_Server_LdapTestCase
{
- public function setUp()
- {
- if (!extension_loaded('ldap') && !@dl('ldap.' . PHP_SHLIB_SUFFIX)) {
- $this->markTestSuiteSkipped('Ldap extension is missing!');
- };
-
- if (!class_exists('Net_LDAP2')) {
- $this->markTestSuiteSkipped('PEAR package Net_LDAP2 is not installed!');
- }
- }
-
public function testMethodConstructHasParameterNetldap2Connection()
{
$ldap = $this->getMock('Net_LDAP2');
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Connection/SplittedldapTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Connection/SplittedldapTest.php
index e38d02456..1594b0f3b 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Connection/SplittedldapTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Connection/SplittedldapTest.php
@@ -12,14 +12,14 @@
*/
/**
- * Prepare the test setup.
+ * Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../Autoload.php';
+require_once dirname(__FILE__) . '/../LdapTestCase.php';
/**
* Test the handler for a LDAP master/slave setup.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
@@ -30,19 +30,9 @@ require_once dirname(__FILE__) . '/../Autoload.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_Connection_SplittedldapTest extends PHPUnit_Framework_TestCase
+class Horde_Kolab_Server_Connection_SplittedldapTest
+extends Horde_Kolab_Server_LdapTestCase
{
- public function setUp()
- {
- if (!extension_loaded('ldap') && !@dl('ldap.' . PHP_SHLIB_SUFFIX)) {
- $this->markTestSuiteSkipped('Ldap extension is missing!');
- };
-
- if (!class_exists('Net_LDAP2')) {
- $this->markTestSuiteSkipped('PEAR package Net_LDAP2 is not installed!');
- }
- }
-
public function testMethodConstructHasParameterNetldap2ReadConnectionAndParameterNetldap2WriteConnection()
{
$ldap_read = $this->getMock('Net_LDAP2');
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Search/SearchTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Integration/SearchTest.php
similarity index 94%
rename from framework/Kolab_Server/test/Horde/Kolab/Server/Search/SearchTest.php
rename to framework/Kolab_Server/test/Horde/Kolab/Server/Integration/SearchTest.php
index 7211f3d60..914dac193 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Search/SearchTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Integration/SearchTest.php
@@ -1,6 +1,6 @@
markTestSuiteSkipped('Ldap extension is missing!');
- };
-
- if (!class_exists('Net_LDAP2')) {
- $this->markTestSuiteSkipped('PEAR package Net_LDAP2 is not installed!');
- }
-
- $this->markTestIncomplete('Needs to be fixed');
/* $injector = new Horde_Injector(new Horde_Injector_TopLevel()); */
/* Horde_Kolab_Server_Factory::setup(array(), $injector); */
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/LdapBase.php b/framework/Kolab_Server/test/Horde/Kolab/Server/LdapTestCase.php
similarity index 82%
rename from framework/Kolab_Server/test/Horde/Kolab/Server/LdapBase.php
rename to framework/Kolab_Server/test/Horde/Kolab/Server/LdapTestCase.php
index c7026d9f5..fb83bc07a 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/LdapBase.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/LdapTestCase.php
@@ -14,12 +14,12 @@
/**
* Prepare the test setup.
*/
-require_once dirname(__FILE__) . '/Autoload.php';
+require_once dirname(__FILE__) . '/TestCase.php';
/**
* Skip LDAP based tests if we don't have ldap or Net_LDAP2.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
@@ -30,7 +30,7 @@ require_once dirname(__FILE__) . '/Autoload.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_LdapBase extends PHPUnit_Framework_TestCase
+class Horde_Kolab_Server_LdapTestCase extends Horde_Kolab_Server_TestCase
{
public function setUp()
{
@@ -43,7 +43,7 @@ class Horde_Kolab_Server_LdapBase extends PHPUnit_Framework_TestCase
error_reporting($error_reporting & ~E_STRICT);
if (!class_exists('Net_LDAP2')) {
- $this->markTestSuiteSkipped('PEAR package Net_LDAP2 is not installed!');
+ $this->markTestSkipped('PEAR package Net_LDAP2 is not installed!');
}
/** Reactivate original error reporting */
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Object/BaseTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Object/BaseTest.php
index 5e233cbda..cb7878241 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Object/BaseTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Object/BaseTest.php
@@ -14,7 +14,7 @@
/**
* Prepare the test setup.
*/
-require_once dirname(__FILE__) . '/../Autoload.php';
+require_once dirname(__FILE__) . '/../TestCase.php';
/**
* Test the base object.
@@ -30,7 +30,7 @@ require_once dirname(__FILE__) . '/../Autoload.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_Object_BaseTest extends PHPUnit_Framework_TestCase
+class Horde_Kolab_Server_Object_BaseTest extends Horde_Kolab_Server_TestCase
{
public function setUp()
{
@@ -205,6 +205,10 @@ class Horde_Kolab_Server_Object_BaseTest extends PHPUnit_Framework_TestCase
public function testGetexternalHasResultArrayTheDataOfTheRequestedAttribute()
{
$composite = $this->getMockedComposite();
+ $composite->structure->expects($this->exactly(1))
+ ->method('getInternalAttribute')
+ ->with('Objectclass')
+ ->will($this->returnValue('objectClass'));
$composite->schema->expects($this->exactly(1))
->method('getExternalAttributes')
->with($this->isInstanceOf('Horde_Kolab_Server_Object'))
@@ -290,6 +294,10 @@ class Horde_Kolab_Server_Object_BaseTest extends PHPUnit_Framework_TestCase
public function testSaveHasPostconditionThatTheObjectWasAddedToTheServerIfItDidNotExistBefore()
{
$composite = $this->getMockedComposite();
+ $composite->structure->expects($this->exactly(1))
+ ->method('getInternalAttribute')
+ ->with('Objectclass')
+ ->will($this->returnValue('objectClass'));
$composite->schema->expects($this->exactly(1))
->method('getInternalAttributes')
->with($this->isInstanceOf('Horde_Kolab_Server_Object'))
@@ -320,34 +328,6 @@ class Horde_Kolab_Server_Object_BaseTest extends PHPUnit_Framework_TestCase
$object = new Object_Mock($composite);
$object->save(array('Objectclass' => 'top'));
}
-
- private function getComposite()
- {
- return $this->getMock(
- 'Horde_Kolab_Server_Composite', array(), array(), '', false
- );
- }
-
- private function getMockedComposite()
- {
- return new Horde_Kolab_Server_Composite(
- $this->getMock(
- 'Horde_Kolab_Server', array(), array(), '', false
- ),
- $this->getMock(
- 'Horde_Kolab_Server_Objects', array(), array(), '', false
- ),
- $this->getMock(
- 'Horde_Kolab_Server_Structure', array(), array(), '', false
- ),
- $this->getMock(
- 'Horde_Kolab_Server_Search', array(), array(), '', false
- ),
- $this->getMock(
- 'Horde_Kolab_Server_Schema', array(), array(), '', false
- )
- );
- }
}
class Object_Mock extends Horde_Kolab_Server_Object_Base
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Query/ElementTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Query/ElementTest.php
index 4cedaf102..ad16e0354 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Query/ElementTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Query/ElementTest.php
@@ -19,7 +19,7 @@ require_once dirname(__FILE__) . '/../Autoload.php';
/**
* Test the LDAP query elements.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Query/LdapTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Query/LdapTest.php
index 2f6eef172..b6e941b6b 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Query/LdapTest.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/Query/LdapTest.php
@@ -14,12 +14,12 @@
/**
* Require our basic test case definition
*/
-require_once dirname(__FILE__) . '/../LdapBase.php';
+require_once dirname(__FILE__) . '/../LdapTestCase.php';
/**
* Test the LDAP query handler.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
@@ -30,19 +30,28 @@ require_once dirname(__FILE__) . '/../LdapBase.php';
* @license http://www.fsf.org/copyleft/lgpl.html LGPL
* @link http://pear.horde.org/index.php?package=Kolab_Server
*/
-class Horde_Kolab_Server_Query_LdapTest extends Horde_Kolab_Server_LdapBase
+class Horde_Kolab_Server_Query_LdapTest extends Horde_Kolab_Server_LdapTestCase
{
+ public function setUp()
+ {
+ parent::setUp();
+ $this->structure = $this->getMock('Horde_Kolab_Server_Structure');
+ }
+
public function testMethodConstructHasParameterQueryelementTheQueryCriteria()
{
$equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $query = new Horde_Kolab_Server_Query_Ldap($equals);
+ $query = new Horde_Kolab_Server_Query_Ldap($equals, $this->structure);
}
public function testMethodConstructHasPostconditionThatTheQueryCriteriaWereSaved()
{
+ $this->structure->expects($this->once())
+ ->method('getInternalAttribute')
+ ->will($this->returnValue('equals'));
$equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $query = new Horde_Kolab_Server_Query_Ldap($equals);
+ $query = new Horde_Kolab_Server_Query_Ldap($equals, $this->structure);
$this->assertEquals(
'(equals=equals)',
(string) $query
@@ -51,20 +60,26 @@ class Horde_Kolab_Server_Query_LdapTest extends Horde_Kolab_Server_LdapBase
public function testMethodTostringHasResultStringTheQuery()
{
+ $this->structure->expects($this->exactly(2))
+ ->method('getInternalAttribute')
+ ->will($this->returnValue('internal'));
$equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
$contains = new Horde_Kolab_Server_Query_Element_Equals('contains', 'contains');
$or = new Horde_Kolab_Server_Query_Element_Or(array($equals, $contains));
- $query = new Horde_Kolab_Server_Query_Ldap($or);
+ $query = new Horde_Kolab_Server_Query_Ldap($or, $this->structure);
$this->assertEquals(
- '(|(equals=equals)(contains=contains))',
+ '(|(internal=equals)(internal=contains))',
(string) $query
);
}
public function testMethodConvertequealsHasResultNetldapfilter()
{
+ $this->structure->expects($this->once())
+ ->method('getInternalAttribute')
+ ->will($this->returnValue('equals'));
$equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $query = new Horde_Kolab_Server_Query_Ldap($equals);
+ $query = new Horde_Kolab_Server_Query_Ldap($equals, $this->structure);
$this->assertEquals(
'(equals=equals)',
$query->convertEquals($equals)->asString()
@@ -73,8 +88,11 @@ class Horde_Kolab_Server_Query_LdapTest extends Horde_Kolab_Server_LdapBase
public function testMethodConvertbeginsHasResultNetldapfilter()
{
+ $this->structure->expects($this->once())
+ ->method('getInternalAttribute')
+ ->will($this->returnValue('begins'));
$begins = new Horde_Kolab_Server_Query_Element_Begins('begins', 'begins');
- $query = new Horde_Kolab_Server_Query_Ldap($begins);
+ $query = new Horde_Kolab_Server_Query_Ldap($begins, $this->structure);
$this->assertEquals(
'(begins=begins*)',
$query->convertBegins($begins)->asString()
@@ -83,8 +101,11 @@ class Horde_Kolab_Server_Query_LdapTest extends Horde_Kolab_Server_LdapBase
public function testMethodConvertendsHasResultNetldapfilter()
{
+ $this->structure->expects($this->once())
+ ->method('getInternalAttribute')
+ ->will($this->returnValue('ends'));
$ends = new Horde_Kolab_Server_Query_Element_Ends('ends', 'ends');
- $query = new Horde_Kolab_Server_Query_Ldap($ends);
+ $query = new Horde_Kolab_Server_Query_Ldap($ends, $this->structure);
$this->assertEquals(
'(ends=*ends)',
$query->convertEnds($ends)->asString()
@@ -93,8 +114,11 @@ class Horde_Kolab_Server_Query_LdapTest extends Horde_Kolab_Server_LdapBase
public function testMethodConvertcontainsHasResultNetldapfilter()
{
+ $this->structure->expects($this->once())
+ ->method('getInternalAttribute')
+ ->will($this->returnValue('contains'));
$contains = new Horde_Kolab_Server_Query_Element_Contains('contains', 'contains');
- $query = new Horde_Kolab_Server_Query_Ldap($contains);
+ $query = new Horde_Kolab_Server_Query_Ldap($contains, $this->structure);
$this->assertEquals(
'(contains=*contains*)',
$query->convertContains($contains)->asString()
@@ -103,8 +127,11 @@ class Horde_Kolab_Server_Query_LdapTest extends Horde_Kolab_Server_LdapBase
public function testMethodConvertlessHasResultNetldapfilter()
{
+ $this->structure->expects($this->once())
+ ->method('getInternalAttribute')
+ ->will($this->returnValue('less'));
$less = new Horde_Kolab_Server_Query_Element_Less('less', 'less');
- $query = new Horde_Kolab_Server_Query_Ldap($less);
+ $query = new Horde_Kolab_Server_Query_Ldap($less, $this->structure);
$this->assertEquals(
'(lessconvertLess($less)->asString()
@@ -113,8 +140,11 @@ class Horde_Kolab_Server_Query_LdapTest extends Horde_Kolab_Server_LdapBase
public function testMethodConvertgreaterHasResultNetldapfilter()
{
+ $this->structure->expects($this->once())
+ ->method('getInternalAttribute')
+ ->will($this->returnValue('greater'));
$greater = new Horde_Kolab_Server_Query_Element_Greater('greater', 'greater');
- $query = new Horde_Kolab_Server_Query_Ldap($greater);
+ $query = new Horde_Kolab_Server_Query_Ldap($greater, $this->structure);
$this->assertEquals(
'(greater>greater)',
$query->convertGreater($greater)->asString()
@@ -123,8 +153,11 @@ class Horde_Kolab_Server_Query_LdapTest extends Horde_Kolab_Server_LdapBase
public function testMethodConvertapproxHasResultNetldapfilter()
{
+ $this->structure->expects($this->once())
+ ->method('getInternalAttribute')
+ ->will($this->returnValue('approx'));
$approx = new Horde_Kolab_Server_Query_Element_Approx('approx', 'approx');
- $query = new Horde_Kolab_Server_Query_Ldap($approx);
+ $query = new Horde_Kolab_Server_Query_Ldap($approx, $this->structure);
$this->assertEquals(
'(approx~=approx)',
$query->convertApprox($approx)->asString()
@@ -133,9 +166,12 @@ class Horde_Kolab_Server_Query_LdapTest extends Horde_Kolab_Server_LdapBase
public function testMethodConvertnotHasResultNetldapfilter()
{
+ $this->structure->expects($this->once())
+ ->method('getInternalAttribute')
+ ->will($this->returnValue('equals'));
$equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
- $not = new Horde_Kolab_Server_Query_Element_Not($equals);
- $query = new Horde_Kolab_Server_Query_Ldap($not);
+ $not = new Horde_Kolab_Server_Query_Element_Not($equals, $this->structure);
+ $query = new Horde_Kolab_Server_Query_Ldap($not, $this->structure);
$this->assertEquals(
'(!(equals=equals))',
$query->convertNot($not)->asString()
@@ -144,24 +180,30 @@ class Horde_Kolab_Server_Query_LdapTest extends Horde_Kolab_Server_LdapBase
public function testMethodConvertandHasResultNetldapfilter()
{
+ $this->structure->expects($this->exactly(2))
+ ->method('getInternalAttribute')
+ ->will($this->returnValue('internal'));
$equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
$contains = new Horde_Kolab_Server_Query_Element_Equals('contains', 'contains');
$and = new Horde_Kolab_Server_Query_Element_And(array($equals, $contains));
- $query = new Horde_Kolab_Server_Query_Ldap($and);
+ $query = new Horde_Kolab_Server_Query_Ldap($and, $this->structure);
$this->assertEquals(
- '(&(equals=equals)(contains=contains))',
+ '(&(internal=equals)(internal=contains))',
$query->convertAnd($and)->asString()
);
}
public function testMethodConvertorHasResultNetldapfilter()
{
+ $this->structure->expects($this->exactly(2))
+ ->method('getInternalAttribute')
+ ->will($this->returnValue('internal'));
$equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
$contains = new Horde_Kolab_Server_Query_Element_Equals('contains', 'contains');
$or = new Horde_Kolab_Server_Query_Element_Or(array($equals, $contains));
- $query = new Horde_Kolab_Server_Query_Ldap($or);
+ $query = new Horde_Kolab_Server_Query_Ldap($or, $this->structure);
$this->assertEquals(
- '(|(equals=equals)(contains=contains))',
+ '(|(internal=equals)(internal=contains))',
$query->convertOr($or)->asString()
);
}
@@ -170,7 +212,7 @@ class Horde_Kolab_Server_Query_LdapTest extends Horde_Kolab_Server_LdapBase
{
$equals = new Horde_Kolab_Server_Query_Element_Equals('equals', 'equals');
$or = new Horde_Kolab_Server_Query_Element_Or(array($equals));
- $query = new Horde_Kolab_Server_Query_Ldap($or);
+ $query = new Horde_Kolab_Server_Query_Ldap($or, $this->structure);
/** Hide strict errors from the Net_LDAP2 library */
$error_reporting = error_reporting();
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Server/FactoryTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Server/FactoryTest.php
deleted file mode 100644
index 2fe39d0b8..000000000
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Server/FactoryTest.php
+++ /dev/null
@@ -1,228 +0,0 @@
-
- * @license http://www.fsf.org/copyleft/lgpl.html LGPL
- * @link http://pear.horde.org/index.php?package=Kolab_Server
- */
-
-/**
- * Prepare the test setup.
- */
-require_once dirname(__FILE__) . '/../Autoload.php';
-
-/**
- * Test the server factory interface.
- *
- * 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_Server_FactoryTest extends PHPUnit_Framework_TestCase
-{
- public function setUp()
- {
- $this->markTestIncomplete();
- $this->injector = new Horde_Injector(new Horde_Injector_TopLevel());
- }
-
- public function testMethodSetupHasPostconditionThatAObjectHandlerOfTypeBaseIsBoundToObjects()
- {
- Horde_Kolab_Server_Factory::setup($this->injector, array());
- $this->assertType(
- 'Horde_Kolab_Server_Objects_Base',
- $this->injector->getInstance('Horde_Kolab_Server_Objects')
- );
- }
-
- public function testMethodSetupHasPostconditionThatASchemaHandlerOfTypeBaseIsBoundToSchema()
- {
- Horde_Kolab_Server_Factory::setup($this->injector, array());
- $this->assertType(
- 'Horde_Kolab_Server_Schema_Base',
- $this->injector->getInstance('Horde_Kolab_Server_Schema')
- );
- }
-
- public function testMethodSetupHasPostconditionThatASearchHandlerOfTypeBaseIsBoundToSearch()
- {
- Horde_Kolab_Server_Factory::setup($this->injector, array());
- $this->assertType(
- 'Horde_Kolab_Server_Search_Base',
- $this->injector->getInstance('Horde_Kolab_Server_Search')
- );
- }
-
- public function testMethodSetupHasPostconditionThatAStructureOfTypeKolabIsBoundToStructure()
- {
- Horde_Kolab_Server_Factory::setup($this->injector, array());
- $this->assertType(
- 'Horde_Kolab_Server_Structure_Kolab',
- $this->injector->getInstance('Horde_Kolab_Server_Structure')
- );
- }
-
- public function testMethodSetupHasPostconditionThatAStructureHandlerOfTypeLdapIsBoundToStructureIfConfiguredThatWay()
- {
- Horde_Kolab_Server_Factory::setup(
- $this->injector,
- array('structure' => array('driver' => 'ldap'))
- );
- $this->assertType(
- 'Horde_Kolab_Server_Structure_Ldap',
- $this->injector->getInstance('Horde_Kolab_Server_Structure')
- );
- }
-
- public function testMethodSetupHasPostconditionThatAServerOfTypeLdapIsBoundToServer()
- {
- Horde_Kolab_Server_Factory::setup($this->injector, array('basedn' => 'dc=example,dc=com'));
- $this->assertType(
- 'Horde_Kolab_Server_Ldap_Standard',
- $this->injector->getInstance('Horde_Kolab_Server')
- );
- }
-
- public function testMethodSetupHasPostconditionThatAServerOfTypeFileIsBoundToServerIfConfiguredThatWay()
- {
- Horde_Kolab_Server_Factory::setup(
- $this->injector,
- array('driver' => 'file', 'params' => array('basedn' => '', 'file' => '/tmp/nix'))
- );
- $this->assertType(
- 'Horde_Kolab_Server_Ldap_Standard',
- $this->injector->getInstance('Horde_Kolab_Server')
- );
- }
-
- public function testMethodSetupHasPostconditionThatAServerOfTypeFilteredLdapIsBoundToServerIfAFilterHasBeenProvided()
- {
- Horde_Kolab_Server_Factory::setup(
- $this->injector,
- array('basedn' => 'dc=example,dc=com', 'filter' => 'test')
- );
- $this->assertType(
- 'Horde_Kolab_Server_Ldap_Filtered',
- $this->injector->getInstance('Horde_Kolab_Server')
- );
- }
-
- public function testMethodSetupHasPostconditionThatAMappedServerIsBoundToServerIfAMapHasBeenProvided()
- {
- Horde_Kolab_Server_Factory::setup(
- $this->injector,
- array(
- 'basedn' => 'dc=example,dc=com',
- 'map' => array('a' => 'b'),
- )
- );
- $this->assertType(
- 'Horde_Kolab_Server_Mapped',
- $this->injector->getInstance('Horde_Kolab_Server')
- );
- }
-
- public function testMethodSetupHasPostconditionThatALoggedServerIsBoundToServerIfALoggerHasBeenProvided()
- {
- Horde_Kolab_Server_Factory::setup(
- $this->injector,
- array(
- 'basedn' => 'dc=example,dc=com',
- 'logger' => $this->getMock('Horde_Log_Logger'),
- )
- );
- $this->assertType(
- 'Horde_Kolab_Server_Logged',
- $this->injector->getInstance('Horde_Kolab_Server')
- );
- }
-
- public function testMethodGetserverHasPostconditionThatTheConnectionParametersGetRewrittenIfNecessary()
- {
- Horde_Kolab_Server_Factory::setup(
- $this->injector,
- array(
- 'server' => 'localhost',
- 'phpdn' => 'a',
- 'phppw' => 'a',
- 'basedn' => 'dc=example,dc=com'
- )
- );
- $this->injector->getInstance('Horde_Kolab_Server');
- /**@todo: Actually not testable as we can't read the configuration again */
- }
-
- public function testMethodGetserverHasPostconditionThatTheConnectionIsSplittedIfRequired()
- {
- Horde_Kolab_Server_Factory::setup(
- $this->injector,
- array(
- 'host' => 'localhost',
- 'host_master' => 'writehost',
- 'basedn' => 'dc=example,dc=com'
- )
- );
- $this->injector->getInstance('Horde_Kolab_Server');
- /**@todo: Actually not testable as we can't read the configuration again */
- }
-
- public function testMethodGetserverThrowsExceptionIfTheBasednIsMissing()
- {
- try {
- Horde_Kolab_Server_Factory::setup(
- $this->injector,
- array('dummy')
- );
- $this->injector->getInstance('Horde_Kolab_Server');
- $this->fail('No exception!');
- } catch (Horde_Kolab_Server_Exception $e) {
- $this->assertEquals(
- 'The base DN is missing', $e->getMessage()
- );
- }
- }
-
- public function testMethodGetserverThrowsExceptionIfTheDriverIsUnknown()
- {
- try {
- Horde_Kolab_Server_Factory::setup(
- $this->injector,
- array('driver' => 'unknown')
- );
- $this->injector->getInstance('Horde_Kolab_Server');
- $this->fail('No exception!');
- } catch (Horde_Kolab_Server_Exception $e) {
- $this->assertEquals(
- 'Invalid server configuration!', $e->getMessage()
- );
- }
- }
-
- public function testMethodSingletonReturnsTheSameInstanceWithTheSameParameters()
- {
- $result1 = Horde_Kolab_Server_Factory::singleton(array('basedn' => 'dc=example,dc=com'));
- $result2 = Horde_Kolab_Server_Factory::singleton(array('basedn' => 'dc=example,dc=com'));
- $this->assertSame($result1, $result2);
- }
-
- public function testMethodSingletonReturnsDifferentInstancesWithDifferentParameters()
- {
- global $conf;
- $conf['kolab']['ldap']['basedn'] = 'test';
- $result1 = Horde_Kolab_Server_Factory::singleton(array('basedn' => 'dc=example,dc=com'));
- $result2 = Horde_Kolab_Server_Factory::singleton();
- $this->assertTrue($result1 !== $result2);
- }
-}
\ No newline at end of file
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/Server/LoggedTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/Server/LoggedTest.php
deleted file mode 100644
index 470fa723c..000000000
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/Server/LoggedTest.php
+++ /dev/null
@@ -1,185 +0,0 @@
-
- * @license http://www.fsf.org/copyleft/lgpl.html LGPL
- * @link http://pear.horde.org/index.php?package=Kolab_Server
- */
-
-/**
- * Require our basic test case definition
- */
-require_once dirname(__FILE__) . '/../LdapBase.php';
-
-/**
- * Test the LDAP backend.
- *
- * 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_Server_LoggedTest extends Horde_Kolab_Server_LdapBase
-{
- public function setUp()
- {
- parent::setUp();
-
- $this->logger = new Horde_Log_Handler_Mock();
- $this->server = $this->getMock('Horde_Kolab_Server');
- $this->logged = new Horde_Kolab_Server_Logged(
- $this->server,
- new Horde_Log_Logger($this->logger)
- );
- }
-
- public function testMethodConnectguidDelegatesToServer()
- {
- $this->server->expects($this->exactly(1))
- ->method('connectGuid')
- ->with('user', 'pass');
- $this->logged->connectGuid('user', 'pass');
- }
-
- public function testMethodReadDelegatesToServer()
- {
- $this->server->expects($this->exactly(1))
- ->method('read')
- ->with('guid');
- $this->logged->read('guid');
- }
-
- public function testMethodReadattributesDelegatesToServer()
- {
- $this->server->expects($this->exactly(1))
- ->method('readAttributes')
- ->with('guid', array('a'));
- $this->logged->readAttributes('guid', array('a'));
- }
-
- public function testMethodFindDelegatesToServer()
- {
- $query = $this->getMock(
- 'Horde_Kolab_Server_Query_Element', array(), array(), '', false
- );
- $this->server->expects($this->exactly(1))
- ->method('find')
- ->with($query);
- $this->logged->find($query);
- }
-
- public function testMethodFindbelowDelegatesToServer()
- {
- $query = $this->getMock(
- 'Horde_Kolab_Server_Query_Element', array(), array(), '', false
- );
- $this->server->expects($this->exactly(1))
- ->method('findBelow')
- ->with($query, 'none');
- $this->logged->findBelow($query, 'none');
- }
-
- public function testMethodSaveDelegatesToServer()
- {
- $object = $this->getMock(
- 'Horde_Kolab_Server_Object', array(), array(), '', false
- );
- $this->server->expects($this->exactly(1))
- ->method('save')
- ->with($object, array('a' => 'a'));
- $this->logged->save($object, array('a' => 'a'));
- }
-
- public function testMethodAddDelegatesToServer()
- {
- $object = $this->getMock(
- 'Horde_Kolab_Server_Object', array(), array(), '', false
- );
- $this->server->expects($this->exactly(1))
- ->method('add')
- ->with($object, array('a' => 'a'));
- $this->logged->add($object, array('a' => 'a'));
- }
-
- public function testMethodDeleteDelegatesToServer()
- {
- $this->server->expects($this->exactly(1))
- ->method('delete')
- ->with('a');
- $this->logged->delete('a');
- }
-
- public function testMethodRenameDelegatesToServer()
- {
- $this->server->expects($this->exactly(1))
- ->method('rename')
- ->with('a', 'b');
- $this->logged->rename('a', 'b');
- }
-
- public function testMethodGetschemaDelegatesToServer()
- {
- $this->server->expects($this->exactly(1))
- ->method('getSchema');
- $this->logged->getSchema();
- }
-
- public function testMethodSaveHasPostconditionThatTheEventWasLogged()
- {
- $object = $this->getMock(
- 'Horde_Kolab_Server_Object', array(), array(), '', false
- );
- $object->expects($this->once())
- ->method('getGuid')
- ->will($this->returnValue('a'));
- $this->logged->save($object, array('a' => 'a'));
- $this->assertEquals(
- $this->logger->events[0]['message'],
- 'The object "a" has been successfully saved!'
- );
- }
-
- public function testMethodAddHasPostconditionThatTheEventWasLogged()
- {
- $object = $this->getMock(
- 'Horde_Kolab_Server_Object', array(), array(), '', false
- );
- $object->expects($this->once())
- ->method('getGuid')
- ->will($this->returnValue('a'));
- $this->logged->add($object, array('a' => 'a'));
- $this->assertEquals(
- $this->logger->events[0]['message'],
- 'The object "a" has been successfully added!'
- );
- }
-
- public function testMethodDeleteHasPostconditionThatTheEventWasLogged()
- {
- $this->logged->delete('a');
- $this->assertEquals(
- $this->logger->events[0]['message'],
- 'The object "a" has been successfully deleted!'
- );
- }
-
- public function testMethodRenameHasPostconditionThatTheEventWasLogged()
- {
- $this->logged->rename('a', 'b');
- $this->assertEquals(
- $this->logger->events[0]['message'],
- 'The object "a" has been successfully renamed to "b"!'
- );
- }
-}
\ No newline at end of file
diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/TestCase.php b/framework/Kolab_Server/test/Horde/Kolab/Server/TestCase.php
index fc3ac7069..cf6805600 100644
--- a/framework/Kolab_Server/test/Horde/Kolab/Server/TestCase.php
+++ b/framework/Kolab_Server/test/Horde/Kolab/Server/TestCase.php
@@ -19,7 +19,7 @@ require_once dirname(__FILE__) . '/Autoload.php';
/**
* Skip LDAP based tests if we don't have ldap or Net_LDAP2.
*
- * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 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.
--
2.11.0