138 lines
4.5 KiB
PHP
138 lines
4.5 KiB
PHP
<?php
|
|
//
|
|
// +----------------------------------------------------------------------+
|
|
// | 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_test.php,v 1.10 2007/01/26 17:21:44 yunosh Exp $
|
|
//
|
|
require_once 'SOAP/Value.php';
|
|
|
|
define('SOAP_TEST_ACTOR_NEXT','http://schemas.xmlsoap.org/soap/actor/next');
|
|
define('SOAP_TEST_ACTOR_OTHER','http://some/other/actor');
|
|
|
|
class SOAP_Interop_Test {
|
|
|
|
var $type = 'php';
|
|
var $test_name = null;
|
|
var $method_name = null;
|
|
var $method_params = null;
|
|
var $expect = null;
|
|
var $expect_fault = false;
|
|
var $headers = null;
|
|
var $headers_expect = null;
|
|
var $result = array();
|
|
var $show = 1;
|
|
var $debug = 0;
|
|
var $encoding = SOAP_DEFAULT_ENCODING;
|
|
|
|
/**
|
|
* If multiple services, this sets to a specific service.
|
|
*/
|
|
var $service = null;
|
|
|
|
function SOAP_Interop_Test($methodname, $params, $expect = null)
|
|
{
|
|
if (strchr($methodname, '(')) {
|
|
preg_match('/(.*)\((.*)\)/', $methodname, $matches);
|
|
$this->test_name = $methodname;
|
|
$this->method_name = $matches[1];
|
|
} else {
|
|
$this->test_name = $this->method_name = $methodname;
|
|
}
|
|
$this->method_params = $params;
|
|
$this->expect = $expect;
|
|
|
|
// determine test type
|
|
if ($params) {
|
|
$v = array_values($params);
|
|
if (gettype($v[0]) == 'object' &&
|
|
strtolower(get_class($v[0])) == 'soap_value') {
|
|
$this->type = 'soapval';
|
|
}
|
|
}
|
|
}
|
|
|
|
function setResult($ok, $result, $wire, $error = '', $fault = null)
|
|
{
|
|
$this->result['success'] = $ok;
|
|
$this->result['result'] = $result;
|
|
$this->result['error'] = $error;
|
|
$this->result['wire'] = $wire;
|
|
$this->result['fault'] = $fault;
|
|
}
|
|
|
|
function reset()
|
|
{
|
|
$this->result = array();
|
|
}
|
|
|
|
/**
|
|
* Prints simple output about a methods result.
|
|
*/
|
|
function showTestResult($debug = 0)
|
|
{
|
|
// Debug output
|
|
if ($debug) {
|
|
$this->show = 1;
|
|
echo str_repeat('-', 50) . "\n";
|
|
}
|
|
|
|
echo "Testing $this->test_name: ";
|
|
if ($this->headers) {
|
|
$hc = count($this->headers);
|
|
for ($i = 0; $i < $hc; $i++) {
|
|
$h = $this->headers[$i];
|
|
if (strtolower(get_class($h)) == 'soap_header') {
|
|
echo "\n {$h->name},{$h->attributes['SOAP-ENV:actor']},{$h->attributes['SOAP-ENV:mustUnderstand']} : ";
|
|
} else {
|
|
if (!$h[4]) {
|
|
$h[4] = SOAP_TEST_ACTOR_NEXT;
|
|
}
|
|
if (!$h[3]) {
|
|
$h[3] = 0;
|
|
}
|
|
echo "\n $h[0],$h[4],$h[3] : ";
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($debug) {
|
|
echo "method params: ";
|
|
print_r($this->params);
|
|
echo "\n";
|
|
}
|
|
|
|
$ok = $this->result['success'];
|
|
if ($ok) {
|
|
echo "SUCCESS\n";
|
|
} else {
|
|
$fault = $this->result['fault'];
|
|
if ($fault) {
|
|
echo "FAILED: [{$fault->faultcode}] {$fault->faultstring}\n";
|
|
if (!empty($fault->faultdetail)) {
|
|
echo $fault->faultdetail . "\n";
|
|
}
|
|
} else {
|
|
echo "FAILED: " . $this->result['result'] . "\n";
|
|
}
|
|
}
|
|
if ($debug) {
|
|
echo "\n" . $this->result['wire'] . "\n";
|
|
}
|
|
}
|
|
|
|
}
|