One more attempt at fixing unit tests
authorgggeek <giunta.gaetano@gmail.com>
Sun, 5 Nov 2017 22:52:33 +0000 (22:52 +0000)
committergggeek <giunta.gaetano@gmail.com>
Sun, 5 Nov 2017 22:52:33 +0000 (22:52 +0000)
NEWS
src/Wrapper.php
tests/3LocalhostTest.php
tests/4LocalhostMultiTest.php

diff --git a/NEWS b/NEWS
index f8c9afd..b5d4218 100644 (file)
--- 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
index ce12d9a..a45100b 100644 (file)
@@ -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())
     {
index 9be1f3a..fc4bb9e 100644 (file)
@@ -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');
index 61e9494..f75ee20 100644 (file)
@@ -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';