From: gggeek Date: Sun, 5 Nov 2017 22:52:33 +0000 (+0000) Subject: One more attempt at fixing unit tests X-Git-Tag: 4.3.0~7 X-Git-Url: http://git.onelab.eu/?p=plcapi.git;a=commitdiff_plain;h=ce870f0f42cc46ba985167056d47966a8e8fd100 One more attempt at fixing unit tests --- diff --git a/NEWS b/NEWS index f8c9afd..b5d4218 100644 --- a/NEWS +++ b/NEWS @@ -2,7 +2,7 @@ XML-RPC for PHP version 4.2.3 - 2017/11/5 * fixed: compatibility with Basic/Digest/NTLM auth when using client in cURL mode (issue #55) -* improved: added unit tests for Basic and Digest http auth +* improved: added unit tests for Basic and Digest http auth. Also improved unit tests for feature of the http protocol XML-RPC for PHP version 4.2.2 - 2017/10/15 diff --git a/src/Wrapper.php b/src/Wrapper.php index ce12d9a..a45100b 100644 --- a/src/Wrapper.php +++ b/src/Wrapper.php @@ -986,7 +986,7 @@ class Wrapper * - string prefix * - bool simple_client_copy set it to true to avoid copying all properties of $client into the copy made in the new class * - * @return mixed false on error, the name of the created class if all ok or an array with code, class name and comments (if the appropriatevoption is set in extra_options) + * @return mixed false on error, the name of the created class if all ok or an array with code, class name and comments (if the appropriate option is set in extra_options) */ public function wrapXmlrpcServer($client, $extraOptions = array()) { diff --git a/tests/3LocalhostTest.php b/tests/3LocalhostTest.php index 9be1f3a..fc4bb9e 100644 --- a/tests/3LocalhostTest.php +++ b/tests/3LocalhostTest.php @@ -500,6 +500,7 @@ And turned it into nylon'; { // NB: This test will NOT pass if server does not support system.multicall. + $noMultiCall = $this->client->no_multicall; $this->client->no_multicall = false; $good1 = new xmlrpcmsg('system.methodHelp', @@ -537,12 +538,15 @@ And turned it into nylon'; $this->assertTrue($this->client->no_multicall == false, "server does not support system.multicall" ); + + $this->client->no_multicall = $noMultiCall; } public function testClientMulticall2() { // NB: This test will NOT pass if server does not support system.multicall. + $noMultiCall = $this->client->no_multicall; $this->client->no_multicall = true; $good1 = new xmlrpcmsg('system.methodHelp', @@ -574,12 +578,17 @@ And turned it into nylon'; $val = $r[3]->value(); $this->assertTrue($val->kindOf() == 'array', "good2 did not return array"); } + + $this->client->no_multicall = $noMultiCall; } public function testClientMulticall3() { // NB: This test will NOT pass if server does not support system.multicall. + $noMultiCall = $this->client->no_multicall; + $returnType = $this->client->return_type; + $this->client->return_type = 'phpvals'; $this->client->no_multicall = false; @@ -610,7 +619,9 @@ 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 = $returnType; + $this->client->no_multicall = $noMultiCall; } public function testCatchWarnings() @@ -846,19 +857,23 @@ And turned it into nylon'; $this->fail('Registration of remote server failed'); } else { $obj = new $class(); - $v = $obj->examples_getStateName(23); - // work around bug in current (or old?) version of phpunit when reporting the error - /*if (is_object($v)) { - $v = var_export($v, true); - }*/ - $this->assertEquals('Michigan', $v); + if (!is_callable(array($obj, 'examples_getStateName'))) { + $this->fail('Registration of remote server failed to import method "examples_getStateName"'); + } else { + $v = $obj->examples_getStateName(23); + // work around bug in current (or old?) version of phpunit when reporting the error + /*if (is_object($v)) { + $v = var_export($v, true); + }*/ + $this->assertEquals('Michigan', $v); + } } } public function testTransferOfObjectViaWrapping() { // make a 'deep client copy' as the original one might have many properties set - $func = wrap_xmlrpc_method($this->client, 'tests.returnPhpObject', array('simple_client_copy' => true, + $func = wrap_xmlrpc_method($this->client, 'tests.returnPhpObject', array('simple_client_copy' => 0, 'decode_php_objs' => true)); if ($func == false) { $this->fail('Registration of tests.returnPhpObject failed'); diff --git a/tests/4LocalhostMultiTest.php b/tests/4LocalhostMultiTest.php index 61e9494..f75ee20 100644 --- a/tests/4LocalhostMultiTest.php +++ b/tests/4LocalhostMultiTest.php @@ -24,7 +24,8 @@ class LocalhostMultiTest extends LocalhostTest $unsafeMethods = array('testHttps', 'testCatchExceptions', 'testUtf8Method', 'testServerComments', 'testExoticCharsetsRequests', 'testExoticCharsetsRequests2', 'testExoticCharsetsRequests3', // @todo the following are currently not compatible w Digest Auth (most likely because of client copy) and should be fixed - 'testcatchWarnings', 'testWrappedMethodAsSource', 'testTransferOfObjectViaWrapping'); + 'testcatchWarnings', 'testWrappedMethodAsSource', 'testTransferOfObjectViaWrapping' + ); $methods = array(); foreach(get_class_methods('LocalhostTest') as $method) @@ -101,7 +102,7 @@ class LocalhostMultiTest extends LocalhostTest */ public function testProxy($method) { - if (!$this->args['PROXYSERVER']) + if ($this->args['PROXYSERVER'] == '') { $this->markTestSkipped('PROXY definition missing: cannot test proxy'); return; @@ -207,6 +208,11 @@ class LocalhostMultiTest extends LocalhostTest $this->markTestSkipped('CURL missing: cannot test https functionality'); return; } + else if ($this->args['HTTPSSERVER'] == '') + { + $this->markTestSkipped('HTTPS SERVER definition missing: cannot test https'); + return; + } $this->client->server = $this->args['HTTPSSERVER']; $this->method = 'https'; @@ -227,14 +233,20 @@ class LocalhostMultiTest extends LocalhostTest { if(!function_exists('curl_init')) { - $this->markTestSkipped('CURL missing: cannot test https functionality'); + $this->markTestSkipped('CURL missing: cannot test https w. proxy'); return; } else if ($this->args['PROXYSERVER'] == '') { - $this->markTestSkipped('PROXY definition missing: cannot test proxy w. http 1.1'); + $this->markTestSkipped('PROXY definition missing: cannot test proxy w. https'); return; } + else if ($this->args['HTTPSSERVER'] == '') + { + $this->markTestSkipped('HTTPS SERVER definition missing: cannot test https w. proxy'); + return; + } + $this->client->server = $this->args['HTTPSSERVER']; $this->method = 'https'; $this->client->method = 'https';