/** * loadXml() test * * Call as method call * * Expects: * - response: * * Returns: boolean */ public function testLoadXml() { $dom = new DOMDocument('1.0', 'UTF-8'); $response = $dom->appendChild($dom->createElement('methodResponse')); $params = $response->appendChild($dom->createElement('params')); $param = $params->appendChild($dom->createElement('param')); $value = $param->appendChild($dom->createElement('value')); $value->appendChild($dom->createElement('string', 'Return value')); $xml = $dom->saveXML(); $parsed = $this->_response->loadXml($xml); $this->assertTrue($parsed, $xml); $this->assertEquals('Return value', $this->_response->getReturnValue()); }
/** * {@inheritdoc} */ public function parse($xmlString) { $response = new \Zend_XmlRpc_Response(); try { $response->loadXml($xmlString); } catch (\Exception $e) { throw new ParserException($e->getMessage(), $e->getCode(), $e); } if ($response->isFault()) { $fault = $response->getFault(); throw new FaultException($fault->getMessage(), $fault->getCode()); } $result = $response->getReturnValue(); $toBeVisited = [&$result]; while (isset($toBeVisited[0]) && ($value =& $toBeVisited[0])) { $type = gettype($value); if ($type === 'array') { foreach ($value as &$element) { $toBeVisited[] =& $element; } reset($value); // Reset all array pointers } array_shift($toBeVisited); } return $result; }
public function testLoadXmlThrowsExceptionWithMissingNodes3() { $sxl = new \SimpleXMLElement('<?xml version="1.0"?><methodResponse><bar>foo</bar></methodResponse>'); $this->assertFalse($this->_response->loadXml($sxl->asXML())); $this->assertTrue($this->_response->isFault()); $fault = $this->_response->getFault(); $this->assertEquals(652, $fault->getCode()); }
protected function _loadXml($xml) { try { $this->_response->loadXml($xml); $this->fail('Invalid XML-RPC response should raise an exception'); } catch (Exception $e) { } }
/** * @group ZF-12293 */ public function testDoesNotAllowExternalEntities() { $payload = file_get_contents(dirname(__FILE__) . '/_files/ZF12293-response.xml'); $payload = sprintf($payload, 'file://' . realpath(dirname(__FILE__) . '/_files/ZF12293-payload.txt')); $this->_response->loadXml($payload); $value = $this->_response->getReturnValue(); $this->assertTrue(empty($value)); if (is_string($value)) { $this->assertNotContains('Local file inclusion', $value); } }
/** * Perform an XML-RPC request and return a response. * * @param Zend_XmlRpc_Request $request * @param null|Zend_XmlRpc_Response $response * @return void */ public function doRequest($request, $response = null) { $this->_lastRequest = $request; iconv_set_encoding('input_encoding', 'UTF-8'); iconv_set_encoding('output_encoding', 'UTF-8'); iconv_set_encoding('internal_encoding', 'UTF-8'); $http = $this->getHttpClient(); $http->setUri($this->_serverAddress); $http->setHeaders(array('Content-Type: text/xml; charset=utf-8', 'User-Agent: Zend_XmlRpc_Client')); $xml = $this->_lastRequest->__toString(); $http->setRawData($xml); $httpResponse = $http->request(Zend_Http_Client::POST); if (!$httpResponse->isSuccessful()) { throw new Zend_XmlRpc_Client_HttpException($httpResponse->getMessage(), $httpResponse->getStatus()); } if ($response === null) { $response = new Zend_XmlRpc_Response(); } $this->_lastResponse = $response; $this->_lastResponse->loadXml($httpResponse->getBody()); }
/** * Perform an XML-RPC request and return a response. * * @param Zend_XmlRpc_Request $request * @param null|Zend_XmlRpc_Response $response * @return void * @throws Zend_XmlRpc_Client_HttpException */ public function doRequest($request, $response = null) { $this->_lastRequest = $request; iconv_set_encoding('input_encoding', 'UTF-8'); iconv_set_encoding('output_encoding', 'UTF-8'); iconv_set_encoding('internal_encoding', 'UTF-8'); $http = $this->getHttpClient(); if ($http->getUri() === null) { $http->setUri($this->_serverAddress); } $http->setHeaders(array('Content-Type: text/xml; charset=utf-8', 'Accept: text/xml')); if ($http->getHeader('user-agent') === null) { $http->setHeaders(array('User-Agent: Zend_XmlRpc_Client')); } $xml = $this->_lastRequest->__toString(); $http->setRawData($xml); $httpResponse = $http->request(Zend_Http_Client::POST); if (!$httpResponse->isSuccessful()) { /** * Exception thrown when an HTTP error occurs * @see Zend_XmlRpc_Client_HttpException */ #require_once 'Zend/XmlRpc/Client/HttpException.php'; throw new Zend_XmlRpc_Client_HttpException($httpResponse->getMessage(), $httpResponse->getStatus()); } if ($response === null) { $response = new Zend_XmlRpc_Response(); } $this->_lastResponse = $response; $this->_lastResponse->loadXml($httpResponse->getBody()); }
public function testLoadXmlThrowsExceptionWithMissingNodes3() { $sxl = new \SimpleXMLElement('<?xml version="1.0"?><methodResponse><bar>foo</bar></methodResponse>'); $this->setExpectedException('Zend\\XmlRpc\\Exception\\ValueException', 'Missing XML-RPC value in XML'); $this->_response->loadXml($sxl->asXML()); }
public function testShouldDisallowsDoctypeInRequestXmlAndReturnFalseOnLoading() { $payload = file_get_contents(dirname(__FILE__) . '/_files/ZF12293-response.xml'); $payload = sprintf($payload, 'file://' . realpath(dirname(__FILE__) . '/_files/ZF12293-payload.txt')); $this->assertFalse($this->_response->loadXml($payload)); }