From: gggeek Date: Sun, 8 Jan 2023 16:14:07 +0000 (+0000) Subject: remove from demo server all testsuite junk, unless in test mode X-Git-Tag: 4.9.5~26 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=ff4974ed40eb99dc7cb0194c5872165f989eac47;p=plcapi.git remove from demo server all testsuite junk, unless in test mode --- diff --git a/demo/server/methodProviders/functions.php b/demo/server/methodProviders/functions.php index 6b50e0aa..d2ccc84d 100644 --- a/demo/server/methodProviders/functions.php +++ b/demo/server/methodProviders/functions.php @@ -213,49 +213,6 @@ function bitFlipper($req) return new Response($rv); } -$getallheaders_sig = array(array(Value::$xmlrpcStruct)); -$getallheaders_doc = 'Returns a struct containing all the HTTP headers received with the request. Provides limited functionality with IIS'; -function getAllHeaders_xmlrpc($req) -{ - $encoder = new Encoder(); - - if (function_exists('getallheaders')) { - return new Response($encoder->encode(getallheaders())); - } else { - $headers = array(); - // IIS: poor man's version of getallheaders - foreach ($_SERVER as $key => $val) { - if (strpos($key, 'HTTP_') === 0) { - $key = ucfirst(str_replace('_', '-', strtolower(substr($key, 5)))); - $headers[$key] = $val; - } - } - - return new Response($encoder->encode($headers)); - } -} - -$setcookies_sig = array(array(Value::$xmlrpcInt, Value::$xmlrpcStruct)); -$setcookies_doc = 'Sends to client a response containing a single \'1\' digit, and sets to it http cookies as received in the request (array of structs describing a cookie)'; -function setCookies($req) -{ - $encoder = new Encoder(); - $cookies = $req->getParam(0); - foreach ($cookies as $name => $value) { - $cookieDesc = $encoder->decode($value); - setcookie($name, @$cookieDesc['value'], @$cookieDesc['expires'], @$cookieDesc['path'], @$cookieDesc['domain'], @$cookieDesc['secure']); - } - - return new Response(new Value(1, Value::$xmlrpcInt)); -} - -$getcookies_sig = array(array(Value::$xmlrpcStruct)); -$getcookies_doc = 'Sends to client a response containing all http cookies as received in the request (as struct)'; -function getCookies($req) -{ - $encoder = new Encoder(); - return new Response($encoder->encode($_COOKIE)); -} $mailsend_sig = array(array( Value::$xmlrpcBoolean, Value::$xmlrpcString, Value::$xmlrpcString, @@ -363,25 +320,10 @@ return array( "docstring" => $bitflipper_doc, ), - "examples.getallheaders" => array( - "function" => 'getAllHeaders_xmlrpc', - "signature" => $getallheaders_sig, - "docstring" => $getallheaders_doc, - ), - "examples.setcookies" => array( - "function" => 'setCookies', - "signature" => $setcookies_sig, - "docstring" => $setcookies_doc, - ), - "examples.getcookies" => array( - "function" => 'getCookies', - "signature" => $getcookies_sig, - "docstring" => $getcookies_doc, - ), - - "mail.send" => array( + // left in as an example, but disabled by default, to avoid this being abused if left on an open server + /*"mail.send" => array( "function" => "mailSend", "signature" => $mailsend_sig, "docstring" => $mailsend_doc, - ), + ),*/ ); diff --git a/demo/server/methodProviders/testsuite.php b/demo/server/methodProviders/testsuite.php new file mode 100644 index 00000000..a76566c5 --- /dev/null +++ b/demo/server/methodProviders/testsuite.php @@ -0,0 +1,110 @@ +encode(getallheaders())); + } else { + $headers = array(); + // poor man's version of getallheaders + foreach ($_SERVER as $key => $val) { + if (strpos($key, 'HTTP_') === 0) { + $key = ucfirst(str_replace('_', '-', strtolower(substr($key, 5)))); + $headers[$key] = $val; + } + } + + return new Response($encoder->encode($headers)); + } +} + +$setcookies_sig = array(array(Value::$xmlrpcInt, Value::$xmlrpcStruct)); +$setcookies_doc = 'Sends to client a response containing a single \'1\' digit, and sets to it http cookies as received in the request (array of structs describing a cookie)'; +function setCookies($req) +{ + $encoder = new Encoder(); + $cookies = $req->getParam(0); + foreach ($cookies as $name => $value) { + $cookieDesc = $encoder->decode($value); + setcookie($name, @$cookieDesc['value'], @$cookieDesc['expires'], @$cookieDesc['path'], @$cookieDesc['domain'], @$cookieDesc['secure']); + } + + return new Response(new Value(1, Value::$xmlrpcInt)); +} + +$getcookies_sig = array(array(Value::$xmlrpcStruct)); +$getcookies_doc = 'Sends to client a response containing all http cookies as received in the request (as struct)'; +function getCookies($req) +{ + $encoder = new Encoder(); + return new Response($encoder->encode($_COOKIE)); +} + +// used to test signatures with NULL params +$findstate12_sig = array( + array(Value::$xmlrpcString, Value::$xmlrpcInt, Value::$xmlrpcNull), + array(Value::$xmlrpcString, Value::$xmlrpcNull, Value::$xmlrpcInt), +); +function findStateWithNulls($req) +{ + $a = $req->getParam(0); + $b = $req->getParam(1); + + if ($a->scalartyp() == Value::$xmlrpcNull) + return new Response(new Value(plain_findstate($b->scalarval()))); + else + return new Response(new Value(plain_findstate($a->scalarval()))); +} + +return array( + "tests.getallheaders" => array( + "function" => 'getAllHeaders_xmlrpc', + "signature" => $getallheaders_sig, + "docstring" => $getallheaders_doc, + ), + "tests.setcookies" => array( + "function" => 'setCookies', + "signature" => $setcookies_sig, + "docstring" => $setcookies_doc, + ), + "tests.getcookies" => array( + "function" => 'getCookies', + "signature" => $getcookies_sig, + "docstring" => $getcookies_doc, + ), + + // Greek word 'kosme'. NB: NOT a valid ISO8859 string! + // NB: we can only register this when setting internal encoding to UTF-8, or it will break system.listMethods + "tests.utf8methodname." . 'κόσμε' => array( + "function" => "stringEcho", + "signature" => $stringecho_sig, + //"docstring" => $stringecho_doc, + ), + /*"tests.iso88591methodname." . chr(224) . chr(252) . chr(232) => array( + "function" => "stringEcho", + "signature" => $stringecho_sig, + "docstring" => $stringecho_doc, + ),*/ + + 'tests.getStateName.12' => array( + "function" => "findStateWithNulls", + "signature" => $findstate12_sig, + //"docstring" => $findstate_doc, + ), +); diff --git a/demo/server/methodProviders/wrapper.php b/demo/server/methodProviders/wrapper.php index 749670fe..07069009 100644 --- a/demo/server/methodProviders/wrapper.php +++ b/demo/server/methodProviders/wrapper.php @@ -4,6 +4,7 @@ * * To use this, use something akin to: * $signatures = include('wrapper.php'); + * NB: requires 'functions.php' to be included first * * Wrap methods of xmlrpc-unaware php classes and xmlrpc-unaware php functions so that they can be used transparently. */ @@ -54,6 +55,7 @@ class xmlrpcServerMethodsContainer */ public function phpWarningGenerator($req) { + /** @noinspection PhpUndefinedVariableInspection */ $a = $undefinedVariable; // this triggers a warning in E_ALL mode, since $undefinedVariable is undefined return new Response(new Value(1, Value::$xmlrpcBoolean)); } @@ -116,7 +118,6 @@ eval($findstate6_sig['source']); $findstate7_sig = $wrapper->wrapPhpFunction(array('xmlrpcServerMethodsContainer', 'findState'), '', array('return_source' => true)); eval($findstate7_sig['source']); -//$obj = new xmlrpcServerMethodsContainer(); $findstate8_sig = $wrapper->wrapPhpFunction(array($obj, 'findstate'), '', array('return_source' => true)); eval($findstate8_sig['source']); @@ -124,7 +125,7 @@ $findstate9_sig = $wrapper->wrapPhpFunction('xmlrpcServerMethodsContainer::findS eval($findstate9_sig['source']); $findstate10_sig = array( - /// @todo add a demo/test with a closure + /// @todo add a demo and test with closure usage "function" => function ($req) { return findState($req); }, "signature" => array(array(Value::$xmlrpcString, Value::$xmlrpcInt)), "docstring" => 'When passed an integer between 1 and 51 returns the name of a US state, where the integer is the ' . @@ -145,6 +146,7 @@ $returnObj_sig = $wrapper->wrapPhpFunction(array($c, 'returnObject'), '', array return array_merge( array( 'tests.getStateName.2' => $findstate2_sig, + 'tests.getStateName.3' => $findstate3_sig, 'tests.getStateName.4' => $findstate4_sig, 'tests.getStateName.5' => $findstate5_sig, @@ -154,8 +156,18 @@ return array_merge( 'tests.getStateName.9' => $findstate9_sig, 'tests.getStateName.10' => $findstate10_sig, 'tests.getStateName.11' => $findstate11_sig, - 'tests.returnPhpObject' => $returnObj_sig, ), + $moreSignatures, $namespaceSignatures, - $moreSignatures + array( + 'tests.returnPhpObject' => $returnObj_sig, + // signature omitted on purpose + "tests.generatePHPWarning" => array( + "function" => array($obj, "phpWarningGenerator"), + ), + // signature omitted on purpose + "tests.raiseException" => array( + "function" => array($obj, "exceptionGenerator"), + ), + ) ); diff --git a/demo/server/server.php b/demo/server/server.php index eb0b09a0..d8737750 100644 --- a/demo/server/server.php +++ b/demo/server/server.php @@ -22,64 +22,22 @@ use PhpXmlRpc\Value; // The simplest way of implementing webservices: as xmlrpc-aware global functions $signatures1 = include(__DIR__.'/methodProviders/functions.php'); -// Examples of exposing as webservices php functions and objects/methods which are not aware of xmlrpc classes -$signatures2 = include(__DIR__.'/methodProviders/wrapper.php'); - // Definitions of webservices used for interoperability testing -$signatures3 = include(__DIR__.'/methodProviders/interop.php'); -$signatures4 = include(__DIR__.'/methodProviders/validator1.php'); +$signatures2 = include(__DIR__.'/methodProviders/interop.php'); +$signatures3 = include(__DIR__.'/methodProviders/validator1.php'); // And finally a few examples inline +$signatures = array(); -// used to test signatures with NULL params -$findstate12_sig = array( - array(Value::$xmlrpcString, Value::$xmlrpcInt, Value::$xmlrpcNull), - array(Value::$xmlrpcString, Value::$xmlrpcNull, Value::$xmlrpcInt), -); -function findStateWithNulls($req) -{ - $a = $req->getParam(0); - $b = $req->getParam(1); - - if ($a->scalartyp() == Value::$xmlrpcNull) - return new Response(new Value(plain_findstate($b->scalarval()))); - else - return new Response(new Value(plain_findstate($a->scalarval()))); -} - -$object = new xmlrpcServerMethodsContainer(); +$signatures = array_merge($signatures, $signatures1, $signatures2, $signatures3); -$signatures = array( - - // signature omitted on purpose - "tests.generatePHPWarning" => array( - "function" => array($object, "phpWarningGenerator"), - ), - // signature omitted on purpose - "tests.raiseException" => array( - "function" => array($object, "exceptionGenerator"), - ), - // Greek word 'kosme'. NB: NOT a valid ISO8859 string! - // NB: we can only register this when setting internal encoding to UTF-8, or it will break system.listMethods - "tests.utf8methodname." . 'κόσμε' => array( - "function" => "stringEcho", - "signature" => $stringecho_sig, - "docstring" => $stringecho_doc, - ), - /*"tests.iso88591methodname." . chr(224) . chr(252) . chr(232) => array( - "function" => "stringEcho", - "signature" => $stringecho_sig, - "docstring" => $stringecho_doc, - ),*/ - - 'tests.getStateName.12' => array( - "function" => "findStateWithNulls", - "signature" => $findstate12_sig, - "docstring" => $findstate_doc, - ), -); +if (defined('TESTMODE')) { + // Webservices used only by the testuite + $signatures4 = include(__DIR__.'/methodProviders/testsuite.php'); + $signatures5 = include(__DIR__.'/methodProviders/wrapper.php'); -$signatures = array_merge($signatures, $signatures1, $signatures2, $signatures3, $signatures4); + $signatures = array_merge($signatures, $signatures4, $signatures5); +} // Enable support for the NULL extension PhpXmlRpc::$xmlrpc_null_extension = true; diff --git a/tests/4ClientTest.php b/tests/4ClientTest.php index ec3ad76c..f2f5627a 100644 --- a/tests/4ClientTest.php +++ b/tests/4ClientTest.php @@ -89,7 +89,8 @@ class ClientTest extends PhpXmlRpc_PolyfillTestCase $this->client->port = $server[1]; } $this->client->server = $server[0]; - $this->client->path = str_replace('/demo/server/server.php', '/tests/index.php?demo=server/server.php', $this->args['HTTPURI']); + //$this->client->path = str_replace('/demo/server/server.php', '/tests/index.php?demo=server/server.php', $this->args['HTTPURI']); + $this->client->path = $this->args['HTTPURI']; $r = $this->client->send($m, 5, 'http11'); $this->assertEquals(0, $r->faultCode()); diff --git a/tests/5ServerTest.php b/tests/5ServerTest.php index cf164efd..8ba0d539 100644 --- a/tests/5ServerTest.php +++ b/tests/5ServerTest.php @@ -95,19 +95,19 @@ class ServerTest extends PhpXmlRpc_PolyfillTestCase { $this->args = argParser::getArgs(); - $uri = str_replace('/demo/server/server.php', '/tests/index.php?demo=server/server.php', $this->args['HTTPURI']); + //$uri = str_replace('/demo/server/server.php', '/tests/index.php?demo=server/server.php', $this->args['HTTPURI']); $server = explode(':', $this->args['HTTPSERVER']); if (count($server) > 1) { - $this->client = new xmlrpc_client($uri, $server[0], $server[1]); + $this->client = new xmlrpc_client($this->args['HTTPURI'], $server[0], $server[1]); } else { - $this->client = new xmlrpc_client($uri, $this->args['HTTPSERVER']); + $this->client = new xmlrpc_client($this->args['HTTPURI'], $this->args['HTTPSERVER']); } $this->client->setDebug($this->args['DEBUG']); $this->client->request_compression = $this->request_compression; $this->client->accepted_compression = $this->accepted_compression; - $this->coverageScriptUrl = 'http://' . $this->args['HTTPSERVER'] . '/' . str_replace('/demo/server/server.php', 'tests/phpunit_coverage.php', $this->args['HTTPURI']); + $this->coverageScriptUrl = 'http://' . $this->args['HTTPSERVER'] . preg_replace('|/tests/index\.php(\?.*)?|', '/tests/phpunit_coverage.php', $this->args['HTTPURI']); if ($this->args['DEBUG'] == 1) ob_start(); @@ -944,7 +944,7 @@ And turned it into nylon'; 'c5' => array('value' => 'c5', 'expires' => time() + 60 * 60 * 24 * 30, 'path' => '/', 'domain' => 'localhost'), ); $cookiesval = php_xmlrpc_encode($cookies); - $m = new xmlrpcmsg('examples.setcookies', array($cookiesval)); + $m = new xmlrpcmsg('tests.setcookies', array($cookiesval)); $r = $this->send($m, 0, true); if ($r) { $v = $r->value(); @@ -986,7 +986,7 @@ And turned it into nylon'; 'c2' => '2 3', 'c3' => '!@#$%^&*()_+|}{":?><,./\';[]\\=-', ); - $m = new xmlrpcmsg('examples.getcookies', array()); + $m = new xmlrpcmsg('tests.getcookies', array()); foreach ($cookies as $cookie => $val) { $this->client->setCookie($cookie, $val); $cookies[$cookie] = (string)$cookies[$cookie]; diff --git a/tests/7DemofilesTest.php b/tests/7DemofilesTest.php index 815bcd18..cc610de1 100644 --- a/tests/7DemofilesTest.php +++ b/tests/7DemofilesTest.php @@ -11,9 +11,9 @@ class DemoFilesTest extends PhpXmlRpc_WebTestCase { $this->args = argParser::getArgs(); - $this->baseUrl = $this->args['HTTPSERVER'] . str_replace( '/demo/server/server.php', '/tests/index.php', $this->args['HTTPURI'] ); - - $this->coverageScriptUrl = 'http://' . $this->args['HTTPSERVER'] . str_replace( '/demo/server/server.php', '/tests/phpunit_coverage.php', $this->args['HTTPURI'] ); + // assumes HTTPURI to be in the form /tests/index.php?etc... + $this->baseUrl = $this->args['HTTPSERVER'] . preg_replace('|\?.+|', '', $this->args['HTTPURI']); + $this->coverageScriptUrl = 'http://' . $this->args['HTTPSERVER'] . preg_replace('|/tests/index\.php(\?.*)?|', '/tests/phpunit_coverage.php', $this->args['HTTPURI']); } public function testAgeSort() diff --git a/tests/8DebuggerTest.php b/tests/8DebuggerTest.php index 87564715..f1c22daa 100644 --- a/tests/8DebuggerTest.php +++ b/tests/8DebuggerTest.php @@ -8,9 +8,9 @@ class DebuggerTest extends PhpXmlRpc_WebTestCase { $this->args = argParser::getArgs(); - $this->baseUrl = $this->args['HTTPSERVER'] . str_replace( '/demo/server/server.php', '/tests/index.php', $this->args['HTTPURI'] ); - - $this->coverageScriptUrl = 'http://' . $this->args['HTTPSERVER'] . str_replace( '/demo/server/server.php', '/tests/phpunit_coverage.php', $this->args['HTTPURI'] ); + // assumes HTTPURI to be in the form /tests/index.php?etc... + $this->baseUrl = $this->args['HTTPSERVER'] . preg_replace('|\?.+|', '', $this->args['HTTPURI']); + $this->coverageScriptUrl = 'http://' . $this->args['HTTPSERVER'] . preg_replace('|/tests/index\.php(\?.*)?|', '/tests/phpunit_coverage.php', $this->args['HTTPURI']); } public function testIndex() diff --git a/tests/9ExtraFilesTest.php b/tests/9ExtraFilesTest.php index 05df2d69..f3df5607 100644 --- a/tests/9ExtraFilesTest.php +++ b/tests/9ExtraFilesTest.php @@ -12,9 +12,9 @@ class ExtraFilesTest extends PhpXmlRpc_WebTestCase { $this->args = argParser::getArgs(); - $this->baseUrl = $this->args['HTTPSERVER'] . str_replace( '/demo/server/server.php', '/tests/index.php', $this->args['HTTPURI'] ); - - $this->coverageScriptUrl = 'http://' . $this->args['HTTPSERVER'] . str_replace( '/demo/server/server.php', '/tests/phpunit_coverage.php', $this->args['HTTPURI'] ); + // assumes HTTPURI to be in the form /tests/index.php?etc... + $this->baseUrl = $this->args['HTTPSERVER'] . preg_replace('|\?.+|', '', $this->args['HTTPURI']); + $this->coverageScriptUrl = 'http://' . $this->args['HTTPSERVER'] . preg_replace('|/tests/index\.php(\?.*)?|', '/tests/phpunit_coverage.php', $this->args['HTTPURI']); } public function testBenchmark() diff --git a/tests/ci/vm.sh b/tests/ci/vm.sh index e726d21e..57469d19 100755 --- a/tests/ci/vm.sh +++ b/tests/ci/vm.sh @@ -58,9 +58,9 @@ build() { --env CONTAINER_USER_UID=$(id -u) --env CONTAINER_USER_GID=$(id -g) \ --env TESTS_ROOT_DIR=${CONTAINER_WORKSPACE_DIR} \ --env HTTPSERVER=localhost \ - --env HTTPURI=/demo/server/server.php \ + --env HTTPURI=/tests/index.php?demo=server/server.php \ --env HTTPSSERVER=localhost \ - --env HTTPSURI=/demo/server/server.php \ + --env HTTPSURI=/tests/index.php?demo=server/server.php \ --env PROXYSERVER=localhost:8080 \ --env HTTPSVERIFYHOST=0 \ --env HTTPSIGNOREPEER=1 \ diff --git a/tests/parse_args.php b/tests/parse_args.php index 40469ba2..73593530 100644 --- a/tests/parse_args.php +++ b/tests/parse_args.php @@ -71,11 +71,11 @@ class argParser } if (!isset($HTTPURI) || $HTTPURI == '') { - // GUESTIMATE the url of local demo server - // play nice to php 4 and 5 in retrieving URL of server.php + // GUESTIMATE the url of local test controller + // play nice to php 5 and 7 in retrieving URL of index.php /// @todo filter out query string from REQUEST_URI /// @todo review this code... - if (isset($REQUEST_URI)) { + /*if (isset($REQUEST_URI)) { $HTTPURI = str_replace('/tests/testsuite.php', '/demo/server/server.php', $REQUEST_URI); $HTTPURI = str_replace('/testsuite.php', '/server.php', $HTTPURI); $HTTPURI = str_replace('/extras/benchmark.php', '/demo/server/server.php', $HTTPURI); @@ -85,9 +85,9 @@ class argParser $HTTPURI = str_replace('/testsuite.php', '/server.php', $HTTPURI); $HTTPURI = str_replace('/extras/benchmark.php', '/demo/server/server.php', $HTTPURI); $HTTPURI = str_replace('/benchmark.php', '/server.php', $HTTPURI); - } else { - $HTTPURI = '/demo/server/server.php'; - } + } else {*/ + $HTTPURI = '/tests/index.php?demo=server/server.php'; + //} } if ($HTTPURI[0] != '/') { $HTTPURI = '/' . $HTTPURI;