X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2F3LocalhostTest.php;h=9be1f3a2f1023f0cbf0e8b9840a45e01e6a325e0;hb=19d9e6a3f9c89251656c6fb1a1d7478af4656379;hp=118f10b722f71947ea5288376a593e69ba12b79c;hpb=c4596e5377f63464ebb1e60989f96ae82c81135a;p=plcapi.git diff --git a/tests/3LocalhostTest.php b/tests/3LocalhostTest.php index 118f10b..9be1f3a 100644 --- a/tests/3LocalhostTest.php +++ b/tests/3LocalhostTest.php @@ -116,7 +116,7 @@ class LocalhostTest extends PHPUnit_Framework_TestCase * @param PhpXmlRpc\Request|array $msg * @param int|array $errorCode * @param bool $returnResponse - * @return mixed|\PhpXmlRpc\Response|\PhpXmlRpc\Response[]|\PhpXmlRpc\Value|string|void + * @return mixed|\PhpXmlRpc\Response|\PhpXmlRpc\Response[]|\PhpXmlRpc\Value|string|null */ protected function send($msg, $errorCode = 0, $returnResponse = false) { @@ -141,10 +141,22 @@ class LocalhostTest extends PHPUnit_Framework_TestCase return $r->value(); } } else { - return; + return null; } } + /** + * Adds (and replaces) query params to the url currently used by the client + * @param array $data + */ + protected function addQueryParams($data) + { + $query = parse_url($this->client->path, PHP_URL_QUERY); + parse_str($query, $vars); + $query = http_build_query(array_merge($vars, $data)); + $this->client->path = parse_url($this->client->path, PHP_URL_PATH) . '?' . $query; + } + public function testString() { $sendString = "here are 3 \"entities\": < > & " . @@ -235,7 +247,7 @@ class LocalhostTest extends PHPUnit_Framework_TestCase PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding = 'UTF-8'; // no encoding declaration either in the http header or xml prolog, let mb_detect_encoding // (used on the server side) sort it out - $this->client->path = $this->args['URI'].'?DETECT_ENCODINGS[]=EUC-JP&DETECT_ENCODINGS[]=UTF-8'; + $this->addQueryParams(array('DETECT_ENCODINGS' => array('EUC-JP', 'UTF-8'))); $v = $this->send(mb_convert_encoding($str, 'EUC-JP', 'UTF-8')); $this->assertEquals($sendString, $v->scalarval()); PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding = 'ISO-8859-1'; @@ -261,7 +273,7 @@ class LocalhostTest extends PHPUnit_Framework_TestCase // no encoding declaration either in the http header or xml prolog, let mb_detect_encoding // (used on the server side) sort it out - $this->client->path = $this->args['URI'].'?DETECT_ENCODINGS[]=ISO-8859-1&DETECT_ENCODINGS[]=UTF-8'; + $this->addQueryParams(array('DETECT_ENCODINGS' => array('ISO-8859-1', 'UTF-8'))); $v = $this->send($str); $this->assertEquals($sendString, $v->scalarval()); } @@ -598,7 +610,7 @@ And turned it into nylon'; $val = $r[3]->value(); $this->assertTrue(is_array($val), "good2 did not return array"); } - $this->client->return_type = 'xmlrpcvals'; + //$this->client->return_type = 'xmlrpcvals'; } public function testCatchWarnings() @@ -618,9 +630,9 @@ And turned it into nylon'; new xmlrpcval('whatever', 'string'), )); $v = $this->send($m, $GLOBALS['xmlrpcerr']['server_error']); - $this->client->path = $this->args['URI'] . '?EXCEPTION_HANDLING=1'; + $this->addQueryParams(array('EXCEPTION_HANDLING' => 1)); $v = $this->send($m, 1); // the error code of the expected exception - $this->client->path = $this->args['URI'] . '?EXCEPTION_HANDLING=2'; + $this->addQueryParams(array('EXCEPTION_HANDLING' => 2)); // depending on whether display_errors is ON or OFF on the server, we will get back a different error here, // as php will generate an http status code of either 200 or 500... $v = $this->send($m, array($GLOBALS['xmlrpcerr']['invalid_return'], $GLOBALS['xmlrpcerr']['http_error']));