Skip to content

Commit

Permalink
bump min version of pxr; add tests for xmlrpc_decode
Browse files Browse the repository at this point in the history
  • Loading branch information
gggeek committed Apr 15, 2024
1 parent 5d80e0b commit 34438ea
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 1 deletion.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
},
"require": {
"php": "^5.4.0 || ^7.0 || ^8.0",
"phpxmlrpc/phpxmlrpc": "^4.10.0"
"phpxmlrpc/phpxmlrpc": "^4.10.2"
},
"require-dev": {
"ext-curl": "*",
Expand Down
54 changes: 54 additions & 0 deletions tests/APITest.php
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,23 @@ function testEncode($value)
/// @todo test that the decoded value is the same as the original one - at least for common cases
}

/**
* @dataProvider getXMLDecodingValues
*/
public function testXMLDecoding($text)
{
static $z;

$ok = xmlrpc_decode($text);
$ok1 = p::xmlrpc_decode($text);

if ($ok != $ok1) {
echo $z++ . "$text\n\n";
}

$this->assertEquals($ok, $ok1, "xmlrpc_decode result not compliant");
}

/**
* @dataProvider getEncodeRequestValues
*/
Expand Down Expand Up @@ -481,4 +498,41 @@ protected function getCommonValues()

return $values;
}

public function getXMLDecodingValues()
{
$partialValues = array(
array('Hello Dolly'),
array('<string>Hello Dolly</string>'),
array('<value><string>Hello Dolly</string></value>'),
array('<param><value><string>Hello Dolly</string></value></param>'),
array('<params><param><value><string>Hello Dolly</string></value></param></params>'),
// array('<params><param><value><string>Hello</string></value></param><param><value><string>Dolly</string></value></param></params>'), // KO
array('<methodName>Hello.Dolly</methodName>'),
//array('<methodCall><methodName>Hello.Dolly</methodName></methodCall>'), // KO - but invalid xmlrpc anyway
array('<methodCall><methodName>Hello.Dolly</methodName><params></params></methodCall>'),
//array('<methodCall><methodName>Hello.Dolly</methodName><params><param></param></params></methodCall>'), // KO - but invalid xmlrpc anyway
array('<methodCall><methodName>Hello.Dolly</methodName><params><param><value></value></param></params></methodCall>'),
array('<methodCall><methodName>Hello.Dolly</methodName><params><param><value><string>Hello Dolly</string></value></param></params></methodCall>'),
array('<methodResponse></methodResponse>'),
array('<methodResponse><params></params></methodResponse>'),
array('<methodResponse><params><param></param></params></methodResponse>'),
array('<methodResponse><params><param><value></value></param></params></methodResponse>'),
array('<methodResponse><params><param><value><string>Hello Dolly</string></value></param></params></methodResponse>'),
array('<struct><member><name>faultCode</name><value><int>4</int></value></member><member><name>faultString</name><value><string>Too many parameters.</string></value></member></struct>'),
array('<value><struct><member><name>faultCode</name><value><int>4</int></value></member><member><name>faultString</name><value><string>Too many parameters.</string></value></member></struct></value>'),
array('<param><value><struct><member><name>faultCode</name><value><int>4</int></value></member><member><name>faultString</name><value><string>Too many parameters.</string></value></member></struct></value></param>'),
array('<params><param><value><struct><member><name>faultCode</name><value><int>4</int></value></member><member><name>faultString</name><value><string>Too many parameters.</string></value></member></struct></value></param></params>'),
array('<fault><value><struct><member><name>faultCode</name><value><int>4</int></value></member><member><name>faultString</name><value><string>Too many parameters.</string></value></member></struct></value></fault>'),
array('<methodResponse><fault><value><struct><member><name>faultCode</name><value><int>4</int></value></member><member><name>faultString</name><value><string>Too many parameters.</string></value></member></struct></value></fault></methodResponse>'),
);

$values = $partialValues;
array_shift($partialValues);
foreach ($partialValues as $item) {
$values[] = array('<?xml version="1.0" ?>' . $item[0]);
}

return $values;
}
}

0 comments on commit 34438ea

Please sign in to comment.