From: Gunnar Wrobel Date: Mon, 13 Apr 2009 06:21:41 +0000 (+0200) Subject: Improve testing and fix the test of the person class. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=4fa732c51d2f307da23b2c66e4a09c2faaa924aa;p=horde.git Improve testing and fix the test of the person class. --- diff --git a/framework/Kolab_Server/lib/Horde/Kolab/Test/Server.php b/framework/Kolab_Server/lib/Horde/Kolab/Test/Server.php index 65abd8736..4f7e3bbcb 100644 --- a/framework/Kolab_Server/lib/Horde/Kolab/Test/Server.php +++ b/framework/Kolab_Server/lib/Horde/Kolab/Test/Server.php @@ -35,6 +35,13 @@ require_once 'Horde/Autoloader.php'; class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase { /** + * Uid of added objects. Should be removed on tearDown. + * + * @var array + */ + public $added; + + /** * Handle a "given" step. * * @param array &$world Joined "world" of variables. @@ -792,4 +799,102 @@ class Horde_Kolab_Test_Server extends PHPUnit_Extensions_Story_TestCase } } } + + protected function fetchByCn($server, $cn) + { + $cn_result = $server->uidForCn($cn); + $this->assertNoError($cn_result); + + $object = $server->fetch($cn_result); + $this->assertNoError($object); + + return $object; + } + + /** + * Assert that creating a new object operation yields some predictable + * attribute results. + * + * @param Horde_Kolab_Server $server The server the object resides on. + * @param array $store The information to save. + * @param array $fetch The expected results. + * + * @return NULL. + */ + protected function assertAdd(Horde_Kolab_Server &$server, + array $store, array $fetch) + { + $object = $server->add($store); + $this->assertNoError($object); + + $this->added[] = array(&$server, $object->getUid()); + + $object = $server->fetch($object->getUid()); + + foreach ($fetch as $attribute => $expect) { + $this->assertEquals($expect, $object->get($attribute)); + } + return $object; + } + + /** + * Assert that a save() operation yields some predictable attribute results. + * + * @param Horde_Kolab_Server_Object $object The object to work on. + * @param Horde_Kolab_Server $server The server the object resides on. + * @param string $attribute The attribute to work on. + * @param array $sequence The sequence of values to set and expect. + * + * @return NULL. + */ + protected function assertSimpleSequence(Horde_Kolab_Server_Object &$object, + Horde_Kolab_Server &$server, + $attribute, array $sequence) + { + foreach ($sequence as $value) { + $this->assertStoreFetch($object, $server, + array($attribute => $step), + array($attribute => $step)); + } + } + + /** + * Assert that a save() operation yields some predictable attribute results. + * + * @param Horde_Kolab_Server_Object $object The object to work on. + * @param Horde_Kolab_Server $server The server the object resides on. + * @param array $store The information to save. + * @param array $fetch The expected results. + * + * @return NULL. + */ + protected function assertStoreFetch(Horde_Kolab_Server_Object &$object, + Horde_Kolab_Server &$server, + array $store, array $fetch) + { + $result = $object->save($store); + $this->assertNoError($result); + + $object = $server->fetch($object->getUid()); + + foreach ($fetch as $attribute => $expect) { + $this->assertEquals($expect, + $object->get($attribute)); + } + } + + /** + * Cleanup function. + * + * @return NULL. + */ + public function tearDown() + { + if (isset($this->added)) { + foreach ($this->added as $add) { + $result = $add[0]->delete($add[1]); + $this->assertNoError($result); + } + } + } } diff --git a/framework/Kolab_Server/test/Horde/Kolab/Server/PersonTest.php b/framework/Kolab_Server/test/Horde/Kolab/Server/PersonTest.php index db3c77dbb..02108722d 100644 --- a/framework/Kolab_Server/test/Horde/Kolab/Server/PersonTest.php +++ b/framework/Kolab_Server/test/Horde/Kolab/Server/PersonTest.php @@ -32,6 +32,9 @@ require_once 'Horde/Autoloader.php'; */ class Horde_Kolab_Server_PersonTest extends Horde_Kolab_Test_Server { + + public $cn = 'Kolab_Server_PersonTest'; + /** * Objects used within this test * @@ -88,6 +91,14 @@ class Horde_Kolab_Server_PersonTest extends Horde_Kolab_Test_Server Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX => 'Kolab_Server_PersonTest_suffix', Horde_Kolab_Server_Object_Person::ATTRIBUTE_USERPASSWORD => 'Kolab_Server_PersonTest_123', ), + /* Person for telephone number handling*/ + array( + 'type' => 'Horde_Kolab_Server_Object_Person', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN => 'Kolab_Server_PersonTest_123456', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => 'Kolab_Server_PersonTest_123456', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX => 'Kolab_Server_PersonTest_suffix', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_USERPASSWORD => 'Kolab_Server_PersonTest_123456', + ), ); /** @@ -180,21 +191,11 @@ class Horde_Kolab_Server_PersonTest extends Horde_Kolab_Test_Server */ public function testModifyPersonSn($server) { - $result = $server->add($this->objects[2]); - $this->assertNoError($result); - $cn_result = $server->uidForCn($this->objects[2][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); - $person = $server->fetch($cn_result); - $this->assertEquals($person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN), - $this->objects[2][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); - $result = $person->save(array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => 'Kolab_Server_PersonTest_modified')); - $person = $server->fetch($cn_result); - $this->assertEquals($person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN), - 'Kolab_Server_PersonTest_modified'); - $result = $server->delete($cn_result); - $this->assertNoError($result); - $cn_result = $server->uidForCn($this->objects[$add][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); - $this->assertNoError($cn_result); - $this->assertFalse($server->uidForCn($this->objects[$add][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN])); + $person = $this->assertAdd($server, $this->objects[2], + array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN => $this->objects[2][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN])); + $this->assertSimpleSequence($person, $server, + Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN, + array('modified', 'modified_again')); } /** @@ -207,12 +208,14 @@ class Horde_Kolab_Server_PersonTest extends Horde_Kolab_Test_Server */ public function testModifyPersonCn($server) { - $result = $server->add($this->objects[2]); - $this->assertNoError($result); - $cn_result = $server->uidForCn($this->objects[2][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); - $person = $server->fetch($cn_result); - $this->assertEquals($person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN), - $this->objects[2][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); + $person = $server->add($this->objects[2]); + $this->assertNoError($person); + + $person = $server->fetch($person->getUid()); + + $this->assertEquals($this->objects[2][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN], + $person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN)); + $result = $person->save(array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN => 'Kolab_Server_PersonTest_äö')); $cn_result = $server->uidForCn('Kolab_Server_PersonTest_äö'); $person = $server->fetch($cn_result); @@ -220,9 +223,9 @@ class Horde_Kolab_Server_PersonTest extends Horde_Kolab_Test_Server 'Kolab_Server_PersonTest_äö'); $result = $server->delete($cn_result); $this->assertNoError($result); - $cn_result = $server->uidForCn($this->objects[$add][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); + $cn_result = $server->uidForCn('Kolab_Server_PersonTest_äö'); $this->assertNoError($cn_result); - $this->assertFalse($server->uidForCn($this->objects[$add][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN])); + $this->assertFalse($cn_result); } /** @@ -234,19 +237,15 @@ class Horde_Kolab_Server_PersonTest extends Horde_Kolab_Test_Server */ public function testAddDoubleCnPerson($server) { - $result = $server->add($this->objects[5]); - $this->assertNoError($result); + $person = $this->assertAdd($server, $this->objects[5], + array()); + $cn_result = $server->uidForCn($this->objects[5][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN][0]); $this->assertNoError($cn_result); $dn_parts = Net_LDAP2_Util::ldap_explode_dn($cn_result, array('casefold' => 'lower')); $dnpart = Net_LDAP2_Util::unescape_dn_value($dn_parts[0]); $this->assertContains(Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN . '=' . $this->objects[5][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN][0], $dnpart[0]); - $result = $server->delete($cn_result); - $this->assertNoError($result); - $cn_result = $server->uidForCn($this->objects[5][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); - $this->assertNoError($cn_result); - $this->assertFalse($server->uidForCn($this->objects[5][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN])); } /** @@ -258,38 +257,25 @@ class Horde_Kolab_Server_PersonTest extends Horde_Kolab_Test_Server */ public function testHandlePersonWithSuffix($server) { - $result = $server->add($this->objects[6]); - $this->assertNoError($result); - - $cn_result = $server->uidForCn($this->objects[6][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); - $this->assertNoError($cn_result); - $person = $server->fetch($cn_result); - $this->assertEquals($this->objects[6][Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN], - $person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN)); - $this->assertEquals($this->objects[6][Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX], - $person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX)); - - $person->save(array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => 'Kolab_Server_PersonTest_123$123', - Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX => 'Kolab_Server_PersonTest_123$123')); - - $cn_result = $server->uidForCn($this->objects[6][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); - $this->assertNoError($cn_result); - $person = $server->fetch($cn_result); - $this->assertEquals('Kolab_Server_PersonTest_123$123', - $person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN)); - $this->assertEquals('Kolab_Server_PersonTest_123$123', - $person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX)); - - $person->save(array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => 'Kolab_Server_PersonTest_123$456', - Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX => '')); - - $cn_result = $server->uidForCn($this->objects[6][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); - $this->assertNoError($cn_result); - $person = $server->fetch($cn_result); - $this->assertEquals('Kolab_Server_PersonTest_123$456', - $person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN)); - $this->assertEquals('', - $person->get(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX)); + $person = $this->assertAdd($server, $this->objects[6], + array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => $this->objects[6][Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN], + Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX => $this->objects[6][Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX])); + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => 'Kolab_Server_PersonTest_123$123', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX => 'Kolab_Server_PersonTest_123$123'), + array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => 'Kolab_Server_PersonTest_123$123', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX => 'Kolab_Server_PersonTest_123$123')); + + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => 'Kolab_Server_PersonTest_123$456', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX => ''), + array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => 'Kolab_Server_PersonTest_123$456', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX => '')); + + $this->assertStoreFetch($person, $server, + array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX => 'Kolab_Server_PersonTest_789'), + array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => 'Kolab_Server_PersonTest_123$456', + Horde_Kolab_Server_Object_Person::ATTRIBUTE_SNSUFFIX => 'Kolab_Server_PersonTest_789')); try { $person->save(array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => '', @@ -297,12 +283,6 @@ class Horde_Kolab_Server_PersonTest extends Horde_Kolab_Test_Server } catch (Horde_Kolab_Server_Object_Exception $e) { $this->assertError($e); } - - $result = $server->delete($cn_result); - $this->assertNoError($result); - $cn_result = $server->uidForCn($this->objects[6][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); - $this->assertNoError($cn_result); - $this->assertFalse($server->uidForCn($this->objects[6][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN])); } /** @@ -314,58 +294,10 @@ class Horde_Kolab_Server_PersonTest extends Horde_Kolab_Test_Server */ public function testHandlingAPhoneNumaber($server) { - $result = $server->add($this->objects[6]); - $this->assertNoError($result); - - $cn = $this->objects[6][Horde_Kolab_Server_Object_Person::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_Person::ATTRIBUTE_TELNO), - ''); - - $person->save(array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO => '123456789')); - - $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_Person::ATTRIBUTE_TELNO), - '123456789'); - - $person->save(array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO => '1234567890')); - - $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_Person::ATTRIBUTE_TELNO), - '1234567890'); - - - $person->save(array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO => '')); - - $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_Person::ATTRIBUTE_TELNO), - ''); - - $result = $server->delete($cn_result); - $this->assertNoError($result); - $cn_result = $server->uidForCn($this->objects[6][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN]); - $this->assertNoError($cn_result); - $this->assertFalse($server->uidForCn($this->objects[6][Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN])); + $person = $this->assertAdd($server, $this->objects[7], + array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO => '')); + $this->assertSimpleSequence($person, $server, + Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO, + array('123456789', '1234567890', '0')); } }