Files
luos/thirdparty/pear/SOAP/Interop/interop_client_run.php
2017-08-03 17:34:55 -04:00

206 lines
6.4 KiB
PHP

<?php
// this script is usefull for quickly testing stuff, use the 'pretty' file for html output
//
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2003 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Shane Caraveo <Shane@Caraveo.com> |
// +----------------------------------------------------------------------+
//
// $Id: interop_client_run.php,v 1.11 2007/01/26 15:03:24 yunosh Exp $
//
if (isset($_SERVER['SERVER_NAME'])) {
die("full test run cannot be done via webserver.");
}
set_time_limit(0);
error_reporting(E_ALL);
require 'Console/Getopt.php';
require_once 'interop_client.php';
$INTEROP_LOCAL_SERVER = TRUE;// add local server to endpoints
$iop =& new Interop_Client();
// debug output
$iop->show = 1;
$iop->debug = 0;
$iop->showFaults = 0; // used in result table output
$restrict = null;
$args = Console_Getopt::getopt($_SERVER['argv'],
'c:dehl:m:np:r:s:t:v:wq',
array('help'));
if (PEAR::isError($args)) {
echo "\n" . $args->getMessage() . "\n\n";
help();
exit;
}
function help() {
print <<<END
interop_client_run.php [options]
-c pear|php-soap client type (not implemented yet)
-d turn on debug output
-e fetch interop test information
-h this help
-l list comma seperated list of endpoint names to skip
-m method_name specific soap method to test
-n do not save results to database
-p t|e print list of [t]ests or [e]ndpoints
-r string restrict tests to those whose name starts with...
-s server_name test a specific server
-t test_name run a specific set of tests
-v php|soapval run tests with specific param types (requires -t)
-w run wsdl tests only (requires -t)
-q do not run tests
END;
}
function print_test_names()
{
global $iop;
print "Interop tests supported:\n";
foreach ($iop->tests as $test) {
print " $test\n";
}
}
function print_endpoint_names()
{
global $iop;
if (!class_exists('G')) {
$realdocuroot = str_replace( '\\', '/', $_SERVER['DOCUMENT_ROOT'] );
$docuroot = explode( '/', $realdocuroot );
array_pop( $docuroot );
$pathhome = implode( '/', $docuroot ) . '/';
array_pop( $docuroot );
$pathTrunk = implode( '/', $docuroot ) . '/';
require_once($pathTrunk.'gulliver/system/class.g.php');
}
$filter = new InputFilter();
$currTest = $filter->xssFilterHard($iop->currentTest);
if (!$iop->getEndpoints($iop->currentTest)) {
die("Unable to retrieve endpoints for $currTest\n");
}
print "Interop Servers for $currTestt:\n";
foreach ($iop->endpoints as $server) {
print " $server->name\n";
}
}
foreach ($args[0] as $arg) {
switch($arg[0]) {
case 'c':
$iop->client_type = $arg[1];
break;
case 'd':
$iop->debug = true;
break;
case 'e':
$iop->fetchEndpoints();
break;
case 'h':
case '--help':
help();
exit(0);
case 'l':
$iop->skipEndpointList = explode(',', $arg[1]);
break;
case 'm':
$iop->testMethod = $arg[1];
break;
case 'n':
$iop->nosave = true;
break;
case 'p':
if ($arg[1] == 't') {
print_test_names();
} elseif ($arg[1] == 'e') {
if (!$iop->currentTest) {
print "You need to specify a test with -t\n";
exit(0);
}
print_endpoint_names();
} else {
die("invalid print argument\n");
}
exit(0);
case 'r':
$restrict = $arg[1];
break;
case 's':
$iop->specificEndpoint = $arg[1];
break;
case 't':
$iop->currentTest = $arg[1];
break;
case 'v':
if ($arg[1] != 'php' && $arg[1] != 'soapval') {
if (!class_exists('G')) {
$realdocuroot = str_replace( '\\', '/', $_SERVER['DOCUMENT_ROOT'] );
$docuroot = explode( '/', $realdocuroot );
array_pop( $docuroot );
$pathhome = implode( '/', $docuroot ) . '/';
array_pop( $docuroot );
$pathTrunk = implode( '/', $docuroot ) . '/';
require_once($pathTrunk.'gulliver/system/class.g.php');
}
$filter = new InputFilter();
$arg[1] = $filter->xssFilterHard($arg[1]);
die('Incorrect value for argument v: ' . $arg[1] . "\n");
}
$iop->paramType = $arg[1];
break;
case 'w':
$iop->useWSDL = true;
break;
case 'q':
exit(0);
}
}
// These are endpoints that are listed in the interop server, but do not realy
// exist any longer.
$bad = array('Spheon JSOAP', 'Phalanx', 'SilverStream', 'SOAPx4 (PHP)',
'Virtuoso (development)', 'Zolera SOAP Infrastructure');
$iop->skipEndpointList = array_merge($iop->skipEndpointList, $bad);
if ($restrict) {
$tests = $iop->tests;
$iop->tests = array();
foreach ($tests as $test) {
if (stristr($test, $restrict)) {
$iop->tests[] = $test;
}
}
}
if ($iop->currentTest) {
$iop->doTest(); // run a single set of tests using above options
} else {
// $iop->doGroupTests(); // run a group of tests set in $currentTest
$iop->doTests(); // run all tests, ignore above options
}
echo "done\n";