About AS4 testing: As discussed today, we could learn from WS-I testing, and reuse some of its methodology/tools/artifacts. First, it starts with writing plain English test assertions (TAs) . See the overall TA structure and methodology described in:
http://docs.oasis-open.org/tag/guidelines/v1.0/cn02/guidelines-v1.0-cn02.pdf So writing TAs for conformance is what the TC could do if it wants to produce a practical definition of “conformance” to AS4/ebMS3 (beyond what the conformance clauses are stating). Then the implementers of a conformance test suite (whoever they are) would have to implement these test assertions, for their test suite to be “valid”. The TC could stop there. Some OASIS TCs did publish plain English test assertions (TAs): SCA TCs, CAMP. Or the TC may want (or some of its members) to go further and do the job of developing a conformance test suite. This could be done following the 2-phase testing methodology used in WS-I: See the intermediate message capture file sample Trace-BP12.Addressing-Test1191.log.xml attached . Note that it contains a “messageLog” where each message is formatted in an XML container, including HTTP headers. Note that it also contain a WSDL file, for validating messages against it. In our case, that could be an XML representation of a Pmode… (if we define one). But it could otherwise just contain the messageLog. See the ppt attached as a general case for “2-phase” testing. The OSS “tamelizer” tool implements the 2 nd phase (analysis). See doc in the download package:
http://code.google.com/p/tamelizer/ See attached a sample file TestAssertionsBasicProfile-1.2.xml of XML/Xpath scripted test assertions for WS-I profile, that are fed to the “tamelizer” tool (actually, to an older WS-I specific version of this tool). Notice the Xpath2.0 expressions in the “target” and “predicate” of each TA. If we adopt this approach, writing a conformance test suite for AS4 would amount to translating the English test assertions into XML/Xpath TAs. The rest is supported by the tamelizer tool. Such test suite can then be used either in a conformance testing context, or in an interoperability testing context. -jacques <?xml version="1.0" encoding="UTF-8"?> <wsil:testLog xmlns:wsil="
http://www.ws-i.org/testing/2008/02/log/" ; xmlns:wsam="
http://www.w3.org/2007/05/addressing/metadata" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xyz="
http://schemas.unknownspace.org/" ; timestamp="Mon Aug 02 10:37:38 PDT 2010" xsi:schemaLocation="
http://www.ws-i.org/testing/2008/02/log/log.xsd" ;> <wsil:messageLog> <wsil:message conversation="1" id="1" type="request" xsi:type="wsil:httpmessage"> <wsil:httpHeaders> <wsil:requestLine>POST
http://ws2.withoutawire.com:9080/BP12AddressingService/wsaTestService HTTP/1.1</wsil:requestLine> <wsil:contentTypeHeader subtype="xml" type="text"> <wsil:parameter key="charset" quoted="true" value="utf-8"/> </wsil:contentTypeHeader> <wsil:httpHeader key="SOAPACTION" quoted="true" value="
http://example.org/action/echoIn"/ > <wsil:httpHeader key="ACCEPT" quoted="false" value="text/xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"/> <wsil:httpHeader key="USER-AGENT" quoted="false" value="Oracle JAX-WS 2.1.5"/> <wsil:httpHeader key="FROM" quoted="false" value="/66.248.195.51:57770"/> <wsil:httpHeader key="HOST" quoted="false" value="ws2.withoutawire.com:9080"/> <wsil:httpHeader key="CONNECTION" quoted="false" value="close"/> <wsil:httpHeader key="WSIP_POSTED_ENDPOINT" quoted="false" value="
http://66.248.195.51:8080/aHR0cDovL3dzMi53aXRob3V0YXdpcmUuY29tOjkwODAvQlAxMkFkZHJlc3NpbmdTZXJ2aWNlL3dzYVRlc3RTZXJ2aWNl*_E1II4XkHITJYIpjdtlz46cFT___cg_"/ > <wsil:httpHeader key="CONTENT-LENGTH" quoted="false" value="1741"/> </wsil:httpHeaders> <wsil:messageContents containsDTD="false" containsProcessingInstructions="false" containsXmlDecl="true" enconding="utf-8" validXml="true" xmlVersion="1.0"> <S:Envelope xmlns:S="
http://schemas.xmlsoap.org/soap/envelope/" ;> <S:Header> <wsa:To xmlns:wsa="
http://www.w3.org/2005/08/addressing" ;>
http://ws2.withoutawire.com:9080/BP12AddressingService/wsaTestService </wsa:To> <wsa:Action xmlns:wsa="
http://www.w3.org/2005/08/addressing" ;>
http://example.org/action/echoIn </wsa:Action> <ReplyTo xmlns="
http://www.w3.org/2005/08/addressing" ;> <Address>
http://www.w3.org/2005/08/addressing/anonymous </Address> </ReplyTo> <FaultTo xmlns="
http://www.w3.org/2005/08/addressing" ;> <Address>
http://www.w3.org/2005/08/addressing/anonymous </Address> </FaultTo> <work:WorkContext xmlns:work="
http://oracle.com/weblogic/soap/workarea/" ;>rO0ABXoAAAJ5ADBvcmFjbGUuZG1zLmNvbnRleHQuaW50ZXJuYWwud2xzLldMU0NvbnRleHRGYW1pbHkAAAFPAAAAKXdlYmxvZ2ljLndvcmthcmVhLlNlcmlhbGl6YWJsZVdvcmtDb250ZXh0AAABZKztAAVzcgAxd2VibG9naWMud29ya2FyZWEuU2VyaWFsaXphYmxlV29ya0NvbnRleHQkQ2Fycmllcv1CAh9z5wpPAwACWgAHbXV0YWJsZUwADHNlcmlhbGl6YWJsZXQAFkxqYXZhL2lvL1NlcmlhbGl6YWJsZTt4cHcEAAAAAXNyAEFvcmFjbGUuZG1zLmNvbnRleHQuaW50ZXJuYWwud2xzLldMU0NvbnRleHRGYW1pbHkkU2VyaWFsaXphYmxlSW1wbAAAAAAAAAAAAwABTAARbVdMU0NvbnRleHRGYW1pbHl0ADJMb3JhY2xlL2Rtcy9jb250ZXh0L2ludGVybmFsL3dscy9XTFNDb250ZXh0RmFtaWx5O3hwd0QAQjEuYmY4ZTQ0YmMyMDE1MzlmNjotMzVkMGJiOWU6MTJhMzM3ZTk1ZWQ6LTgwMDAtMDAwMDAwMDAwMDAwMTQzMzt2MHh3AQF4ACZ3ZWJsb2dpYy5kaWFnbm9zdGljcy5EaWFnbm9zdGljQ29udGV4dAAAAX8AAAAyd2VibG9naWMuZGlhZ25vc3RpY3MuY29udGV4dC5EaWFnbm9zdGljQ29udGV4dEltcGwAAAA9YmY4ZTQ0YmMyMDE1MzlmNjotMzVkMGJiOWU6MTJhMzM3ZTk1ZWQ6LTgwMDAtMDAwMDAwMDAwMDAwMTQzMwAAAAAAAAAAAAAA</work:WorkContext> </S:Header> <S:Body> <ns2:echoIn xmlns="
http://schemas.microsoft.com/2003/10/Serialization/" ; xmlns:ns2="
http://example.org/echo" ; xmlns:ns3="
http://example.org/notify" ;>test1191</ns2:echoIn> </S:Body> </S:Envelope> </wsil:messageContents> </wsil:message> <wsil:message conversation="1" id="2" type="response" xsi:type="wsil:httpmessage"> <wsil:httpHeaders> <wsil:requestLine>HTTP/1.1 500 Error</wsil:requestLine> <wsil:contentTypeHeader subtype="xml" type="text"> <wsil:parameter key="charset" quoted="false" value="utf-8"/> </wsil:contentTypeHeader> <wsil:httpHeader key="CONTENT-LANGUAGE" quoted="false" value="en-US"/> <wsil:httpHeader key="CONNECTION" quoted="false" value="Close"/> <wsil:httpHeader key="DATE" quoted="false" value="02 Aug 2010 17:36:53 GMT"/> <wsil:httpHeader key="SERVER" quoted="false" value="WebSphere Application Server/7.0"/> <wsil:httpHeader key="CONTENT-LENGTH" quoted="false" value="627"/> <wsil:httpHeader key="omit-xml-declaration" quoted="false" value="yes"/> <wsil:httpHeader key="HOST" quoted="false" value="66.248.195.51:57770"/> </wsil:httpHeaders> <wsil:messageContents containsDTD="false" containsProcessingInstructions="false" containsXmlDecl="true" enconding="utf-8" validXml="true" xmlVersion="1.0"> <soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/" ;> <soapenv:Header xmlns:wsa="
http://www.w3.org/2005/08/addressing" ;> <wsa:Action>
http://www.w3.org/2005/08/addressing/fault </wsa:Action> <wsa:FaultDetail> <wsa:ProblemHeaderQName>wsa:MessageID</wsa:ProblemHeaderQName> </wsa:FaultDetail> </soapenv:Header> <soapenv:Body> <soapenv:Fault xmlns:wsa="
http://www.w3.org/2005/08/addressing" ;> <faultcode>wsa:MessageAddressingHeaderRequired</faultcode> <faultstring>A required header representing a Message Addressing Property is not present</faultstring> <detail/> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> </wsil:messageContents> </wsil:message> </wsil:messageLog> <wsil:descriptionFiles> <wsil:descriptionFile encoding="utf-8" filename="service.wsdl"> <wsdl:definitions xmlns:i0="
http://example.org" ; xmlns:soap="
http://schemas.xmlsoap.org/wsdl/soap/" ; xmlns:tns="
http://tempuri.org/" ; xmlns:wsa10="
http://www.w3.org/2005/08/addressing" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; xmlns:wsp="
http://www.w3.org/ns/ws-policy" ; xmlns:wsu="
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" ; name="wsaTestService" targetNamespace="
http://tempuri.org/" ;> <wsdl:import location="_tH4sJstSH1d6jbZULCciB6zN7z0_.wsdl" namespace="
http://example.org"/ > <wsdl:types/> <wsdl:binding name="CustomBinding_wsaTestPortType" type="i0:wsaTestPortType"> <wsp:PolicyReference URI="#CustomBinding_wsaTestPortType_policy"/> <soap:binding transport="
http://schemas.xmlsoap.org/soap/http"/ > <wsdl:operation name="Echo"> <soap:operation soapAction="
http://example.org/action/echoIn" ; style="document"/> <wsdl:input name="EchoInMessage"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="EchoOutMessage"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="Notify"> <soap:operation soapAction="
http://example.org/action/notify" ; style="document"/> <wsdl:input name="NotifyMessage"> <soap:body use="literal"/> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:service name="wsaTestService"> <wsdl:port binding="tns:CustomBinding_wsaTestPortType" name="CustomBinding_wsaTestPortType"> <soap:address location="
http://ws2.withoutawire.com:9080/BP12AddressingService/wsaTestService"/ > </wsdl:port> </wsdl:service> <wsp:Policy wsu:Id="CustomBinding_wsaTestPortType_policy"> <wsp:ExactlyOne> <wsp:All> <wsam:Addressing> <wsp:Policy/> </wsam:Addressing> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> </wsdl:definitions> </wsil:descriptionFile> <wsil:descriptionFile filename="_tH4sJstSH1d6jbZULCciB6zN7z0_.wsdl"> <wsdl:definitions xmlns:q1="
http://example.org/echo" ; xmlns:q2="
http://example.org/notify" ; xmlns:soap="
http://schemas.xmlsoap.org/wsdl/soap/" ; xmlns:tns="
http://example.org" ; xmlns:wsa10="
http://www.w3.org/2005/08/addressing" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; xmlns:wsp="
http://www.w3.org/ns/ws-policy" ; xmlns:wsu="
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" ; targetNamespace="
http://example.org" ;> <wsdl:types> <xsd:schema targetNamespace="
http://example.org/Imports" ;> <xsd:import namespace="
http://example.org/echo" ; schemaLocation="_qcixsuxQ___HYvSeyk3Z___WhajOBng_.xsd"/> <xsd:import namespace="
http://example.org/notify" ; schemaLocation="_2AUUem54g40WkK__VVv8OpMzGJXc_.xsd"/> <xsd:import namespace="
http://schemas.example.com/2003/10/Serialization/" ; schemaLocation="_FnIUZGKifuicmnWoBHgcOlGAEe0_.xsd"/> </xsd:schema> </wsdl:types> <wsdl:message name="NotifyMessage"> <wsdl:part element="q2:notify" name="notify"/> </wsdl:message> <wsdl:message name="EchoOutMessage"> <wsdl:part element="q1:echoOut" name="echoOut"/> </wsdl:message> <wsdl:message name="EchoInMessage"> <wsdl:part element="q1:echoIn" name="echoIn"/> </wsdl:message> <wsdl:portType name="wsaTestPortType"> <wsdl:operation name="Echo"> <wsdl:input message="tns:EchoInMessage" name="EchoInMessage" wsam:Action="
http://example.org/action/echoIn"/ > <wsdl:output message="tns:EchoOutMessage" name="EchoOutMessage" wsam:Action="
http://example.org/action/echoOut"/ > </wsdl:operation> <wsdl:operation name="Notify"> <wsdl:input message="tns:NotifyMessage" name="NotifyMessage" wsam:Action="
http://example.org/action/notify"/ > </wsdl:operation> </wsdl:portType> </wsdl:definitions> </wsil:descriptionFile> <wsil:descriptionFile filename="_qcixsuxQ___HYvSeyk3Z___WhajOBng_.xsd"> <xs:schema xmlns:tns="
http://example.org/echo" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; elementFormDefault="qualified" targetNamespace="
http://example.org/echo" ;> <xs:element name="echoIn" nillable="true" type="xs:string"/> <xs:element name="echoOut" nillable="true" type="xs:string"/> </xs:schema> </wsil:descriptionFile> <wsil:descriptionFile filename="_2AUUem54g40WkK__VVv8OpMzGJXc_.xsd"> <xs:schema xmlns:tns="
http://example.org/notify" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; elementFormDefault="qualified" targetNamespace="
http://example.org/notify" ;> <xs:element name="notify" nillable="true" type="xs:string"/> </xs:schema> </wsil:descriptionFile> <wsil:descriptionFile filename="_FnIUZGKifuicmnWoBHgcOlGAEe0_.xsd"> <xs:schema xmlns:tns="
http://schemas.example.com/2003/10/Serialization/" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="
http://schemas.example.com/2003/10/Serialization/" ;> <xs:element name="anyType" nillable="true" type="xs:anyType"/> <xs:element name="anyURI" nillable="true" type="xs:anyURI"/> <xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/> <xs:element name="boolean" nillable="true" type="xs:boolean"/> <xs:element name="byte" nillable="true" type="xs:byte"/> <xs:element name="dateTime" nillable="true" type="xs:dateTime"/> <xs:element name="decimal" nillable="true" type="xs:decimal"/> <xs:element name="double" nillable="true" type="xs:double"/> <xs:element name="float" nillable="true" type="xs:float"/> <xs:element name="int" nillable="true" type="xs:int"/> <xs:element name="long" nillable="true" type="xs:long"/> <xs:element name="QName" nillable="true" type="xs:QName"/> <xs:element name="short" nillable="true" type="xs:short"/> <xs:element name="string" nillable="true" type="xs:string"/> <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/> <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/> <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/> <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/> <xs:element name="duration" nillable="true" type="xs:duration"/> <xs:attribute name="FactoryType" type="xs:QName"/> <xs:attribute name="Id" type="xs:ID"/> <xs:attribute name="Ref" type="xs:IDREF"/> </xs:schema> </wsil:descriptionFile> <feature bindingQName="{
http://tempuri.org/}CustomBinding_wsaTestPortType" ; bindingUri="
http://schemas.xmlsoap.org/wsdl/soap/" ; mode="required" name="
http://www.w3.org/ns/ws-policy/Policy" ; portName="CustomBinding_wsaTestPortType" portTypeQName="{
http://example.org}wsaTestPortType" ; serviceQName="{
http://tempuri.org/}wsaTestService" ; transportUri="
http://schemas.xmlsoap.org/soap/http" ; xmlns="
http://www.ws-i.org/testing/2008/02/log/" ;> <alternative> <feature mode="required" name="
http://www.w3.org/2007/05/addressing/metadata/Addressing"/ > </alternative> </feature> <feature bindingQName="{
http://tempuri.org/}CustomBinding_wsaTestPortType" ; mode="required" name="
http://www.w3.org/2007/05/addressing/metadata/Addressing" ; portName="CustomBinding_wsaTestPortType" portTypeQName="{
http://example.org}wsaTestPortType" ; serviceQName="{
http://tempuri.org/}wsaTestService" ; xmlns="
http://www.ws-i.org/testing/2008/02/log/"/ > </wsil:descriptionFiles> </wsil:testLog> Attachment: StarEAST11-JacquesDurand_Separate-Execution-Analysis.ppt Description: StarEAST11-JacquesDurand_Separate-Execution-Analysis.ppt <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="ProfileTAsToHtml-2.0.xsl"?> <profile xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; > <head> <title>Test Assertions Basic Profile</title> <version>1.2</version> <cvsDate>$Date: 2013/06/14 $</cvsDate> </head> <!-- Test Assertions for Basic Profile 1.2 --> <testAssertions> <testAssertion xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; enable="true" id="BP1901"> <!-- preReq="" --> <description> The soap11:Envelope contains other header blocks. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Header[some $hbloc in child::* satisfies not(fn:namespace-uri($hbloc) = '
http://www.w3.org/2005/08/addressing ') and not($hbloc/attribute::*:IsReferenceParameter) ]]</target> <!-- target>/wsil:testLog/wsil:messageLog/wsil:message</target --> <predicate>fn:true()</predicate> <prescription level="permitted"/> <reporting true="warning" false="failed"/> <errorMessage> Extensibility Point WARNING: The soap11:Envelope makes use of extra SOAP headers </errorMessage> <diagnostic> </diagnostic> </testAssertion> <testAssertion xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; enable="true" id="BP1904"> <!-- preReq="" --> <description> The soap11:Envelope contains @role with unspecified values. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[.//attribute::*:role]</target> <!-- target>/wsil:testLog/wsil:messageLog/wsil:message</target --> <predicate>every $rval in .//*/attribute::*:role satisfies ($rval = '
http://www.w3.org/2003/05/soap-envelope/role/next ' or $rval = '
http://www.w3.org/2003/05/soap-envelope/role/none ')</predicate> <prescription level="permitted"/> <reporting true="passed" false="warning"/> <errorMessage> Extensibility Point WARNING: The soap11:Envelope contains @role with unspecified values </errorMessage> <diagnostic> </diagnostic> </testAssertion> <testAssertion xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; enable="true" id="BP1905"> <!-- preReq="" --> <description> The soap11:Envelope contains a Fault with unspecified detail content. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Body/soap11:Fault/detail]</target> <!-- target>/wsil:testLog/wsil:messageLog/wsil:message</target --> <predicate>fn:true()</predicate> <prescription level="permitted"/> <reporting true="warning" false="passed"/> <errorMessage> Extensibility Point WARNING: The soap11:Fault makes use of optional detail element </errorMessage> <diagnostic> </diagnostic> </testAssertion> <testAssertion id="BP1015" enable="false" xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; > <!-- preReq="" --> <description> A receiver must not fault messages with envelopes that contain an XML Declaration. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents[@containsXmlDecl = 'true']/soap11:Envelope</target> <predicate>not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or (.//soap11:Envelope/soap11:Header/wsa:RelatesTo[@RelationshipType = '
http://www.w3.org/2005/08/addressing/reply ' or not (@RelationshipType)] = $target/soap11:Header/wsa:MessageID)]/wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="warning"/> <errorMessage> A soap Fault has been generated when receiving a message with an XML declaration: verify that this Fault has another cause - it must not be caused by teh XML declaration. </errorMessage> <diagnostic> {SOAP message} </diagnostic> </testAssertion> <testAssertion id="BP1306" enable="true" xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ;> <!-- preReq="" --> <!-- NOTE: a scenario-dependent TA --> <description> A RECEIVER MUST NOT fault due to the presence of a UTF-8 Unicode Byte Order Mark. NOTE: This is a "scenario-dependent" test assertion, that will only trigger if the SOAP Header contains a header block of the form *:R4006 or *:R1019 (with any namespace prefix). </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents[fn:starts-with(fn:lower-case(@encoding), 'utf-8') ]/soap11:Envelope[soap11:Header/*:R1019 or soap11:Header/*:R4006]</target> <predicate>not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or (.//soap11:Envelope/soap11:Header/wsa:RelatesTo[@RelationshipType = '
http://www.w3.org/2005/08/addressing/reply ' or not (@RelationshipType)] = $target/soap11:Header/wsa:MessageID)]/wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="warning"/> <errorMessage> A SOAP Fault has been generated when receiving a message with a UTF-8 Unicode Byte Order Mark. Please verify that this fault has another cause - it must not be caused by the presence of the B.O.M. </errorMessage> <diagnostic> {SOAP message} </diagnostic> </testAssertion> <testAssertion id="BP1307" enable="true" xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ;> <!-- preReq="" --> <!-- NOTE: a scenario-dependent TA --> <description> A RECEIVER MUST NOT fault due to the presence of a UTF-16 Unicode Byte Order Mark. NOTE: This is a "scenario-dependent" test assertion, that will only trigger if the SOAP Header contains a header block of the form *:R4007 (with any namespace prefix). </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents[fn:starts-with(fn:lower-case(@encoding), 'utf-16') ]/soap11:Envelope[soap11:Header/*:R4007]</target> <predicate>not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or (.//soap11:Envelope/soap11:Header/wsa:RelatesTo[@RelationshipType = '
http://www.w3.org/2005/08/addressing/reply ' or not (@RelationshipType)] = $target/soap11:Header/wsa:MessageID)]/wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="warning"/> <errorMessage> A soap Fault has been generated when receiving a message with a UTF-16 Unicode Byte Order Mark. Please verify that this Fault has another cause - it must not be caused by the presence of the B.O.M. </errorMessage> <diagnostic> {SOAP message} </diagnostic> </testAssertion> <testAssertion id="BP1019" enable="true" xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; > <!-- preReq="" --> <description> The soap11:Envelope in the message is a well-formed XML 1.0 document. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target> <cotarget name="metadata">$target/../../wsil:messageContents[@validXml and @xmlVersion]</cotarget> <predicate>$target/../../wsil:messageContents[@validXml = fn:true() and @xmlVersion = '1.0']</predicate> <prescription level="mandatory"/> <errorMessage> The soap11:Envelope does not conform to XML 1.0. </errorMessage> <diagnostic> {SOAP message}{any XML parser error messages} </diagnostic> </testAssertion> <testAssertion xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; enable="true" id="BP1018"> <description> The logged SOAP envelope is a UTF-8 transcript of an envelope originally encoded as UTF-8 or UTF-16. The HTTP Content-Type header's charset value is either UTF-8 or UTF-16. Looking at the messageContent element of the logged message, either (1) it has a BOM attribute which maps the charset value in the Content-Type header, or (2) it has it has an XML declaration which matches the charset value in the Content-Type header, or (3) there is no BOM attribute and no XML declaration, and the charset value is UTF-8. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target> <predicate>$target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[@key = 'charset' and (fn:starts-with(fn:lower-case(@value), 'utf-8') or fn:starts-with(fn:lower-case(@value),'utf-16'))] or fn:starts-with(fn:lower-case($target/../wsil:messageContents/@encoding),'utf-8') or fn:starts-with(fn:lower-case($target/../wsil:messageContents/@encoding),'utf-16')</predicate> <prescription level="mandatory"/> <errorMessage> Either (1a) the message contains a Content-Type header but no charset value, or (1b) the charset value is neither UTF-8 nor UTF-16, or (2) there is a BOM attribute in the messageContent element, but its value does not match the charset value, or (3) there is an XML declaration, and the charset value does not match its value, or (4) there is no BOM attribute, no XML declaration, and the charset value in Content-Type header is not UTF-8. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; enable="true" id="BP1020"> <description> A XOP_ENCODED_MESSAGE MUST include the start-info parameter in the Content-Type header of the enclosing multipart/related MIME entity body. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message[wsil:httpHeaders/wsil:contentTypeHeader/@type = 'multipart' and wsil:httpHeaders/wsil:contentTypeHeader/@subtype = 'related' and wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[@key = 'type']/@value= 'application/xop+xml']</target> <predicate>wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[fn:lower-case(@key) = 'start-info' and @value != '']</predicate> <prescription level="mandatory"/> <errorMessage> The XOP_ENCODED_MESSAGE does not include the start-info parameter with proper @value. </errorMessage> <diagnostic/> </testAssertion> <testAssertion xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; enable="true" id="BP1021"> <description> A XOP_ENCODED_MESSAGE SHOULD include the full value of the type parameter from the root entity body part inside the start-info parameter of the enclosing multipart/related MIME entity body part's Content-Type header. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message[wsil:httpHeaders/wsil:contentTypeHeader/@type = 'multipart' and wsil:httpHeaders/wsil:contentTypeHeader/@subtype = 'related' and wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[@key = 'type']/@value = 'application/xop+xml']</target> <predicate>some $rootContentID in string(wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[@key = 'start']/@value) satisfies string(wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[fn:lower-case(@key) = 'start-info']/@value) = string(wsil:messageAttachments//*:mimeHeaders[ *:mimeHeader[ fn:lower-case(@key) = 'content-id' and @value = $rootContentID]]/wsil:contentTypeHeader/wsil:parameter[@key = 'type']/@value) </predicate> <prescription level="preferred"/> <errorMessage> The XOP_ENCODED_MESSAGE SHOULD include the full value of the type parameter </errorMessage> <diagnostic/> </testAssertion> <testAssertion id="BP1600" enable="true" xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; > <description> The envelope conforms to the structure specified in SOAP 1.1 Part 1, Section 5. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope </target> <cotarget name="metadata">$target/../@schemaValid</cotarget> <predicate> $target/../@schemaValid = fn:true() </predicate> <prescription level="mandatory"/> <errorMessage> The envelope does not conform to the structure specified in SOAP 1.1 Part 1, Section 5 </errorMessage> <diagnostic>SOAP envelope.</diagnostic> </testAssertion> <testAssertion xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; enable="true" id="BP1881"> <description> The envelope must have exactly zero or one child elements of the soap11:Body </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target> <predicate>count(soap11:Body/*) le 1</predicate> <prescription level="mandatory"/> <errorMessage> The envelope does not have exactly zero or one child elements of the soap11:Body </errorMessage> <diagnostic>SOAP envelope.</diagnostic> </testAssertion> <testAssertion xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; enable="true" id="BP1202"> <!-- preReq="BP1701" --> <description> Each child element (if any) of the soap11:Body element is namespace qualified (not the grandchildren). </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[count(soap11:Body/*) > 0]</target> <predicate>fn:namespace-uri-from-QName(fn:node-name(soap11:Body/*)) != ''</predicate> <prescription level="mandatory"/> <errorMessage> A child element of the soap11:Body element is not namespace qualified. </errorMessage> <diagnostic>SOAP envelope.</diagnostic> </testAssertion> <testAssertion id="BP1007" enable="true" xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; > <!-- preReq="BP1701" --> <description> DTDs relating to soap11:Header or soap11:Body documents, are not present in the envelope: no DOCTYPE element is present. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target> <cotarget name="metadata">$target/../@containsDTD</cotarget> <predicate>not(../@containsDTD = fn:true())</predicate> <prescription level="mandatory"/> <errorMessage> The soap11:Header or soap11:Body elements in the envelope, were described with an included DTD. </errorMessage> <diagnostic>SOAP envelope.</diagnostic> </testAssertion> <testAssertion id="BP1208" enable="true" xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; > <!-- preReq="BP1701" --> <description> The SOAP envelope does not include XML processing instructions. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target> <cotarget name="metadata">$target/../@containsProcessingInstructions</cotarget> <predicate>not(../@containsProcessingInstructions = fn:true())</predicate> <prescription level="mandatory"/> <errorMessage> a SOAP envelope contains XML processing instructions. </errorMessage> <diagnostic>SOAP envelope.</diagnostic> </testAssertion> <testAssertion xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; enable="true" id="BP1033"> <!-- preReq="BP1701" --> <description> The SOAP envelope does not contain the namespace declaration xmlns:xml="
http://www.w3.org/XML/1998/namespace" ;. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target> <!-- predicate>not(descendant-or-self::*[fn:namespace-uri-for-prefix('xml', .) = '
http://www.w3.org/XML/1998/namespace '])</predicate --> <predicate>not(.//*[fn:namespace-uri(.) = '
http://www.w3.org/XML/1998/namespace ']) </predicate> <!-- predicate>not(descendant-or-self::*[some $nmsp in namespace::node() satisfies fn:contains($nmsp, '
http://www.w3.org/XML/1998/namespace ')])</predicate --> <prescription level="preferred"/> <errorMessage> The SOAP envelope contains the namespace declaration xmlns:xml="
http://www.w3.org/XML/1998/namespace" ;. </errorMessage> <diagnostic>SOAP envelope</diagnostic> </testAssertion> <testAssertion xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; enable="true" id="BP1032"> <!-- preReq="BP1701" --> <description> Test to see if the soap11:Envelope, soap11:Header, and soap11:Body elements have any attributes in either either the the SOAP 1.1 or the SOAP 1.2 namespace. Although this tests for additional constraints beyond those in R1032 (namely attributes in the SOAP 1.2 namespace), it is felt that the existence of such attributes represent an error. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope</target> <predicate>every $attrib in (self::node()/attribute::*, ./soap11:Header/attribute::*, ./soap11:Body/attribute::*) satisfies fn:namespace-uri($attrib) != '
http://www.w3.org/2003/05/soap-envelope ' and fn:namespace-uri($attrib) != '
http://schemas.xmlsoap.org/soap/envelope/ ' </predicate> <prescription level="mandatory"/> <errorMessage> The message has a soap11:Envelope, soap11:Header, or soap11:Body element with one or more attributes in either the "
http://schemas.xmlsoap.org/soap/envelope/" ; or the "
http://www.w3.org/2003/05/soap-envelope" ; namespace. </errorMessage> <diagnostic>SOAP envelope</diagnostic> </testAssertion> <testAssertion xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:soap12="
http://www.w3.org/2003/05/soap-envelope" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ; enable="true" id="BP1035"> <description> The value of the wsa:Action element is
http://www.w3.org/2005/08/addressing/soap/fault </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Header/wsa:Action and (fn:ends-with(soap11:Body/soap11:Fault/soap11:Code/soap11:Value,'MustUnderstand') or fn:ends-with(soap11:Body/soap11:Fault/soap11:Code/soap11:Value, 'VersionMismatch'))]</target> <predicate>normalize-space(string(./soap11:Header/wsa:Action)) = '
http://www.w3.org/2005/08/addressing/soap/fault '</predicate> <prescription level="mandatory"/> <errorMessage> A fault response does not contain the expected wsa:Action value of
http://www.w3.org/2005/08/addressing/soap/fault . </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1040a" enable="true" xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ;> <description> If an endpoint requires use of WS-Addressing by use of a wsam:Addressing policy assertion, an ENVELOPE sent by a SENDER MUST carry all required WS-Addressing SOAP headers. NOTE: this TA is only verifying the presence of the wsa:Action header. The presence of other headers (once wsa:Action is present) is verified by the family of TAs BP1142x and BP1143x (related to R1142), which also contribute at testing R1040. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message [/wsil:testLog/wsil:descriptionFiles/*:feature[@name = '
http://www.w3.org/2007/05/addressing/metadata/Addressing ' and @mode = 'required']]/wsil:messageContents/soap11:Envelope[soap11:Body/* and not (soap11:Body/soap11:Fault) ]</target> <predicate>$target/soap11:Header/wsa:Action</predicate> <prescription level="mandatory"/> <errorMessage> The use of WS-Addressing was required, but the message did not include wsa:Action. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1040b" enable="true" xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ;> <description> This assertions tests one aspect of R1040; if an instance requires the use of WS-Addressing with anonymous response EPRs, any envelope sent by a sender must not contain response EPRs that include anything other than "
http://www.w3.org/2005/08/addressing/anonymous" ; as the value of their wsa:Address. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request'] /wsil:messageContents/soap11:Envelope [ not(soap11:Header/wsa:RelatesTo) and not(soap11:Header/wsa:ReplyTo/wsa:Address = '
http://www.w3.org/2005/08/addressing/none ') and not(soap11:Header/wsa:FaultTo/wsa:Address = '
http://www.w3.org/2005/08/addressing/none ') ] [/wsil:testLog/wsil:descriptionFiles/wsil:feature[@name = "
http://www.w3.org/ns/ws-policy/Policy"]/wsil:alternative/wsil:feature[@name = "
http://www.w3.org/2007/05/addressing/metadata/Addressing"]/wsil:alternative/wsil:feature[@name = "
http://www.w3.org/2007/05/addressing/metadata/AnonymousResponses" ; and @mode = "required"] ] </target> <predicate> ( (not ($target/soap11:Header/wsa:ReplyTo) or ($target/soap11:Header/wsa:ReplyTo/wsa:Address='
http://www.w3.org/2005/08/addressing/anonymous ') ) and (not ($target/soap11:Header/wsa:FaultTo) or ($target/soap11:Header/wsa:FaultTo/wsa:Address='
http://www.w3.org/2005/08/addressing/anonymous ') ) ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="failed"/> <errorMessage> The service requires request messages to use response endpoint EPRs that contain the anonymous URI as the value of wsa:Address. The client sent a request with a response EPR that contained something other than the anonymous URI. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1040c" enable="true" xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ;> <description> This assertions tests one aspect of R1040; if an instance requires the use of WS-Addressing with non-anonymous response EPRs, any envelope sent by a sender must not include response EPRs that include "
http://www.w3.org/2005/08/addressing/anonymous" ; as the value of their wsa:Address. Note also that the absence of a ReplyTo header implies a default [reply endpoint] with wsa:Address equal to "
http://www.w3.org/2005/08/addressing/anonymous" ;. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request'] /wsil:messageContents/soap11:Envelope [ not(soap11:Header/wsa:RelatesTo) and not(soap11:Header/wsa:ReplyTo/wsa:Address = '
http://www.w3.org/2005/08/addressing/none ') and not(soap11:Header/wsa:FaultTo/wsa:Address = '
http://www.w3.org/2005/08/addressing/none ') ] [/wsil:testLog/wsil:descriptionFiles/wsil:feature[@name="
http://www.w3.org/ns/ws-policy/Policy"]/wsil:alternative/wsil:feature[@name="http://www.w3.org/2007/05/addressing/metadata/Addressing"]/wsil:alternative/wsil:feature[@name="http://www.w3.org/2007/05/addressing/metadata/NonAnonymousResponses" ; and @mode="required"] ] </target> <predicate> ( ($target/soap11:Header/wsa:ReplyTo) and not ($target/soap11:Header/wsa:ReplyTo/wsa:Address='
http://www.w3.org/2005/08/addressing/anonymous ') and not ($target/soap11:Header/wsa:FaultTo/wsa:Address='
http://www.w3.org/2005/08/addressing/anonymous ') ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="failed"/> <errorMessage> The service requires request messages to use response endpoint EPRs that contain something other than the anonymous URI as the value of wsa:Address. The client sent a request with either a response EPR that contained the anonymous URI or without the ReplyTo header, which implies a default [reply endpoint] with the anonymous URI. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1041" enable="true" xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ;> <description> An ENVELOPE that is a MustUnderstand SOAP fault, sent from an endpoint that has a policy alternative containing the wsam:Addressing assertion attached to its WSDL endpoint subject, MUST NOT contain a NotUnderstood SOAP header block with the qname attribute value that identifies a WS-Addressing defined SOAP header block. </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Body/soap11:Fault[some $code in .//faultcode satisfies fn:contains($code,'MustUnderstand') ]] [/wsil:testLog/wsil:descriptionFiles/*:feature[@name = '
http://www.w3.org/2007/05/addressing/metadata/Addressing ' and (@mode = 'required' or @mode = 'supported')]] </target> <predicate>$target/soap11:Header[not(soap11:NotUnderstood[fn:namespace-uri-for-prefix(fn:substring-before(@qname, ':'), .) = '
http://www.w3.org/2005/08/addressing '])] </predicate> <prescription level="mandatory"/> <errorMessage> A MustUnderstand SOAP fault, sent from an endpoint that has a policy alternative containing the wsam:Addressing assertion attached to its WSDL endpoint subject, contains a NotUnderstood SOAP header block with the qname attribute value that identifies a WS-Addressing defined SOAP header block. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1142a" enable="true" xmlns="
http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" ; xmlns:h="
http://www.ws-i.org/2002/08/12/ProfileMarkup-2.0.xsd" ; xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" ; xmlns:xsd="
http://www.w3.org/2001/XMLSchema" ; xmlns:xs="
http://www.w3.org/2001/XMLSchema" ; xmlns:soap11="
http://schemas.xmlsoap.org/soap/envelope/" ; xmlns:wsdl="
http://schemas.xmlsoap.org/wsdl/" ;> <!-- rpc-lit / request case --> <description> The envelope must conform to WS-Addressing WSDL Binding, Section 5.1. For a request message, with a wsa:Action element, defined using an rpc/lit binding, the following must hold: - If there is an EPR attached to the corresponding wsdl:port definition, then the wsa:To element must be present - the wsa:RelatesTo/@RelationshipType must be present with value "
http://www.w3.org/2005/08/addressing/reply" ; (this is covered by 2nd cotarget presence) - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl - If the operation binding includes a wsdl:output element then there must be wsa:messageID and a wsa:ReplyTo elements present in the soap11:header </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/soap11:Envelope [soap11:Header[ wsa:Action and not (wsa:RelatesTo[@RelationshipType = '
http://www.w3.org/2005/08/addressing/reply ' or not (@RelationshipType)] )] and soap11:Body/* and not (soap11:Body/soap11:Fault) ] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ] </target> <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap11:*[@style = 'rpc']]/wsdl:operation[@name = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))] </cotarget> <predicate> ( if <br/> ( /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/ wsdl:port[fn:local-name-from-QName(fn:resolve-QName(xsd:string(@binding), . )) = $myOpBinding/../@name ]/wsa:EndpointReference )<br/> then<br/> (some $portEpr in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/ wsdl:port[fn:local-name-from-QName(fn:resolve-QName(xsd:string(@binding), . )) = $myOpBinding/../@name ]/wsa:EndpointReference satisfies ( $target/soap11:Header/wsa:To ) )<br/> else fn:true()<br/> )<br/> and<br/> ( if <br/> ( $myOpBinding/wsdl:output ) then <br/> ($target/soap11:Header/wsa:MessageID)