ElementTest.php 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <?php
  2. /**
  3. * Zend Framework
  4. *
  5. * LICENSE
  6. *
  7. * This source file is subject to the new BSD license that is bundled
  8. * with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://framework.zend.com/license/new-bsd
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@zend.com so we can send you a copy immediately.
  14. *
  15. * @category Zend
  16. * @package Zend_Soap
  17. * @subpackage UnitTests
  18. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  19. * @license http://framework.zend.com/license/new-bsd New BSD License
  20. * @version $Id$
  21. */
  22. require_once dirname(__FILE__)."/../../../TestHelper.php";
  23. require_once "Zend/Soap/Wsdl/Element/Binding.php";
  24. require_once "Zend/Soap/Wsdl/Element/Type.php";
  25. require_once "Zend/Soap/Wsdl/Element/Message.php";
  26. require_once "Zend/Soap/Wsdl/Element/Operation.php";
  27. require_once "Zend/Soap/Wsdl/Element/Port.php";
  28. require_once "Zend/Soap/Wsdl/Element/Service.php";
  29. require_once "Zend/Soap/Wsdl/Element/Collection.php";
  30. /**
  31. * @category Zend
  32. * @package Zend_Soap
  33. * @subpackage UnitTests
  34. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  35. * @license http://framework.zend.com/license/new-bsd New BSD License
  36. * @group Zend_Soap
  37. * @group Zend_Soap_Wsdl
  38. */
  39. class Zend_Soap_Wsdl_ElementTest extends PHPUnit_Framework_TestCase
  40. {
  41. public function testBindingElementApi()
  42. {
  43. $operations = new Zend_Soap_Wsdl_Element_Collection("test");
  44. $binding = new Zend_Soap_Wsdl_Element_Binding("name1", "port1", $operations, "test");
  45. $this->assertEquals("name1", $binding->getName());
  46. $this->assertEquals("port1", $binding->portName);
  47. $this->assertEquals($operations, $binding->operations);
  48. $this->assertEquals("test", $binding->getDocumentation());
  49. try {
  50. $binding = new Zend_Soap_Wsdl_Element_Binding(array(), "portName", $operations, "test");
  51. $this->fail();
  52. } catch(Zend_Soap_Wsdl_Exception $e) {
  53. }
  54. }
  55. public function testTypeElementApi()
  56. {
  57. $types = new Zend_Soap_Wsdl_Element_Collection("test");
  58. $type = new Zend_Soap_Wsdl_Element_Type("name1", $types, "test");
  59. $this->assertEquals("name1", $type->getName());
  60. $this->assertEquals($types, $type->types);
  61. $this->assertEquals("test", $type->getDocumentation());
  62. try {
  63. $type = new Zend_Soap_Wsdl_Element_Type(array(), $types, "test");
  64. $this->fail();
  65. } catch(Zend_Soap_Wsdl_Exception $e) {
  66. }
  67. }
  68. public function testMessageElementApi()
  69. {
  70. $parts = new Zend_Soap_Wsdl_Element_Collection("test");
  71. $message = new Zend_Soap_Wsdl_Element_Message("name1", $parts, "test");
  72. $this->assertEquals("name1", $message->getName());
  73. $this->assertEquals($parts, $message->parts);
  74. $this->assertEquals("test", $message->getDocumentation());
  75. try {
  76. $message = new Zend_Soap_Wsdl_Element_Message(array(), $parts, "test");
  77. $this->fail();
  78. } catch(Zend_Soap_Wsdl_Exception $e) {
  79. }
  80. }
  81. public function testPortElementApi()
  82. {
  83. $operations = new Zend_Soap_Wsdl_Element_Collection("test");
  84. $port = new Zend_Soap_Wsdl_Element_Port("name1", $operations, "test");
  85. $this->assertEquals("name1", $port->getName());
  86. $this->assertEquals($operations, $port->operations);
  87. $this->assertEquals("test", $port->getDocumentation());
  88. try {
  89. $port = new Zend_Soap_Wsdl_Element_Port(array(), $operations, "test");
  90. $this->fail();
  91. } catch(Zend_Soap_Wsdl_Exception $e) {
  92. }
  93. }
  94. public function testOperationElementApi()
  95. {
  96. $collection = new Zend_Soap_Wsdl_Element_Collection("test");
  97. $input = new Zend_Soap_Wsdl_Element_Message("name", $collection, "test");
  98. $output = new Zend_Soap_Wsdl_Element_Message("name", $collection, "test");
  99. $operation = new Zend_Soap_Wsdl_Element_Operation("name1", $input, $output, "test");
  100. $this->assertEquals("name1", $operation->getName());
  101. $this->assertEquals($input, $operation->inputMessage);
  102. $this->assertEquals($output, $operation->outputMessage);
  103. $this->assertEquals("test", $operation->getDocumentation());
  104. try {
  105. $operation = new Zend_Soap_Wsdl_Element_Operation(array(), $input, $output, "test");
  106. $this->fail();
  107. } catch(Zend_Soap_Wsdl_Exception $e) {
  108. }
  109. }
  110. public function testServiceElementApi()
  111. {
  112. $collection = new Zend_Soap_Wsdl_Element_Collection("test");
  113. $port = new Zend_Soap_Wsdl_Element_Port("name", $collection, "test");
  114. $binding = new Zend_Soap_Wsdl_Element_Binding("name", "port", $collection, "test");
  115. $service = new Zend_Soap_Wsdl_Element_Service("service", "address", $port, $binding, "test");
  116. $this->assertEquals("service", $service->getName());
  117. $this->assertEquals("address", $service->soapAddress);
  118. $this->assertEquals($port, $service->port);
  119. $this->assertEquals($binding, $service->binding);
  120. $this->assertEquals("test", $service->getDocumentation());
  121. try {
  122. $service = new Zend_Soap_Wsdl_Element_Service(array(), "address", $port, $binding, "test");
  123. $this->fail();
  124. } catch(Zend_Soap_Wsdl_Exception $e) {
  125. }
  126. try {
  127. $service = new Zend_Soap_Wsdl_Element_Service("name", array(), $port, $binding, "test");
  128. $this->fail();
  129. } catch(Zend_Soap_Wsdl_Exception $e) {
  130. }
  131. }
  132. public function testCollectionElementApiConstruct()
  133. {
  134. $collection = new Zend_Soap_Wsdl_Element_Collection("Operation");
  135. $this->assertTrue($collection instanceof Countable);
  136. $this->assertTrue($collection instanceof Iterator);
  137. try {
  138. $type = new Zend_Soap_Wsdl_Element_Type("type", new Zend_Soap_Wsdl_Element_Collection("Type"), "test");
  139. $collection->addElement($type);
  140. $this->fail();
  141. } catch(Zend_Soap_Wsdl_Exception $e) {
  142. }
  143. try {
  144. $collection = new Zend_Soap_Wsdl_Element_Collection(false);
  145. $this->fail();
  146. } catch(Zend_Soap_Wsdl_Exception $e) {
  147. }
  148. }
  149. public function testCollectionElementApiType()
  150. {
  151. $collection = new Zend_Soap_Wsdl_Element_Collection("Operation");
  152. $this->assertEquals("Zend_Soap_Wsdl_Element_Operation", $collection->getType());
  153. $collection = new Zend_Soap_Wsdl_Element_Collection("Type");
  154. $this->assertEquals("Zend_Soap_Wsdl_Element_Type", $collection->getType());
  155. $collection = new Zend_Soap_Wsdl_Element_Collection("Binding");
  156. $this->assertEquals("Zend_Soap_Wsdl_Element_Binding", $collection->getType());
  157. $collection = new Zend_Soap_Wsdl_Element_Collection("Service");
  158. $this->assertEquals("Zend_Soap_Wsdl_Element_Service", $collection->getType());
  159. $collection = new Zend_Soap_Wsdl_Element_Collection("Port");
  160. $this->assertEquals("Zend_Soap_Wsdl_Element_Port", $collection->getType());
  161. $collection = new Zend_Soap_Wsdl_Element_Collection("Message");
  162. $this->assertEquals("Zend_Soap_Wsdl_Element_Message", $collection->getType());
  163. }
  164. public function testCollectionElementApiElementAccess()
  165. {
  166. $collection = new Zend_Soap_Wsdl_Element_Collection("Message");
  167. $message1 = new Zend_Soap_Wsdl_Element_Message("message1", new Zend_Soap_Wsdl_Element_Collection("Type"), "test");
  168. $message2 = new Zend_Soap_Wsdl_Element_Message("message2", new Zend_Soap_Wsdl_Element_Collection("Type"), "test");
  169. $messageDuplicate = new Zend_Soap_Wsdl_Element_Message("message2", new Zend_Soap_Wsdl_Element_Collection("Type"), "test");
  170. $collection->addElement($message1);
  171. $this->assertEquals(array("message1"), $collection->getElementNames());
  172. $this->assertEquals($message1, $collection->getElement("message1"));
  173. $this->assertEquals(1, count($collection));
  174. $collection->addElement($message2);
  175. $this->assertEquals(array("message1", "message2"), $collection->getElementNames());
  176. $this->assertEquals($message2, $collection->getElement("message2"));
  177. $this->assertEquals(2, count($collection));
  178. try {
  179. // Adding duplicate message leads to exception
  180. $collection->addElement($messageDuplicate);
  181. $this->fail("Adding a duplicate named element to a collection should throw an exception.");
  182. } catch(Zend_Soap_Wsdl_Exception $e) {
  183. $this->assertEquals(array("message1", "message2"), $collection->getElementNames());
  184. $this->assertEquals($message2, $collection->getElement("message2"));
  185. $this->assertEquals(2, count($collection));
  186. }
  187. try {
  188. // Accessing unkown message leads to exception
  189. $collection->getElement("messageUnknown");
  190. $this->fail("Accessing unknown element should throw an exception.");
  191. } catch(Zend_Soap_Wsdl_Exception $e) {
  192. $this->assertEquals(2, count($collection));
  193. }
  194. foreach($collection AS $name => $message) {
  195. $this->assertTrue($message instanceof Zend_Soap_Wsdl_Element_Message);
  196. $this->assertTrue( in_array($name, $collection->getElementNames()) );
  197. }
  198. }
  199. }