Re: [SOAP] SOAPClient authentication problem

[email protected] (David Zülke)
Newsgroups php.internals,php.soap
Message-ID <[email protected]>
On 24.07.2009, at 12:48, David Zülke wrote:

> Yes, thanks, I realize that, but I need to test it in a .phpt unit  
> test, which is a bit trickier. But as I said, I already have an  
> idea. Will do it this later and open a ticket.

Issue: http://bugs.php.net/49144
.phpt: http://pastie.org/569897 (also attached)

- David
bug49144.txt (text/plain, 3.8 KB)
--TEST--
Bug #49144 (import of schemas from different hosts transmits original authentication details)
--SKIPIF--
<?php
require_once('skipif.inc');
###
### THIS RE-USES TESTING CODE FROM ext/standard/tests/http/, BEWARE
###
require dirname(__FILE__) . '../../../../standard/tests/http/server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
?>
--FILE--
<?php
###
### THIS RE-USES TESTING CODE FROM ext/standard/tests/http/, BEWARE
###
require dirname(__FILE__) . '../../../../standard/tests/http/server.inc';

$responses = array(
	"data://text/plain,HTTP/1.1 200 OK\r\nContent-Type: application/xml; charset=UTF-8\r\n\r\n" . '<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://agavi.org/sampleapp/types" xmlns:asa="http://agavi.org/sampleapp" name="AgaviSampleApplication" targetNamespace="http://agavi.org/sampleapp">
	<wsdl:types>
		<xsd:schema xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://agavi.org/agavi/config/parts/routing/1.0" targetNamespace="http://agavi.org/sampleapp/types">
			<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://localhost:12342/xml.xsd"/>
			<xsd:complexType name="Product">
				<xsd:sequence>
					<xsd:element name="id" type="xsd:int"/>
					<xsd:element name="name" type="xsd:string"/>
					<xsd:element name="price" type="xsd:float"/>
				</xsd:sequence>
			</xsd:complexType>
		</xsd:schema>
	</wsdl:types>
	<wsdl:portType name="AgaviSampleApplicationPortType">
		<wsdl:operation name="getProduct">
			<wsdl:input message="asa:getProductRequest"/>
			<wsdl:output message="asa:getProductResponse"/>
		</wsdl:operation>
	</wsdl:portType>
	<binding name="AgaviSampleApplicationBinding" type="asa:AgaviSampleApplicationPortType">
		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsdl:operation name="getProduct">
			<soap:operation soapAction="http://agavi.org/sampleapp#getProduct"/>
			<wsdl:input>
				<soap:body namespace="http://agavi.org/sampleapp" use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body namespace="http://agavi.org/sampleapp" use="literal"/>
			</wsdl:output>
		</wsdl:operation>
	</binding>
	<service name="AgaviSampleApplicationService">
		<port name="AgaviSampleApplicationPort" binding="asa:AgaviSampleApplicationBinding">
			<soap:address location="http://localhost/YOUR/PATH/TO/samples/pub/soap.php"/>
		</port>
	</service>
	<wsdl:message name="getProductRequest">
		<wsdl:part xmlns="http://agavi.org/agavi/config/parts/routing/1.0" name="id" type="xsd:int"/>
	</wsdl:message>
	<wsdl:message name="getProductResponse">
		<wsdl:part xmlns="http://agavi.org/agavi/config/parts/routing/1.0" name="product" type="tns:Product"/>
	</wsdl:message>
</wsdl:definitions>',
	"data://text/plain,HTTP/1.1 200 OK\r\nContent-Type: application/xml; charset=UTF-8\r\n\r\n" . '<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
	<xs:attribute name="base" type="xs:anyURI" />
</xs:schema>',
);

$pid = http_server("tcp://127.0.0.1:12342", $responses, $output);

ini_set("soap.wsdl_cache_enabled", 0);
$client = new SoapClient("http://127.0.0.1:12342/bug.wsdl", array('login' => 'foo', 'password' => 'bar'));

fseek($output, 0, SEEK_SET);
var_dump(stream_get_contents($output));

http_server_kill($pid);

?>
--EXPECTF--
string(%s) "GET /bug.wsdl HTTP/1.1
Host: 127.0.0.1:12342
Authorization: Basic Zm9vOmJhcg==
Connection: close

GET /xml.xsd HTTP/1.1
Host: localhost:12342
Connection: close

"
smime.p7s (application/pkcs7-signature, 2.4 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.