ElementTest.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <?php
  2. require_once dirname(__FILE__)."/../../../TestHelper.php";
  3. require_once "Zend/Soap/Wsdl/Element/Binding.php";
  4. require_once "Zend/Soap/Wsdl/Element/Type.php";
  5. require_once "Zend/Soap/Wsdl/Element/Message.php";
  6. require_once "Zend/Soap/Wsdl/Element/Operation.php";
  7. require_once "Zend/Soap/Wsdl/Element/Port.php";
  8. require_once "Zend/Soap/Wsdl/Element/Service.php";
  9. require_once "Zend/Soap/Wsdl/Element/Collection.php";
  10. class Zend_Soap_Wsdl_ElementTest extends PHPUnit_Framework_TestCase
  11. {
  12. public function testBindingElementApi()
  13. {
  14. $operations = new Zend_Soap_Wsdl_Element_Collection("test");
  15. $binding = new Zend_Soap_Wsdl_Element_Binding("name1", "port1", $operations, "test");
  16. $this->assertEquals("name1", $binding->getName());
  17. $this->assertEquals("port1", $binding->portName);
  18. $this->assertEquals($operations, $binding->operations);
  19. $this->assertEquals("test", $binding->getDocumentation());
  20. try {
  21. $binding = new Zend_Soap_Wsdl_Element_Binding(array(), "portName", $operations, "test");
  22. $this->fail();
  23. } catch(Zend_Soap_Wsdl_Exception $e) {
  24. }
  25. }
  26. public function testTypeElementApi()
  27. {
  28. $types = new Zend_Soap_Wsdl_Element_Collection("test");
  29. $type = new Zend_Soap_Wsdl_Element_Type("name1", $types, "test");
  30. $this->assertEquals("name1", $type->getName());
  31. $this->assertEquals($types, $type->types);
  32. $this->assertEquals("test", $type->getDocumentation());
  33. try {
  34. $type = new Zend_Soap_Wsdl_Element_Type(array(), $types, "test");
  35. $this->fail();
  36. } catch(Zend_Soap_Wsdl_Exception $e) {
  37. }
  38. }
  39. public function testMessageElementApi()
  40. {
  41. $parts = new Zend_Soap_Wsdl_Element_Collection("test");
  42. $message = new Zend_Soap_Wsdl_Element_Message("name1", $parts, "test");
  43. $this->assertEquals("name1", $message->getName());
  44. $this->assertEquals($parts, $message->parts);
  45. $this->assertEquals("test", $message->getDocumentation());
  46. try {
  47. $message = new Zend_Soap_Wsdl_Element_Message(array(), $parts, "test");
  48. $this->fail();
  49. } catch(Zend_Soap_Wsdl_Exception $e) {
  50. }
  51. }
  52. public function testPortElementApi()
  53. {
  54. $operations = new Zend_Soap_Wsdl_Element_Collection("test");
  55. $port = new Zend_Soap_Wsdl_Element_Port("name1", $operations, "test");
  56. $this->assertEquals("name1", $port->getName());
  57. $this->assertEquals($operations, $port->operations);
  58. $this->assertEquals("test", $port->getDocumentation());
  59. try {
  60. $port = new Zend_Soap_Wsdl_Element_Port(array(), $operations, "test");
  61. $this->fail();
  62. } catch(Zend_Soap_Wsdl_Exception $e) {
  63. }
  64. }
  65. public function testOperationElementApi()
  66. {
  67. $collection = new Zend_Soap_Wsdl_Element_Collection("test");
  68. $input = new Zend_Soap_Wsdl_Element_Message("name", $collection, "test");
  69. $output = new Zend_Soap_Wsdl_Element_Message("name", $collection, "test");
  70. $operation = new Zend_Soap_Wsdl_Element_Operation("name1", $input, $output, "test");
  71. $this->assertEquals("name1", $operation->getName());
  72. $this->assertEquals($input, $operation->inputMessage);
  73. $this->assertEquals($output, $operation->outputMessage);
  74. $this->assertEquals("test", $operation->getDocumentation());
  75. try {
  76. $operation = new Zend_Soap_Wsdl_Element_Operation(array(), $input, $output, "test");
  77. $this->fail();
  78. } catch(Zend_Soap_Wsdl_Exception $e) {
  79. }
  80. }
  81. public function testServiceElementApi()
  82. {
  83. $collection = new Zend_Soap_Wsdl_Element_Collection("test");
  84. $port = new Zend_Soap_Wsdl_Element_Port("name", $collection, "test");
  85. $binding = new Zend_Soap_Wsdl_Element_Binding("name", "port", $collection, "test");
  86. $service = new Zend_Soap_Wsdl_Element_Service("service", "address", $port, $binding, "test");
  87. $this->assertEquals("service", $service->getName());
  88. $this->assertEquals("address", $service->soapAddress);
  89. $this->assertEquals($port, $service->port);
  90. $this->assertEquals($binding, $service->binding);
  91. $this->assertEquals("test", $service->getDocumentation());
  92. try {
  93. $service = new Zend_Soap_Wsdl_Element_Service(array(), "address", $port, $binding, "test");
  94. $this->fail();
  95. } catch(Zend_Soap_Wsdl_Exception $e) {
  96. }
  97. try {
  98. $service = new Zend_Soap_Wsdl_Element_Service("name", array(), $port, $binding, "test");
  99. $this->fail();
  100. } catch(Zend_Soap_Wsdl_Exception $e) {
  101. }
  102. }
  103. public function testCollectionElementApiConstruct()
  104. {
  105. $collection = new Zend_Soap_Wsdl_Element_Collection("Operation");
  106. $this->assertTrue($collection instanceof Countable);
  107. $this->assertTrue($collection instanceof Iterator);
  108. try {
  109. $type = new Zend_Soap_Wsdl_Element_Type("type", new Zend_Soap_Wsdl_Element_Collection("Type"), "test");
  110. $collection->addElement($type);
  111. $this->fail();
  112. } catch(Zend_Soap_Wsdl_Exception $e) {
  113. }
  114. try {
  115. $collection = new Zend_Soap_Wsdl_Element_Collection(false);
  116. $this->fail();
  117. } catch(Zend_Soap_Wsdl_Exception $e) {
  118. }
  119. }
  120. public function testCollectionElementApiType()
  121. {
  122. $collection = new Zend_Soap_Wsdl_Element_Collection("Operation");
  123. $this->assertEquals("Zend_Soap_Wsdl_Element_Operation", $collection->getType());
  124. $collection = new Zend_Soap_Wsdl_Element_Collection("Type");
  125. $this->assertEquals("Zend_Soap_Wsdl_Element_Type", $collection->getType());
  126. $collection = new Zend_Soap_Wsdl_Element_Collection("Binding");
  127. $this->assertEquals("Zend_Soap_Wsdl_Element_Binding", $collection->getType());
  128. $collection = new Zend_Soap_Wsdl_Element_Collection("Service");
  129. $this->assertEquals("Zend_Soap_Wsdl_Element_Service", $collection->getType());
  130. $collection = new Zend_Soap_Wsdl_Element_Collection("Port");
  131. $this->assertEquals("Zend_Soap_Wsdl_Element_Port", $collection->getType());
  132. $collection = new Zend_Soap_Wsdl_Element_Collection("Message");
  133. $this->assertEquals("Zend_Soap_Wsdl_Element_Message", $collection->getType());
  134. }
  135. public function testCollectionElementApiElementAccess()
  136. {
  137. $collection = new Zend_Soap_Wsdl_Element_Collection("Message");
  138. $message1 = new Zend_Soap_Wsdl_Element_Message("message1", new Zend_Soap_Wsdl_Element_Collection("Type"), "test");
  139. $message2 = new Zend_Soap_Wsdl_Element_Message("message2", new Zend_Soap_Wsdl_Element_Collection("Type"), "test");
  140. $messageDuplicate = new Zend_Soap_Wsdl_Element_Message("message2", new Zend_Soap_Wsdl_Element_Collection("Type"), "test");
  141. $collection->addElement($message1);
  142. $this->assertEquals(array("message1"), $collection->getElementNames());
  143. $this->assertEquals($message1, $collection->getElement("message1"));
  144. $this->assertEquals(1, count($collection));
  145. $collection->addElement($message2);
  146. $this->assertEquals(array("message1", "message2"), $collection->getElementNames());
  147. $this->assertEquals($message2, $collection->getElement("message2"));
  148. $this->assertEquals(2, count($collection));
  149. try {
  150. // Adding duplicate message leads to exception
  151. $collection->addElement($messageDuplicate);
  152. $this->fail("Adding a duplicate named element to a collection should throw an exception.");
  153. } catch(Zend_Soap_Wsdl_Exception $e) {
  154. $this->assertEquals(array("message1", "message2"), $collection->getElementNames());
  155. $this->assertEquals($message2, $collection->getElement("message2"));
  156. $this->assertEquals(2, count($collection));
  157. }
  158. try {
  159. // Accessing unkown message leads to exception
  160. $collection->getElement("messageUnknown");
  161. $this->fail("Accessing unknown element should throw an exception.");
  162. } catch(Zend_Soap_Wsdl_Exception $e) {
  163. $this->assertEquals(2, count($collection));
  164. }
  165. foreach($collection AS $name => $message) {
  166. $this->assertTrue($message instanceof Zend_Soap_Wsdl_Element_Message);
  167. $this->assertTrue( in_array($name, $collection->getElementNames()) );
  168. }
  169. }
  170. }