WS-I: SOAPAction header does not contain the correct string value
-----------------------------------------------------------------
Key: JBESB-2777
URL:
https://jira.jboss.org/jira/browse/JBESB-2777
Project: JBoss ESB
Issue Type: Bug
Components: Web Services
Affects Versions: 4.4
Reporter: Boris Belovic
We were performing webservice interoperability tests using WS-I test tools. There is a
non-empty header SOAPAction in HTTP request message. This header contains
"modifyQName" string as a value. According to the Basic Profile, there must be a
non-empty soapAction attribute in binding element and this soapAction attribute must
contain the same value as SOAPAction header in HTTP request. We find out that is not
happening. There is SOAPAction header in HTTP request, but the corresponding soapAction
attribute is empty.
This is a result from WS-I test tool we use for testing. This output shows non-empty
SOAPAction header and an empty soapAction attribute:
HTTP headers:
POST /WS-I/HelloWorldWS HTTP/1.1
Content-Type: text/xml;charset=UTF-8
SOAPAction: "modifyQName"
User-Agent: Jakarta Commons-HttpClient/3.0.1
Host: localhost:65432
Content-Length: 299
soapAction:
Element Location:
lineNumber=154
And here are two WSDL documents:
<definitions name='HelloWorldWSService'
targetNamespace='http://ws_i.quickstart.samples.esb.soa.jboss.org/'
xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:ns1='http://wsi/helloworld'
xmlns:ns2='http://wsi/helloworld/'
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:tns='http://ws_i.quickstart.samples.esb.soa.jboss.org/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<import location='http://localhost:8080/WS-I/imported.jsp'
namespace='http://wsi/helloworld'></import>
<service name='HelloWorldWSService'>
<port binding='ns1:HelloWorldBinding' name='HelloWorldWSPort'>
<soap:address location='http://localhost:8080/WS-I/HelloWorldWS'/>
</port>
</service>
</definitions
In this WSDL document, down there is operation element with empty soapAction attribute.
This attribute must contain the same value as SOAPAction header in a request.
<definitions name='HelloWorldWSService'
targetNamespace='http://wsi/helloworld'
xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:ns1='http://wsi/helloworld'
xmlns:ns2='http://wsi/helloworld/'
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:tns='http://ws_i.quickstart.samples.esb.soa.jboss.org/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<types>
<xs:schema targetNamespace='http://wsi/helloworld' version='1.0'
xmlns:ns1='http://wsi/helloworld/'
xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<xs:import namespace='http://wsi/helloworld/'/>
<xs:element name='modifyQName' nillable='true'
type='ns1:modifyQName'/>
<xs:element name='modifyQNameResponse' nillable='true'
type='ns1:modifyQNameResponse'/>
</xs:schema>
<xs:schema targetNamespace='http://wsi/helloworld/' version='1.0'
xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<xs:complexType name='modifyQName'>
<xs:sequence>
<xs:element minOccurs='0' name='value'
type='xs:QName'/>
</xs:sequence>
</xs:complexType>
<xs:complexType name='modifyQNameResponse'>
<xs:sequence>
<xs:element minOccurs='0' name='return'
type='xs:QName'/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
<message name='HelloWorld_modifyQName'>
<part element='ns1:modifyQName' name='modifyQName'></part>
</message>
<message name='HelloWorld_modifyQNameResponse'>
<part element='ns1:modifyQNameResponse'
name='modifyQNameResponse'></part>
</message>
<portType name='HelloWorld'>
<operation name='modifyQName' parameterOrder='modifyQName'>
<input message='ns1:HelloWorld_modifyQName'></input>
<output message='ns1:HelloWorld_modifyQNameResponse'></output>
</operation>
</portType>
<binding name='HelloWorldBinding' type='ns1:HelloWorld'>
<soap:binding style='document'
transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='modifyQName'>
<soap:operation soapAction=''/>
<input>
<soap:body use='literal'/>
</input>
<output>
<soap:body use='literal'/>
</output>
</operation>
</binding>
</definitions>
Here are two SOAP message, which are parts of the communication:
Request:
<?xml version="1.0" encoding="UTF-8" ?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:hel="http://wsi/helloworld">
<soapenv:Header/>
<soapenv:Body>
<hel:modifyQName>
<!--Optional:-->
<value>qname_value</value>
</hel:modifyQName>
</soapenv:Body>
</soapenv:Envelope>
Response:
<?xml version="1.0" encoding="UTF-8" ?><env:Envelope
xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'><env:...
xmlns:ns1="http://wsi/helloworld"><return>qname_value_modified</return></ns1:modifyQNameResponse></env:Body></env:Envelope>
Here is a link to Test Assertion Document with specified requirement:
http://www.ws-i.org/Testing/Tools/2005/01/SSBP10_BP11_TAD_1-0.htm#BP1116
If there are any comments or request for any details please ask us.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira