From 5b7c7836c635eb747bc029833cc5763f8ae15ee9 Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel Date: Tue, 3 Mar 2009 19:37:37 +0000 Subject: [PATCH] Added a file test driver. --- .../Kolab_Server/lib/Horde/Kolab/Server/file.php | 113 ++++++++++++ .../Kolab_Server/lib/Horde/Kolab/Server/test.php | 71 ++++++-- .../Kolab_Server/lib/Horde/Kolab/Test/Server.php | 22 ++- framework/Kolab_Server/package.xml | 2 + .../test/Horde/Kolab/Server/AllTests.php | 2 - .../test/Horde/Kolab/Server/GroupHandlingTest.php | 4 + .../test/Horde/Kolab/Server/UserTest.php | 2 +- .../test/Horde/Kolab/Server/testTest.php | 192 +++++++++++++-------- 8 files changed, 310 insertions(+), 98 deletions(-) create mode 100644 framework/Kolab_Server/lib/Horde/Kolab/Server/file.php diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/file.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/file.php new file mode 100644 index 000000000..0d5f0f74e --- /dev/null +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/file.php @@ -0,0 +1,113 @@ + + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Kolab_Server + */ + +/** + * This class provides a persistant class for testing the Kolab Server DB. + * + * 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_file extends Horde_Kolab_Server_test +{ + + /** + * The file for storing the database data. + * + * @var string + */ + private $_file; + + /** + * Construct a new Horde_Kolab_Server object. + * + * @param array $params Parameter array. + */ + public function __construct($params = array()) + { + if (isset($params['file'])) { + $this->_file = $params['file']; + } else { + $this->_file = Horde::getTempFile('Horde_Kolab_Server', false); + } + parent::__construct($params); + } + + + /** + * Load the current state of the database. + * + * @return NULL + */ + protected function load() + { + $raw_data = file_get_contents($this->file); + $data = @unserialize($raw_data); + if ($data !== false) { + $this->_data = $data; + } else { + $error = error_get_last(); + Horde::logMessage(sprintf('Horde_Kolab_Server_file failed to read the database from %s. Error was: %s', + $this->_file, $error['message']), __FILE__, + __LINE__, PEAR_LOG_WARNING); + $this->_data = array(); + } + } + + /** + * Store the current state of the database. + * + * @return NULL + */ + protected function store() + { + $raw_data = serialize($this->_data); + $result = @file_put_contents($this->_file, $this->_data); + if ($result === false) { + $error = error_get_last(); + Horde::logMessage(sprintf('Horde_Kolab_Server_file failed to store the database in %s. Error was: %s', + $this->_file, $error['message']), __FILE__, + __LINE__, PEAR_LOG_WARNING); + } + } + + /** + * Cleans the current state of the database. + * + * @return NULL + */ + public function clean() + { + unlink($this->_file); + $this->_data = array(); + $this->store(); + } + + /** + * Returns the path to the storage location of the database. + * + * @return string The path to the database. + */ + public function getStoragePAth() + { + return $this->_file; + } +} diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Server/test.php b/framework/Kolab_Server/lib/Horde/Kolab/Server/test.php index 65535430d..5eebcf235 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Server/test.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Server/test.php @@ -29,6 +29,13 @@ class Horde_Kolab_Server_test extends Horde_Kolab_Server_ldap { /** + * The current database data. + * + * @var array + */ + private $_data; + + /** * Array holding the current result set. * * @var array @@ -77,16 +84,53 @@ class Horde_Kolab_Server_test extends Horde_Kolab_Server_ldap */ public function __construct($params = array()) { + $this->load(); if (isset($params['data'])) { - $GLOBALS['KOLAB_SERVER_TEST_DATA'] = $params['data']; + $this->_data = $params['data']; } else { - if (!isset($GLOBALS['KOLAB_SERVER_TEST_DATA'])) { - $GLOBALS['KOLAB_SERVER_TEST_DATA'] = array(); + if (!isset($this->_data)) { + $this->_data = array(); } } + $this->store(); parent::__construct($params); } + + /** + * Load the current state of the database. + * + * @return NULL + */ + protected function load() + { + $this->_data = $GLOBALS['KOLAB_SERVER_TEST_DATA']; + } + + /** + * Store the current state of the database. + * + * @return NULL + */ + protected function store() + { + $GLOBALS['KOLAB_SERVER_TEST_DATA'] = $this->_data; + } + + /** + * Cleans the current state of the database. + * + * @return NULL + */ + public function clean() + { + $this->unbind(); + + $GLOBALS['KOLAB_SERVER_TEST_DATA'] = array(); + + $this->_data = array(); + } + /** * Binds the LDAP connection with a specific user and pass. * @@ -116,7 +160,7 @@ class Horde_Kolab_Server_test extends Horde_Kolab_Server_ldap } if (!empty($dn)) { - if (!isset($GLOBALS['KOLAB_SERVER_TEST_DATA'][$dn])) { + if (!isset($this->_data[$dn])) { throw new Horde_Kolab_Server_Exception('User does not exist!'); } @@ -292,7 +336,7 @@ class Horde_Kolab_Server_test extends Horde_Kolab_Server_ldap { if (isset($filter['log'])) { $result = array(); - foreach ($GLOBALS['KOLAB_SERVER_TEST_DATA'] as $element) { + foreach ($this->_data as $element) { if (isset($element['data'][$filter['att']])) { switch ($filter['log']) { case '=': @@ -354,16 +398,16 @@ class Horde_Kolab_Server_test extends Horde_Kolab_Server_ldap $dns[] = $entry['dn']; } } - $all_dns = array_keys($GLOBALS['KOLAB_SERVER_TEST_DATA']); + $all_dns = array_keys($this->_data); $diff = array_diff($all_dns, $dns); $result = array(); foreach ($diff as $dn) { if (empty($attributes)) { - $result[] = $GLOBALS['KOLAB_SERVER_TEST_DATA'][$dn]; + $result[] = $this->_data[$dn]; } else { - $selection = $GLOBALS['KOLAB_SERVER_TEST_DATA'][$dn]; - foreach ($GLOBALS['KOLAB_SERVER_TEST_DATA'][$dn]['data'] + $selection = $this->_data[$dn]; + foreach ($this->_data[$dn]['data'] as $attr => $value) { if (!in_array($attr, $attributes)) { unset($selection['data'][$attr]); @@ -395,15 +439,15 @@ class Horde_Kolab_Server_test extends Horde_Kolab_Server_ldap $result = $this->bind(); } - if (!isset($GLOBALS['KOLAB_SERVER_TEST_DATA'][$dn])) { + if (!isset($this->_data[$dn])) { throw new Horde_Kolab_Server_Exception(sprintf("LDAP Error: No such object: %s: No such object", $dn)); } if (empty($attrs)) { - return $GLOBALS['KOLAB_SERVER_TEST_DATA'][$dn]['data']; + return $this->_data[$dn]['data']; } else { $result = array(); - $data = $GLOBALS['KOLAB_SERVER_TEST_DATA'][$dn]['data']; + $data = $this->_data[$dn]['data']; foreach ($attrs as $attr) { if (isset($data[$attr])) { @@ -437,10 +481,11 @@ class Horde_Kolab_Server_test extends Horde_Kolab_Server_ldap $ldap_data[$key] = $val; } - $GLOBALS['KOLAB_SERVER_TEST_DATA'][$dn] = array( + $this->_data[$dn] = array( 'dn' => $dn, 'data' => $ldap_data ); + $this->store(); } /** diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Test/Server.php b/framework/Kolab_Server/lib/Horde/Kolab/Test/Server.php index d46c5d26e..5fb1e98c0 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Test/Server.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Test/Server.php @@ -268,20 +268,23 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase * * @return Horde_Kolab_Server The empty server. */ - public function &prepareEmptyKolabServer() + public function &prepareEmptyKolabServer($type = 'test') { global $conf; - $GLOBALS['KOLAB_SERVER_TEST_DATA'] = array(); - /** Prepare a Kolab test server */ - $conf['kolab']['server']['driver'] = 'test'; + $conf['kolab']['server']['driver'] = $type; $conf['kolab']['server']['params']['basedn'] = 'dc=example,dc=org'; + $conf['kolab']['server']['params']['data'] = array(); + + if ($type == 'file') { + $conf['kolab']['server']['params']['file'] = Horde::getTempFile('fileTest'); + } $server = Horde_Kolab_Server::singleton(); /** Ensure we don't use a connection from older tests */ - $server->unbind(); + $server->clean(); /** Clean the server data */ return $server; @@ -292,9 +295,9 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase * * @return Horde_Kolab_Server The empty server. */ - public function &prepareBasicServer() + public function &prepareBasicServer($type = 'test') { - $server = $this->prepareEmptyKolabServer(); + $server = $this->prepareEmptyKolabServer($type); $this->prepareUsers($server); return $server; } @@ -539,6 +542,11 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase ); } + public function provideServerTypes() + { + return array(array('test'), array('file')); + } + /** FIXME: Prefix the stuff bewlow with provide...() */ public function validUsers() diff --git a/framework/Kolab_Server/package.xml b/framework/Kolab_Server/package.xml index 81df488c5..b4356b6cc 100644 --- a/framework/Kolab_Server/package.xml +++ b/framework/Kolab_Server/package.xml @@ -49,6 +49,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> + @@ -129,6 +130,7 @@ http://pear.php.net/dtd/package-2.0.xsd"> + diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/AllTests.php b/framework/Kolab_Server/test/Horde/Kolab/Server/AllTests.php index 3f61139d7..2a4d7b84f 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/AllTests.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/AllTests.php @@ -2,7 +2,6 @@ /** * All tests for the Horde_Kolab_Server:: package. * - * * PHP version 5 * * @category Kolab @@ -27,7 +26,6 @@ require_once 'Horde/Autoloader.php'; /** * Combine the tests for this package. * - * * Copyright 2007-2009 The Horde Project (http://www.horde.org/) * * See the enclosed file COPYING for license information (LGPL). If you diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/GroupHandlingTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/GroupHandlingTest.php index d5e7d3c20..269008184 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/GroupHandlingTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/GroupHandlingTest.php @@ -182,6 +182,8 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server * Test modifying a group mail address. * * @scenario + * + * @return NULL */ public function conflictBetweenGroupMailAndUserMailIsNotAllowed() { @@ -194,6 +196,8 @@ class Horde_Kolab_Server_GroupHandlingTest extends Horde_Kolab_Test_Server /** * @scenario + * + * @return NULL */ public function conflictBetweenUserMailAndGroupMailIsNotAllowed() { diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/UserTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/UserTest.php index 759b6f364..fff75e2aa 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/UserTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/UserTest.php @@ -72,7 +72,7 @@ class Horde_Kolab_Server_UserTest extends Horde_Kolab_Test_Server */ public function testAddInvalidUser() { - $user = $this->provideInvalidUserWithoutGivenName(); + $user = $this->provideInvalidUserWithoutGivenName(); $result = $this->server->add($user); } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/testTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/testTest.php index 8aa6aa30b..a6d07a316 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/testTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/testTest.php @@ -34,28 +34,22 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server { /** - * Set up testing. - * - * @return NULL - */ - protected function setUp() - { - $this->ldap = &$this->prepareBasicServer(); - } - - /** * Test search base. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testSearchBase() + public function testSearchBase($type) { - $result = $this->ldap->search('(objectClass=top)', array('objectClass')); + $server = &$this->prepareBasicServer($type); + + $result = $server->search('(objectClass=top)', array('objectClass')); $this->assertEquals(13, count($result)); - $result = $this->ldap->search('(objectClass=top)', - array('objectClass'), - 'cn=internal,dc=example,dc=org'); + $result = $server->search('(objectClass=top)', + array('objectClass'), + 'cn=internal,dc=example,dc=org'); $this->assertNoError($result); $this->assertEquals(4, count($result)); } @@ -63,14 +57,18 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /** * Test sorting. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testSorting() + public function testSorting($type) { -/* $result = $this->ldap->search('(mail=*)', array('mail')); */ + $server = &$this->prepareBasicServer($type); + +/* $result = $server->search('(mail=*)', array('mail')); */ /* $this->assertNoError($result); */ /* $this->assertEquals(5, count($result)); */ -/* $this->ldap->sort($result, 'mail'); */ +/* $server->sort($result, 'mail'); */ /* foreach ($result as $object) { */ /* if (isset($object['data']['dn'])) { */ /* switch ($object['data']['dn']) { */ @@ -88,10 +86,14 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /** * Test listing objects. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testListObjects() + public function testListObjects($type) { + $server = &$this->prepareBasicServer($type); + $filter = '(&(objectClass=kolabInetOrgPerson)(uid=*)(mail=*)(sn=*))'; $attributes = array( KOLAB_ATTR_SN, @@ -102,16 +104,16 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server ); $sort = KOLAB_ATTR_SN; - $result = $this->ldap->search($filter); + $result = $server->search($filter); $this->assertNoError($result); $this->assertEquals(2, count($result)); - $result = $this->ldap->listObjects('Horde_Kolab_Server_Object_user'); + $result = $server->listObjects('Horde_Kolab_Server_Object_user'); $this->assertNoError($result); $this->assertEquals(2, count($result)); $this->assertEquals('Horde_Kolab_Server_Object_user', get_class($result[0])); - $result = $this->ldap->listObjects('Horde_Kolab_Server_Object_sharedfolder'); + $result = $server->listObjects('Horde_Kolab_Server_Object_sharedfolder'); $this->assertNoError($result); $this->assertEquals(1, count($result)); $this->assertEquals('Horde_Kolab_Server_Object_sharedfolder', get_class($result[0])); @@ -120,24 +122,28 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /** * Test handling of object classes. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testGetObjectClasses() + public function testGetObjectClasses($type) { - $classes = $this->ldap->getObjectClasses('cn=Gunnar Wrobel,dc=example,dc=org'); + $server = &$this->prepareBasicServer($type); + + $classes = $server->getObjectClasses('cn=Gunnar Wrobel,dc=example,dc=org'); $this->assertNoError($classes); $this->assertContains('top', $classes); $this->assertContains('kolabinetorgperson', $classes); $this->assertContains('hordeperson', $classes); try { - $classes = $this->ldap->getObjectClasses('cn=DOES NOT EXIST,dc=example,dc=org'); + $classes = $server->getObjectClasses('cn=DOES NOT EXIST,dc=example,dc=org'); } catch (Horde_Kolab_Server_Exception $classes) { } $this->assertError($classes, 'LDAP Error: No such object: cn=DOES NOT EXIST,dc=example,dc=org: No such object'); - $classes = $this->ldap->getObjectClasses('cn=The Administrator,dc=example,dc=org'); + $classes = $server->getObjectClasses('cn=The Administrator,dc=example,dc=org'); $this->assertNoError($classes); $this->assertContains('kolabinetorgperson', $classes); } @@ -145,35 +151,39 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /** * Test handling of object types. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testDetermineType() + public function testDetermineType($type) { - $type = $this->ldap->determineType('cn=empty.group@example.org,dc=example,dc=org'); + $server = &$this->prepareBasicServer($type); + + $type = $server->determineType('cn=empty.group@example.org,dc=example,dc=org'); $this->assertNoError($type); $this->assertEquals('Horde_Kolab_Server_Object_group', $type); - $type = $this->ldap->determineType('cn=shared@example.org,dc=example,dc=org'); + $type = $server->determineType('cn=shared@example.org,dc=example,dc=org'); $this->assertNoError($type); $this->assertEquals('Horde_Kolab_Server_Object_sharedfolder', $type); - $type = $this->ldap->determineType('cn=The Administrator,dc=example,dc=org'); + $type = $server->determineType('cn=The Administrator,dc=example,dc=org'); $this->assertNoError($type); $this->assertEquals('Horde_Kolab_Server_Object_administrator', $type); - $type = $this->ldap->determineType('cn=Main Tainer,dc=example,dc=org'); + $type = $server->determineType('cn=Main Tainer,dc=example,dc=org'); $this->assertNoError($type); $this->assertEquals('Horde_Kolab_Server_Object_maintainer', $type); - $type = $this->ldap->determineType('cn=Domain Maintainer,dc=example,dc=org'); + $type = $server->determineType('cn=Domain Maintainer,dc=example,dc=org'); $this->assertNoError($type); $this->assertEquals('Horde_Kolab_Server_Object_domainmaintainer', $type); - $type = $this->ldap->determineType('cn=Test Address,cn=external,dc=example,dc=org'); + $type = $server->determineType('cn=Test Address,cn=external,dc=example,dc=org'); $this->assertNoError($type); $this->assertEquals('Horde_Kolab_Server_Object_address', $type); - $type = $this->ldap->determineType('cn=Gunnar Wrobel,dc=example,dc=org'); + $type = $server->determineType('cn=Gunnar Wrobel,dc=example,dc=org'); $this->assertNoError($type); $this->assertEquals('Horde_Kolab_Server_Object_user', $type); } @@ -181,18 +191,22 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /** * Test retrieving a primary mail for a mail or id. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testMailForIdOrMail() + public function testMailForIdOrMail($type) { - $mail = $this->ldap->mailForIdOrMail('wrobel'); + $server = &$this->prepareBasicServer($type); + + $mail = $server->mailForIdOrMail('wrobel'); $this->assertEquals('wrobel@example.org', $mail); - $mail = $this->ldap->mailForIdOrMail('wrobel@example.org'); + $mail = $server->mailForIdOrMail('wrobel@example.org'); $this->assertNoError($mail); $this->assertEquals('wrobel@example.org', $mail); - $mail = $this->ldap->mailForIdOrMail('DOES NOT EXIST'); + $mail = $server->mailForIdOrMail('DOES NOT EXIST'); $this->assertNoError($mail); $this->assertSame(false, $mail); } @@ -200,19 +214,23 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /** * Test retrieving a UID for a mail or id. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testUidForIdOrMail() + public function testUidForIdOrMail($type) { - $uid = $this->ldap->uidForIdOrMail('wrobel'); + $server = &$this->prepareBasicServer($type); + + $uid = $server->uidForIdOrMail('wrobel'); $this->assertNoError($uid); $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $this->ldap->uidForIdOrMail('wrobel@example.org'); + $uid = $server->uidForIdOrMail('wrobel@example.org'); $this->assertNoError($uid); $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $this->ldap->uidForIdOrMail('DOES NOT EXIST'); + $uid = $server->uidForIdOrMail('DOES NOT EXIST'); $this->assertNoError($uid); $this->assertSame(false, $uid); } @@ -220,23 +238,27 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /** * Test retrieving a UID for a mail or id. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testUidForMailOrIdOrAlias() + public function testUidForMailOrIdOrAlias($type) { - $uid = $this->ldap->uidForIdOrMailOrAlias('g.wrobel@example.org'); + $server = &$this->prepareBasicServer($type); + + $uid = $server->uidForIdOrMailOrAlias('g.wrobel@example.org'); $this->assertNoError($uid); $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $this->ldap->uidForIdOrMailOrAlias('wrobel@example.org'); + $uid = $server->uidForIdOrMailOrAlias('wrobel@example.org'); $this->assertNoError($uid); $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $this->ldap->uidForIdOrMailOrAlias('wrobel'); + $uid = $server->uidForIdOrMailOrAlias('wrobel'); $this->assertNoError($uid); $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $this->ldap->uidForIdOrMailOrAlias('DOES NOT EXIST'); + $uid = $server->uidForIdOrMailOrAlias('DOES NOT EXIST'); $this->assertNoError($uid); $this->assertSame(false, $uid); } @@ -244,13 +266,17 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /** * Test retrieving all addresses for a mail or id. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testAddrsForIdOrMail() + public function testAddrsForIdOrMail($type) { - $addrs = $this->ldap->addrsForIdOrMail('wrobel'); + $server = &$this->prepareBasicServer($type); + + $addrs = $server->addrsForIdOrMail('wrobel'); - $testuser = $this->ldap->fetch('cn=Test Test,dc=example,dc=org'); + $testuser = $server->fetch('cn=Test Test,dc=example,dc=org'); $this->assertNoError($testuser); $this->assertContains('wrobel@example.org', $testuser->get(KOLAB_ATTR_KOLABDELEGATE, false)); @@ -262,7 +288,7 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server $this->assertContains('g.wrobel@example.org', $addrs); $this->assertContains('gunnar@example.org', $addrs); - $addrs = $this->ldap->addrsForIdOrMail('test@example.org'); + $addrs = $server->addrsForIdOrMail('test@example.org'); $this->assertNoError($addrs); $this->assertContains('test@example.org', $addrs); $this->assertContains('t.test@example.org', $addrs); @@ -271,23 +297,27 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /** * Test retrieving a UID for a primary mail. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testUidForMailAddress() + public function testUidForMailAddress($type) { - $uid = $this->ldap->uidForIdOrMailOrAlias('wrobel@example.org'); + $server = &$this->prepareBasicServer($type); + + $uid = $server->uidForIdOrMailOrAlias('wrobel@example.org'); $this->assertNoError($uid); $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $this->ldap->uidForIdOrMailOrAlias('test@example.org'); + $uid = $server->uidForIdOrMailOrAlias('test@example.org'); $this->assertNoError($uid); $this->assertEquals('cn=Test Test,dc=example,dc=org', $uid); - $uid = $this->ldap->uidForIdOrMailOrAlias('gunnar@example.org'); + $uid = $server->uidForIdOrMailOrAlias('gunnar@example.org'); $this->assertNoError($uid); $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); - $uid = $this->ldap->uidForIdOrMailOrAlias('wrobel'); + $uid = $server->uidForIdOrMailOrAlias('wrobel'); $this->assertNoError($uid); $this->assertEquals('cn=Gunnar Wrobel,dc=example,dc=org', $uid); } @@ -295,11 +325,15 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /** * Test retrieving a UID for an attribute. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testUidForAttr() + public function testUidForAttr($type) { - $uid = $this->ldap->uidForSearch(array('AND' => array(array('field' => 'alias', + $server = &$this->prepareBasicServer($type); + + $uid = $server->uidForSearch(array('AND' => array(array('field' => 'alias', 'op' => '=', 'test' => 'g.wrobel@example.org')))); $this->assertNoError($uid); @@ -309,24 +343,28 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /** * Test group membership testing. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testMemberOfGroupAddress() + public function testMemberOfGroupAddress($type) { - $uid = $this->ldap->uidForIdOrMailOrAlias('g.wrobel@example.org'); + $server = &$this->prepareBasicServer($type); + + $uid = $server->uidForIdOrMailOrAlias('g.wrobel@example.org'); $this->assertNoError($uid); - $member = $this->ldap->memberOfGroupAddress($uid, 'group@example.org'); + $member = $server->memberOfGroupAddress($uid, 'group@example.org'); $this->assertNoError($member); $this->assertTrue($member); - $member = $this->ldap->memberOfGroupAddress( - $this->ldap->uidForIdOrMailOrAlias('test@example.org'), + $member = $server->memberOfGroupAddress( + $server->uidForIdOrMailOrAlias('test@example.org'), 'group@example.org'); $this->assertNoError($member); $this->assertTrue($member); - $member = $this->ldap->memberOfGroupAddress( - $this->ldap->uidForIdOrMailOrAlias('somebody@example.org'), + $member = $server->memberOfGroupAddress( + $server->uidForIdOrMailOrAlias('somebody@example.org'), 'group@example.org'); $this->assertNoError($member); $this->assertFalse($member); @@ -335,45 +373,49 @@ class Horde_Kolab_Server_testTest extends Horde_Kolab_Test_Server /** * Test group fetching. * + * @dataProvider provideServerTypes + * * @return NULL */ - public function testGetGroups() + public function testGetGroups($type) { + $server = &$this->prepareBasicServer($type); + $filter = '(&(objectClass=kolabGroupOfNames)(member=' . Horde_LDAP::quote('cn=The Administrator,dc=example,dc=org') . '))'; - $result = $this->ldap->search($filter, array()); + $result = $server->search($filter, array()); $this->assertNoError($result); $this->assertTrue(!empty($result)); -/* $entry = $this->ldap->_firstEntry($result); */ +/* $entry = $server->_firstEntry($result); */ /* $this->assertNoError($entry); */ /* $this->assertTrue(!empty($entry)); */ -/* $uid = $this->ldap->_getDn($entry); */ +/* $uid = $server->_getDn($entry); */ /* $this->assertNoError($uid); */ /* $this->assertTrue(!empty($uid)); */ -/* $entry = $this->ldap->_nextEntry($entry); */ +/* $entry = $server->_nextEntry($entry); */ /* $this->assertNoError($entry); */ /* $this->assertTrue(empty($entry)); */ -/* $entries = $this->ldap->_getDns($result); */ +/* $entries = $server->_getDns($result); */ /* $this->assertNoError($entries); */ /* $this->assertTrue(!empty($entries)); */ - $groups = $this->ldap->getGroups('cn=The Administrator,dc=example,dc=org'); + $groups = $server->getGroups('cn=The Administrator,dc=example,dc=org'); $this->assertNoError($groups); $this->assertTrue(!empty($groups)); - $groups = $this->ldap->getGroups($this->ldap->uidForIdOrMailOrAlias('g.wrobel@example.org')); + $groups = $server->getGroups($server->uidForIdOrMailOrAlias('g.wrobel@example.org')); $this->assertNoError($groups); $this->assertContains('cn=group@example.org,dc=example,dc=org', $groups); - $groups = $this->ldap->getGroups($this->ldap->uidForIdOrMailOrAlias('test@example.org')); + $groups = $server->getGroups($server->uidForIdOrMailOrAlias('test@example.org')); $this->assertNoError($groups); $this->assertContains('cn=group@example.org,dc=example,dc=org', $groups); - $groups = $this->ldap->getGroups('nobody'); + $groups = $server->getGroups('nobody'); $this->assertNoError($groups); $this->assertTrue(empty($groups)); -- 2.11.0