From: Gunnar Wrobel Date: Sat, 11 Apr 2009 07:26:17 +0000 (+0200) Subject: Test the organizational person. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=825426467cf881108811681a0a39a5344dff1931;p=horde.git Test the organizational person. --- diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/OrgPersonTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/OrgPersonTest.php new file mode 100644 index 000000000..03e78664a --- /dev/null +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/OrgPersonTest.php @@ -0,0 +1,237 @@ + + * @license http://www.fsf.org/copyleft/lgpl.html LGPL + * @link http://pear.horde.org/index.php?package=Kolab_Server + */ + +/** + * The Autoloader allows us to omit "require/include" statements. + */ +require_once 'Horde/Autoloader.php'; + +/** + * Test the organizationalPerson object. + * + * 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_OrgPersonTest extends Horde_Kolab_Test_Server +{ + /** + * Objects used within this test + * + * @var array + */ + private $objects = array( + /* Default organizationalPerson */ + array( + 'type' => 'Horde_Kolab_Server_Object_Organizationalperson', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN => 'Kolab_Server_OrgPersonTest_123', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => 'Kolab_Server_OrgPersonTest_123', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_USERPASSWORD => 'Kolab_Server_OrgPersonTest_123', + ), + /* Invalid person (no sn) */ + array( + 'type' => 'Horde_Kolab_Server_Object_Organizationalperson', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN => 'Kolab_Server_OrgPersonTest_123', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_USERPASSWORD => 'Kolab_Server_OrgPersonTest_123', + ), + ); + + /** + * Provide different server types. + * + * @return array The different server types. + */ + public function &provideServers() + { + $servers = array(); + /** + * We always use the test server + */ + $servers[] = array($this->prepareEmptyKolabServer()); + if (false) { + $real = $this->prepareLdapKolabServer(); + if (!empty($real)) { + $servers[] = array($real); + } + } + return $servers; + } + + /** + * Test ID generation for a person. + * + * @dataProvider provideServers + * + * @return NULL + */ + public function testGenerateId($server) + { + $a = new Horde_Kolab_Server_Object_Organizationalperson($server, null, $this->objects[0]); + $this->assertContains(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN . '=' . $this->objects[0][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN], + $a->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_UID)); + } + + /** + * Test adding an invalid person. + * + * @dataProvider provideServers + * @expectedException Horde_Kolab_Server_Exception + * + * @return NULL + */ + public function testAddInvalidPerson($server) + { + $result = $server->add($this->objects[1]); + } + + /** + * Test handling a job title. + * + * @dataProvider provideServers + * + * @return NULL + */ + public function testHandlingAJobTitle($server) + { + $result = $server->add($this->objects[0]); + $this->assertNoError($result); + + $cn = $this->objects[0][Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CN]; + + $cn_result = $server->uidForCn($cn); + $this->assertNoError($cn_result); + + $person = $server->fetch($cn_result); + $this->assertNoError($person); + + $this->assertEquals($person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE), + ''); + + $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => 'Teacher')); + + $cn_result = $server->uidForCn($cn); + $this->assertNoError($cn_result); + + $person = $server->fetch($cn_result); + $this->assertNoError($person); + + $this->assertEquals($person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE), + 'Teacher'); + + $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => 'öäü/)(="§%$&§§$\'*')); + + $cn_result = $server->uidForCn($cn); + $this->assertNoError($cn_result); + + $person = $server->fetch($cn_result); + $this->assertNoError($person); + + $this->assertEquals($person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE), + 'öäü/)(="§%$&§§$\'*'); + + + $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE => '')); + + $cn_result = $server->uidForCn($cn); + $this->assertNoError($cn_result); + + $person = $server->fetch($cn_result); + $this->assertNoError($person); + + $this->assertEquals($person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_JOBTITLE), + ''); + + $result = $server->delete($cn_result); + $this->assertNoError($result); + $cn_result = $server->uidForCn($this->objects[0][Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CN]); + $this->assertNoError($cn_result); + $this->assertFalse($server->uidForCn($this->objects[0][Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CN])); + } + + /** + * Test handling the postal address. + * + * @dataProvider provideServers + * + * @return NULL + */ + public function testHandlingAPostalAddress($server) + { + $result = $server->add($this->objects[0]); + $this->assertNoError($result); + + $cn = $this->objects[0][Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CN]; + + $cn_result = $server->uidForCn($cn); + $this->assertNoError($cn_result); + + $person = $server->fetch($cn_result); + $this->assertNoError($person); + + $this->assertEquals($person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS), + 'Kolab_Server_OrgPersonTest_123$$ '); + + $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => 'Street 1', + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALCODE => '12345', + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CITY => 'Nowhere')); + + $cn_result = $server->uidForCn($cn); + $this->assertNoError($cn_result); + + $person = $server->fetch($cn_result); + $this->assertNoError($person); + + $this->assertEquals('Kolab_Server_OrgPersonTest_123$Street 1$12345 Nowhere', + $person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS)); + + $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTOFFICEBOX => 'öäü/)(="§%$&§§$\'*', + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => '')); + + $cn_result = $server->uidForCn($cn); + $this->assertNoError($cn_result); + + $person = $server->fetch($cn_result); + $this->assertNoError($person); + + $this->assertEquals('Kolab_Server_OrgPersonTest_123$öäü/)(="§%\5c24&§§\5c24\'*$12345 Nowhere', + $person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS)); + + + $person->save(array(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_STREET => '', + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALCODE => '', + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTOFFICEBOX => '', + Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CITY => '')); + + $cn_result = $server->uidForCn($cn); + $this->assertNoError($cn_result); + + $person = $server->fetch($cn_result); + $this->assertNoError($person); + + $this->assertEquals('Kolab_Server_OrgPersonTest_123$$ ', + $person->get(Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_POSTALADDRESS)); + + $result = $server->delete($cn_result); + $this->assertNoError($result); + $cn_result = $server->uidForCn($this->objects[0][Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CN]); + $this->assertNoError($cn_result); + $this->assertFalse($server->uidForCn($this->objects[0][Horde_Kolab_Server_Object_Organizationalperson::ATTRIBUTE_CN])); + } +}