summaryrefslogtreecommitdiff
path: root/ext/xmlrpc/tests
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2010-03-09 11:57:54 +0100
committerOndřej Surý <ondrej@sury.org>2010-03-09 11:57:54 +0100
commit855a09f4eded707941180c9d90acd17c25e29447 (patch)
treea40947efaa9876f31b6ee3956c3f3775768143bb /ext/xmlrpc/tests
parentc852c28a88fccf6e34a2cb091fdfa72bce2b59c7 (diff)
downloadphp-upstream/5.3.2.tar.gz
Imported Upstream version 5.3.2upstream/5.3.2
Diffstat (limited to 'ext/xmlrpc/tests')
-rw-r--r--ext/xmlrpc/tests/bug50282.phpt43
-rw-r--r--ext/xmlrpc/tests/bug50285.phpt115
-rw-r--r--ext/xmlrpc/tests/bug50761.phpt62
3 files changed, 220 insertions, 0 deletions
diff --git a/ext/xmlrpc/tests/bug50282.phpt b/ext/xmlrpc/tests/bug50282.phpt
new file mode 100644
index 000000000..eb35fe3f2
--- /dev/null
+++ b/ext/xmlrpc/tests/bug50282.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Bug #50282 (xmlrpc_encode_request() changes object into array in calling function)
+--SKIPIF--
+<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
+--FILE--
+<?php
+
+class One { var $x = 10; }
+
+$o = new One();
+var_dump($o);
+var_dump(xmlrpc_encode_request('test', $o));
+var_dump($o);
+
+?>
+--EXPECTF--
+object(One)#%d (1) {
+ ["x"]=>
+ int(10)
+}
+string(279) "<?xml version="1.0" encoding="iso-8859-1"?>
+<methodCall>
+<methodName>test</methodName>
+<params>
+ <param>
+ <value>
+ <struct>
+ <member>
+ <name>x</name>
+ <value>
+ <int>10</int>
+ </value>
+ </member>
+ </struct>
+ </value>
+ </param>
+</params>
+</methodCall>
+"
+object(One)#%d (1) {
+ ["x"]=>
+ int(10)
+}
diff --git a/ext/xmlrpc/tests/bug50285.phpt b/ext/xmlrpc/tests/bug50285.phpt
new file mode 100644
index 000000000..cf766fc40
--- /dev/null
+++ b/ext/xmlrpc/tests/bug50285.phpt
@@ -0,0 +1,115 @@
+--TEST--
+Bug #50285 (xmlrpc does not preserve keys in encoded indexed arrays)
+--FILE--
+<?php
+
+function test1($func, $params) {
+ return array(1=>'One', 3=>'Three', 5=>'Five');
+}
+
+function test2($func, $params) {
+ return array('One', 'Three', 'Five', 5);
+}
+
+function test3($func, $params) {
+ return array('One', 3 => 'Three', b'Five' => 5, 'Six');
+}
+
+function test4($func, $params) {
+ return array('One', 'Three', 'Five', b'Six' => 6);
+}
+
+$server = xmlrpc_server_create();
+$result = xmlrpc_server_register_method($server, 'test1', 'test1');
+$HTTP_RAW_POST_DATA = <<<EOD
+<?xml version="1.0" encoding="UTF-8"?>
+<methodCall>
+<methodName>test1</methodName>
+<params />
+</methodCall>
+EOD;
+$response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
+var_dump(xmlrpc_decode($response));
+
+// ------------
+
+$server = xmlrpc_server_create();
+$result = xmlrpc_server_register_method($server, 'test2', 'test2');
+$HTTP_RAW_POST_DATA = <<<EOD
+<?xml version="1.0" encoding="UTF-8"?>
+<methodCall>
+<methodName>test2</methodName>
+<params />
+</methodCall>
+EOD;
+$response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
+var_dump(xmlrpc_decode($response));
+
+// ------------
+
+$server = xmlrpc_server_create();
+$result = xmlrpc_server_register_method($server, 'test3', 'test3');
+$HTTP_RAW_POST_DATA = <<<EOD
+<?xml version="1.0" encoding="UTF-8"?>
+<methodCall>
+<methodName>test3</methodName>
+<params />
+</methodCall>
+EOD;
+$response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
+var_dump(xmlrpc_decode($response));
+
+// ------------
+
+$server = xmlrpc_server_create();
+$result = xmlrpc_server_register_method($server, 'test4', 'test4');
+$HTTP_RAW_POST_DATA = <<<EOD
+<?xml version="1.0" encoding="UTF-8"?>
+<methodCall>
+<methodName>test4</methodName>
+<params />
+</methodCall>
+EOD;
+$response = xmlrpc_server_call_method($server, $HTTP_RAW_POST_DATA, null);
+var_dump(xmlrpc_decode($response));
+
+?>
+--EXPECT--
+array(3) {
+ [1]=>
+ string(3) "One"
+ [3]=>
+ string(5) "Three"
+ [5]=>
+ string(4) "Five"
+}
+array(4) {
+ [0]=>
+ string(3) "One"
+ [1]=>
+ string(5) "Three"
+ [2]=>
+ string(4) "Five"
+ [3]=>
+ int(5)
+}
+array(4) {
+ [0]=>
+ string(3) "One"
+ [3]=>
+ string(5) "Three"
+ ["Five"]=>
+ int(5)
+ [4]=>
+ string(3) "Six"
+}
+array(4) {
+ [0]=>
+ string(3) "One"
+ [1]=>
+ string(5) "Three"
+ [2]=>
+ string(4) "Five"
+ ["Six"]=>
+ int(6)
+}
diff --git a/ext/xmlrpc/tests/bug50761.phpt b/ext/xmlrpc/tests/bug50761.phpt
new file mode 100644
index 000000000..653d8502f
--- /dev/null
+++ b/ext/xmlrpc/tests/bug50761.phpt
@@ -0,0 +1,62 @@
+--TEST--
+Bug #50761 (system.multiCall crashes)
+--FILE--
+<?php
+$req = '<?xml version="1.0"?>
+<methodCall>
+<methodName>system.multiCall</methodName>
+<params><param><value><array><data>
+<value><struct>
+<member><name>methodName</name><value><string>testMethodA</string></value></member>
+<member><name>params</name><value><array><data><value><string>A</string>
+</value></data></array></value></member>
+</struct></value>
+<value><struct>
+<member><name>methodName</name><value><string>testMethodB</string></value></member>
+<member><name>params</name><value><array><data><value><string>B</string>
+</value></data></array></value></member>
+</struct></value>
+</data></array></value></param></params>
+</methodCall>';
+
+function testA($methodName, $params, $var){ return "C"; }
+function testB($methodName, $params, $var){ return "D"; }
+
+$server = xmlrpc_server_create();
+xmlrpc_server_register_method($server, 'testMethodA', 'testA');
+xmlrpc_server_register_method($server, 'testMethodB', 'testB');
+$res = xmlrpc_server_call_method($server, $req, null);
+echo $res;
+?>
+--EXPECT--
+<?xml version="1.0" encoding="iso-8859-1"?>
+<methodResponse>
+<params>
+ <param>
+ <value>
+ <array>
+ <data>
+ <value>
+ <array>
+ <data>
+ <value>
+ <string>C</string>
+ </value>
+ </data>
+ </array>
+ </value>
+ <value>
+ <array>
+ <data>
+ <value>
+ <string>D</string>
+ </value>
+ </data>
+ </array>
+ </value>
+ </data>
+ </array>
+ </value>
+ </param>
+</params>
+</methodResponse>