/tests/Zend/XmlRpc/Server/FaultTest.php

https://github.com/WebTricks/WebTricks-CMS · PHP · 297 lines · 187 code · 41 blank · 69 comment · 4 complexity · 5db15f2491dfae1e8febd7ea7cfaddf4 MD5 · raw file

  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_XmlRpc
  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: FaultTest.php 20096 2010-01-06 02:05:09Z bkarwin $
  21. */
  22. // Call Zend_XmlRpc_Server_FaultTest::main() if this source file is executed directly.
  23. if (!defined("PHPUnit_MAIN_METHOD")) {
  24. require_once dirname(__FILE__) . '/../../../TestHelper.php';
  25. define("PHPUnit_MAIN_METHOD", "Zend_XmlRpc_Server_FaultTest::main");
  26. }
  27. require_once "PHPUnit/Framework/TestCase.php";
  28. require_once "PHPUnit/Framework/TestSuite.php";
  29. require_once 'Zend/XmlRpc/Server.php';
  30. require_once 'Zend/XmlRpc/Server/Fault.php';
  31. /**
  32. * Test case for Zend_XmlRpc_Server_Fault
  33. *
  34. * @category Zend
  35. * @package Zend_XmlRpc
  36. * @subpackage UnitTests
  37. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  38. * @license http://framework.zend.com/license/new-bsd New BSD License
  39. * @group Zend_XmlRpc
  40. */
  41. class Zend_XmlRpc_Server_FaultTest extends PHPUnit_Framework_TestCase
  42. {
  43. /**
  44. * Runs the test methods of this class.
  45. *
  46. * @access public
  47. * @static
  48. */
  49. public static function main()
  50. {
  51. require_once "PHPUnit/TextUI/TestRunner.php";
  52. $suite = new PHPUnit_Framework_TestSuite("Zend_XmlRpc_Server_FaultTest");
  53. $result = PHPUnit_TextUI_TestRunner::run($suite);
  54. }
  55. /**
  56. * Zend_XmlRpc_Server_Fault::getInstance() test
  57. */
  58. public function testGetInstance()
  59. {
  60. $e = new Zend_XmlRpc_Server_Exception('Testing fault', 411);
  61. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  62. $this->assertTrue($fault instanceof Zend_XmlRpc_Server_Fault);
  63. }
  64. /**
  65. * Zend_XmlRpc_Server_Fault::attachFaultException() test
  66. */
  67. public function testAttachFaultException()
  68. {
  69. Zend_XmlRpc_Server_Fault::attachFaultException('zxrs_fault_test_exception');
  70. $e = new zxrs_fault_test_exception('test exception', 411);
  71. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  72. $this->assertEquals('test exception', $fault->getMessage());
  73. $this->assertEquals(411, $fault->getCode());
  74. Zend_XmlRpc_Server_Fault::detachFaultException('zxrs_fault_test_exception');
  75. $exceptions = array(
  76. 'zxrs_fault_test_exception',
  77. 'zxrs_fault_test_exception2',
  78. 'zxrs_fault_test_exception3'
  79. );
  80. Zend_XmlRpc_Server_Fault::attachFaultException($exceptions);
  81. foreach ($exceptions as $class) {
  82. $e = new $class('test exception', 411);
  83. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  84. $this->assertEquals('test exception', $fault->getMessage());
  85. $this->assertEquals(411, $fault->getCode());
  86. }
  87. Zend_XmlRpc_Server_Fault::detachFaultException($exceptions);
  88. }
  89. /**
  90. * Tests ZF-1825
  91. * @return void
  92. */
  93. public function testAttachFaultExceptionAllowsForDerivativeExceptionClasses()
  94. {
  95. Zend_XmlRpc_Server_Fault::attachFaultException('zxrs_fault_test_exception');
  96. $e = new zxrs_fault_test_exception4('test exception', 411);
  97. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  98. $this->assertEquals('test exception', $fault->getMessage());
  99. $this->assertEquals(411, $fault->getCode());
  100. Zend_XmlRpc_Server_Fault::detachFaultException('zxrs_fault_test_exception');
  101. }
  102. /**
  103. * Zend_XmlRpc_Server_Fault::detachFaultException() test
  104. */
  105. public function testDetachFaultException()
  106. {
  107. Zend_XmlRpc_Server_Fault::attachFaultException('zxrs_fault_test_exception');
  108. $e = new zxrs_fault_test_exception('test exception', 411);
  109. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  110. $this->assertEquals('test exception', $fault->getMessage());
  111. $this->assertEquals(411, $fault->getCode());
  112. Zend_XmlRpc_Server_Fault::detachFaultException('zxrs_fault_test_exception');
  113. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  114. $this->assertEquals('Unknown error', $fault->getMessage());
  115. $this->assertEquals(404, $fault->getCode());
  116. $exceptions = array(
  117. 'zxrs_fault_test_exception',
  118. 'zxrs_fault_test_exception2',
  119. 'zxrs_fault_test_exception3'
  120. );
  121. Zend_XmlRpc_Server_Fault::attachFaultException($exceptions);
  122. foreach ($exceptions as $class) {
  123. $e = new $class('test exception', 411);
  124. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  125. $this->assertEquals('test exception', $fault->getMessage());
  126. $this->assertEquals(411, $fault->getCode());
  127. }
  128. Zend_XmlRpc_Server_Fault::detachFaultException($exceptions);
  129. foreach ($exceptions as $class) {
  130. $e = new $class('test exception', 411);
  131. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  132. $this->assertEquals('Unknown error', $fault->getMessage());
  133. $this->assertEquals(404, $fault->getCode());
  134. }
  135. }
  136. /**
  137. * Zend_XmlRpc_Server_Fault::attachObserver() test
  138. */
  139. public function testAttachObserver()
  140. {
  141. Zend_XmlRpc_Server_Fault::attachObserver('zxrs_fault_observer');
  142. $e = new Zend_XmlRpc_Server_Exception('Checking observers', 411);
  143. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  144. $observed = zxrs_fault_observer::getObserved();
  145. zxrs_fault_observer::clearObserved();
  146. Zend_XmlRpc_Server_Fault::detachObserver('zxrs_fault_observer');
  147. $this->assertTrue(!empty($observed));
  148. $f = array_shift($observed);
  149. $this->assertTrue($f instanceof Zend_XmlRpc_Server_Fault);
  150. $this->assertEquals('Checking observers', $f->getMessage());
  151. $this->assertEquals(411, $f->getCode());
  152. $this->assertFalse(Zend_XmlRpc_Server_Fault::attachObserver('foo'));
  153. }
  154. /**
  155. * Zend_XmlRpc_Server_Fault::detachObserver() test
  156. */
  157. public function testDetachObserver()
  158. {
  159. Zend_XmlRpc_Server_Fault::attachObserver('zxrs_fault_observer');
  160. $e = new Zend_XmlRpc_Server_Exception('Checking observers', 411);
  161. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  162. zxrs_fault_observer::clearObserved();
  163. Zend_XmlRpc_Server_Fault::detachObserver('zxrs_fault_observer');
  164. $e = new Zend_XmlRpc_Server_Exception('Checking observers', 411);
  165. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  166. $observed = zxrs_fault_observer::getObserved();
  167. $this->assertTrue(empty($observed));
  168. $this->assertFalse(Zend_XmlRpc_Server_Fault::detachObserver('foo'));
  169. }
  170. /**
  171. * getCode() test
  172. */
  173. public function testGetCode()
  174. {
  175. $e = new Zend_XmlRpc_Server_Exception('Testing fault', 411);
  176. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  177. $this->assertEquals(411, $fault->getCode());
  178. }
  179. /**
  180. * getException() test
  181. */
  182. public function testGetException()
  183. {
  184. $e = new Zend_XmlRpc_Server_Exception('Testing fault', 411);
  185. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  186. $this->assertSame($e, $fault->getException());
  187. }
  188. /**
  189. * getMessage() test
  190. */
  191. public function testGetMessage()
  192. {
  193. $e = new Zend_XmlRpc_Server_Exception('Testing fault', 411);
  194. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  195. $this->assertEquals('Testing fault', $fault->getMessage());
  196. }
  197. /**
  198. * __toString() test
  199. */
  200. public function test__toString()
  201. {
  202. $dom = new DOMDocument('1.0', 'UTF-8');
  203. $r = $dom->appendChild($dom->createElement('methodResponse'));
  204. $f = $r->appendChild($dom->createElement('fault'));
  205. $v = $f->appendChild($dom->createElement('value'));
  206. $s = $v->appendChild($dom->createElement('struct'));
  207. $m1 = $s->appendChild($dom->createElement('member'));
  208. $m1->appendChild($dom->createElement('name', 'faultCode'));
  209. $cv = $m1->appendChild($dom->createElement('value'));
  210. $cv->appendChild($dom->createElement('int', 411));
  211. $m2 = $s->appendChild($dom->createElement('member'));
  212. $m2->appendChild($dom->createElement('name', 'faultString'));
  213. $sv = $m2->appendChild($dom->createElement('value'));
  214. $sv->appendChild($dom->createElement('string', 'Testing fault'));
  215. $xml = $dom->saveXML();
  216. require_once 'Zend/XmlRpc/Server/Exception.php';
  217. $e = new Zend_XmlRpc_Server_Exception('Testing fault', 411);
  218. $fault = Zend_XmlRpc_Server_Fault::getInstance($e);
  219. $this->assertEquals(trim($xml), trim($fault->__toString()));
  220. }
  221. }
  222. class zxrs_fault_test_exception extends Exception {}
  223. class zxrs_fault_test_exception2 extends Exception {}
  224. class zxrs_fault_test_exception3 extends Exception {}
  225. class zxrs_fault_test_exception4 extends zxrs_fault_test_exception {}
  226. class zxrs_fault_observer
  227. {
  228. private static $_instance = false;
  229. public $observed = array();
  230. private function __construct()
  231. {
  232. }
  233. public static function getInstance()
  234. {
  235. if (!self::$_instance) {
  236. self::$_instance = new self();
  237. }
  238. return self::$_instance;
  239. }
  240. public static function observe(Zend_XmlRpc_Server_Fault $fault)
  241. {
  242. self::getInstance()->observed[] = $fault;
  243. }
  244. public static function clearObserved()
  245. {
  246. self::getInstance()->observed = array();
  247. }
  248. public static function getObserved()
  249. {
  250. return self::getInstance()->observed;
  251. }
  252. }
  253. // Call Zend_XmlRpc_Server_FaultTest::main() if this source file is executed directly.
  254. if (PHPUnit_MAIN_METHOD == "Zend_XmlRpc_Server_FaultTest::main") {
  255. Zend_XmlRpc_Server_FaultTest::main();
  256. }