[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: about testing
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 2nd 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) else fn:true()<br/> )<br/> and (: correct wsa:Action value :) (some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/ wsdl:operation[ $myOpBinding/@name = @name ]/wsdl:input satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Request' ) ) ) ) ) </predicate> <prescription level="mandatory"/> <errorMessage> An envelope does not 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: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 </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="BP1142b"> <!-- doc-lit / response case --> <description> The envelope must conform to WS-Addressing WSDL Binding, Section 5.1. http://www.w3.org/2005/08/addressing/reply IRI. For a response message with a wsa:Action element, defined using an rpc/lit binding, the following must hold: - the wsa:ReplyTo EPR in the related Request message must have the anonymous address - the wsa:To element, if present, must have the anonymous value - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'response']/wsil:messageContents/ soap11:Envelope[soap11:Header[wsa:Action] 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 [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))] </cotarget> <cotarget name ="related-Request"> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ] </cotarget> <predicate> ( not ($related-Request/soap11:Header/wsa:ReplyTo) or ($related-Request/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' ) ) and ( $target/soap11:Header/wsa:RelatesTo [ not ( @RelationshipType ) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) and ( $target/soap11:Header[ not (wsa:To) or (wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' )] ) and (: correct wsa:Action value :) (some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/ wsdl:operation[ $myOpBinding/@name = @name ]/wsdl:output satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Response' ) ) ) ) ) </predicate> <prescription level="mandatory"/> <errorMessage> An envelope does not conform to WS-Addressing WSDL Binding, Section 5.1. For a response message with a wsa:Action element, defined using an rpc/lit binding, the following must hold: - the wsa:ReplyTo EPR in the related Request message must have the anonymous address - the wsa:To element, if present, must have the anonymous value - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl </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="BP1142c"> <!-- rpc-lit / non anonymous response case --> <description> The envelope must conform to WS-Addressing WSDL Binding, Section 5.1. http://www.w3.org/2005/08/addressing/reply IRI. For a non anonymous response message with a wsa:Action element, defined using an rpc/lit binding, the following must hold: - the wsa:ReplyTo EPR in the related Request message must have a non-anonymous address - the wsa:To element must be present, and must have a non-anonymous value - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/ soap11:Envelope [soap11:Body[not (soap11:Fault)] and soap11:Header [wsa:Action and (wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ) ] ] [ 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 [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))] </cotarget> <cotarget name ="related-Request"> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ] </cotarget> <predicate> ( ($related-Request/soap11:Header/wsa:ReplyTo) and not ($related-Request/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' ) ) and ( $target/soap11:Header/wsa:RelatesTo [ not ( @RelationshipType ) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) and ( $target/soap11:Header[ (wsa:To) and not (wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' ) ] ) and (: correct wsa:Action value :) (some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/ wsdl:operation[ $myOpBinding/@name = @name ]/wsdl:output satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Response' ) ) ) ) ) </predicate> <prescription level="mandatory"/> <errorMessage> An envelope does not conform to WS-Addressing WSDL Binding, Section 5.1. For a non anonymous response message with a wsa:Action element, defined using an rpc/lit binding, the following must hold: - the wsa:ReplyTo EPR in the related Request message must have a non-anonymous address - the wsa:To element must be present, and must have a non-anonymous value - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1143a" 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/" > <!-- doc-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 a doc/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:Action value in the soap11:Header must equal to that specified from the wsdl (this is covered by the cotarget presence) - If the operation binding includes a wsdl:output element then there must be wsa:messageID and a wsa:ReplyTo present in the soap11:header </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/ soap11:Envelope [soap11:Body[not (soap11:Fault)] and soap11:Header [wsa:Action and not (wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ) ] ] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Request' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <predicate> ( if ( /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 ) then (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 ) ) else fn:true() ) and ( if ( $myOpBinding/wsdl:output ) then ( $target/soap11:Header/wsa:MessageID) else fn:true() ) </predicate> <prescription level="mandatory"/> <errorMessage> An envelope does not conform to WS-Addressing WSDL Binding, Section 5.1. For a request message, with a wsa:Action element, defined using a doc/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:Action value in the soap11:Header must equal to that specified from the wsdl (this is covered by the cotarget presence) - 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 </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1143b" 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/" > <!-- doc-lit / response case --> <description> The envelope must conform to WS-Addressing WSDL Binding, Section 5.1. http://www.w3.org/2005/08/addressing/reply IRI. For a response message with a wsa:Action element, defined using a doc/lit binding, the following must hold: - the wsa:ReplyTo EPR in the related Request message must have the anonymous address - 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:To element, if present, must have the anonymous value - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl (this is covered by the cotarget presence) </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'response']/wsil:messageContents/soap11:Envelope [soap11:Body[not (soap11:Fault) ] and soap11:Header[wsa:Action] ] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:string-join(($opmsg/../../../@targetNamespace,$opmsg/../../@name, if($opmsg/@name) then $opmsg/@name else fn:string-join(($opmsg/../@name, 'Response' ),'' ) ),'/' ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <cotarget name ="related-Request"> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ] </cotarget> <predicate> ( not ($related-Request/soap11:Header/wsa:ReplyTo) or ($related-Request/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' ) ) and ( $target/soap11:Header/wsa:RelatesTo [ not ( @RelationshipType ) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) and ( $target/soap11:Header[ not (wsa:To) or (wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' )] ) </predicate> <prescription level="mandatory"/> <errorMessage> An envelope does not conform to WS-Addressing WSDL Binding, Section 5.1. For a response message with a wsa:Action element, defined using a doc/lit binding, the following must hold: - the wsa:ReplyTo EPR in the related Request message must have the anonymous address - the wsa:To element, if present, must have the anonymous value - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl (this is covered by the cotarget presence) </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1143c" 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/" > <!-- doc-lit / non-anonymous response case --> <description> The envelope must conform to WS-Addressing WSDL Binding, Section 5.1. http://www.w3.org/2005/08/addressing/reply IRI. For a non anon response message with a wsa:Action element, defined using a doc/lit binding, the following must hold: - the wsa:ReplyTo EPR in the related Request message must have a non-anonymous address - 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:To element, must be present and not anonymous - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl (this is covered by the cotarget presence) </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/soap11:Envelope [soap11:Body[not (soap11:Fault)] and soap11:Header [wsa:Action and (wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ) ] ] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Response' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <cotarget name ="related-Request"> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ] </cotarget> <predicate> ( ($related-Request/soap11:Header/wsa:ReplyTo) and not ($related-Request/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' ) ) and ( $target/soap11:Header/wsa:RelatesTo [ not ( @RelationshipType ) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) and ( $target/soap11:Header[ (wsa:To) and not (wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' )] ) </predicate> <prescription level="mandatory"/> <errorMessage> An envelope does not conform to WS-Addressing WSDL Binding, Section 5.1. For a non anon response message with a wsa:Action element, defined using a doc/lit binding, the following must hold: - the wsa:ReplyTo EPR in the related Request message must have a non-anonymous address - the wsa:To element, must be present with a non anonymous value - The wsa:Action value in the soap11:Header must equal to that specified from the wsdl (this is covered by the cotarget presence) </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1043a" 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/" xmlns:wsa="http://www.w3.org/2005/08/addressing"> <description> This assertion tests one aspect of R1143. It verifies that, if the ReplyTo EPR contains reference parameters, these referece parameters are properly echoed any response that claims to have originated from an instance that supports WS-Addressing. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Header/wsa:ReplyTo/wsa:ReferenceParameters/*] </target> <cotarget name="related-Response"> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not(@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] ] /wsil:messageContents/soap11:Envelope [soap11:Header/wsa:RelatesTo[not(@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] = $target/soap11:Header/wsa:MessageID] </cotarget> <predicate> ( if<br/> ( ($related-Response/soap11:Header/wsa:Action) and (not($related-Response/soap11:Body/soap11:Fault) or (not($target/soap11:Header/wsa:FaultTo) and $related-Response/soap11:Header/wsa:Action ne 'http://www.w3.org/2005/08/addressing/fault')) )<br/> then<br/> ( <!-- tests for presence of refP QName - refP values not compared --> every $refP in $target/soap11:Header/wsa:ReplyTo/wsa:ReferenceParameters/* satisfies some $header in $related-Response/soap11:Header/*[@wsa:IsReferenceParameter='1'or @wsa:IsReferenceParameter = 'true'] satisfies fn:resolve-QName(fn:name($refP), $refP) = fn:resolve-QName(fn:name($header), $header) )<br/> else fn:true()<br/> ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="failed"/> <errorMessage> The response to a message that contained reference parameters in the ReplyTo EPR is missing one or more of those reference parameters in its SOAP headers. NOTE: the case where this appears in a Fault response message over HTTP response due to an invalid ReplyTo address would not account for a violation of R1143. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1043b" 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/" xmlns:wsa="http://www.w3.org/2005/08/addressing"> <description> This assertion tests one aspect of R1143. It verifies that, if the FaultTo EPR contains reference parameters, these referece parameters are properly echoed any fault response that claims to have originated from an instance that supports WS-Addressing. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Header/wsa:FaultTo/wsa:ReferenceParameters/*] </target> <cotarget name="related-Response"> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not(@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] ] /wsil:messageContents/soap11:Envelope [soap11:Header/wsa:RelatesTo[not(@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] = $target/soap11:Header/wsa:MessageID] </cotarget> <predicate> ( if<br/> ( ($related-Response/soap11:Header/wsa:Action) and ($related-Response/soap11:Body/soap11:Fault) )<br/> then<br/> ( <!-- tests for presence of refP QName - refP values not compared --> every $refP in $target/soap11:Header/wsa:FaultTo/wsa:ReferenceParameters/* satisfies some $header in $related-Response/soap11:Header/*[@wsa:IsReferenceParameter='1'or @wsa:IsReferenceParameter = 'true'] satisfies fn:resolve-QName(fn:name($refP), $refP) = fn:resolve-QName(fn:name($header), $header) )<br/> else fn:true()<br/> ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="failed"/> <errorMessage> The fault response to a message that contained reference parameters in the FaultTo EPR is missing one or more of those reference parameters in its SOAP headers. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1153a" 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/"> <!-- doc-lit / request case --> <description> For a request message, defined using a doc/lit binding, the following must hold: - If there is no EPR attached to the corresponding wsdl:port definition, then in case there is no wsa:To element, the message should not be faulted. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/ soap11:Envelope [soap11:Body[not (soap11:Fault)] and soap11:Header[not(wsa:To) ]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) and ( some $port in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port satisfies not(wsa:EndpointReference) ) ] </target > <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Request' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget > <prerequisite>/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 and not(wsa:EndpointReference) ] </prerequisite> <predicate> ( if ( /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 and not(wsa:EndpointReference)] ) then ( not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or (.//soap11:Envelope/soap11:Header/wsa:RelatesTo = $target/soap11:Header/wsa:MessageID)] /wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault ) ) else fn:true() ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="warning"/> <errorMessage> An envelope for a doc/lit bound request message, without wsa:To in a message bound to a port that is NOT extended with wsa:EndpointReference has generated a Fault in response. Verify that this fault is not caused by the absence of wsa:To. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1153b" 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/"> <!-- rpc-lit / request case --> <description> For a request message, defined using a rpc/lit binding, the following must hold: - If there is no EPR attached to the corresponding wsdl:port definition, then in case there is no wsa:To element, the message should not be faulted. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/soap11:Envelope [soap11:Header[ not (wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ) and not(wsa:To)] 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)) and ( some $port in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port satisfies not(wsa:EndpointReference)) ] </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> <prerequisite>/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 and not(wsa:EndpointReference) ] </prerequisite> <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 and not(wsa:EndpointReference)] )<br/> then<br/> ( not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or (.//soap11:Envelope/soap11:Header/wsa:RelatesTo = $target/soap11:Header/wsa:MessageID)] /wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault ) )<br/> else fn:true()<br/> )<br/> </predicate> <prescription level="mandatory"/> <reporting true="passed" false="warning"/> <errorMessage> An envelope for a rpc/lit bound request message, without wsa:To in a message bound to a port that is NOT extended with wsa:EndpointReference has generated a Fault in response. Verify that this fault is not caused by the absence of wsa:To. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1125a" 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/"> <!-- doc-lit / request case --> <description> When a CONSUMER is non-addressable, a SOAP ENVELOPE, that is described by the input message of a WSDL doc-lit operation supported by an INSTANCE, MUST be bound to a HTTP Request message. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/ soap11:Envelope [soap11:Body[not (soap11:Fault)] and not(soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ) and ((some $repto in soap11:Header/wsa:ReplyTo satisfies fn:contains($repto, 'anonymous')) or not(soap11:Header/wsa:ReplyTo) ) ] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) and ( some $port in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port satisfies not(wsa:EndpointReference) ) ] </target > <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Request' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget > <predicate>$target/../../@type = 'request'</predicate> <prescription level="mandatory"/> <reporting true="passed" false="failed"/> <errorMessage> An envelope for a WSDL doc/lit bound request message, with a wsa:ReplyTo anonymous, was sent over an HTTP response. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1125b" 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/"> <!-- rpc-lit / request case --> <description> When a CONSUMER is non-addressable, a SOAP ENVELOPE, that is described by the input message of a WSDL rpc-lit operation supported by an INSTANCE, MUST be bound to a HTTP Request message. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/ soap11:Envelope [soap11:Body[not (soap11:Fault)] and not(soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ) and ((some $repto in soap11:Header/wsa:ReplyTo satisfies fn:contains($repto, 'anonymous')) or not(soap11:Header/wsa:ReplyTo) ) ] [ some $myenv in . satisfies (some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type)) and ( some $port in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port satisfies not(wsa:EndpointReference)) ] </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>$target/../../@type = 'request'</predicate> <prescription level="mandatory"/> <errorMessage> An envelope for a WSDL rpc/lit bound request message, with a wsa:ReplyTo anonymous, was sent over an HTTP response. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1126a" 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/"> <!-- doc-lit / response case --> <description> When a CONSUMER is non-addressable, a SOAP ENVELOPE, that is described by the output message of a WSDL doc-lit operation supported by an INSTANCE, MUST be bound to a HTTP Response message. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope [soap11:Body[not (soap11:Fault) ] and soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and (some $respenv in . satisfies some $req in /wsil:testLog/wsil:messageLog/wsil:message satisfies $req/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = $respenv/soap11:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and $req/wsil:messageContents/soap11:Envelope/soap11:Header[fn:contains(wsa:ReplyTo[1]/wsa:Address, 'http://www.w3.org/2005/08/addressing/anonymous') or not(wsa:ReplyTo)] ) ] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Response' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <predicate>$target/../../@type = 'response'</predicate> <prescription level="mandatory"/> <errorMessage> An envelope for a WSDL doc/lit bound response message, related to a request containing a wsa:ReplyTo anonymous, was sent over an HTTP request. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1126b" 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/"> <!-- rpc-lit / response case --> <description> When a CONSUMER is non-addressable, a SOAP ENVELOPE, that is described by the output message of a WSDL rpc-lit operation supported by an INSTANCE, MUST be bound to a HTTP Response message. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope [soap11:Body[not (soap11:Fault) ] and soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and (some $respenv in . satisfies some $req in /wsil:testLog/wsil:messageLog/wsil:message satisfies $req/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = $respenv/soap11:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and $req/wsil:messageContents/soap11:Envelope/soap11:Header[fn:contains(wsa:ReplyTo[1]/wsa:Address, 'http://www.w3.org/2005/08/addressing/anonymous') or not(wsa:ReplyTo)] ) ] [ 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 [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))] </cotarget> <predicate>$target/../../@type = 'response'</predicate> <prescription level="mandatory"/> <errorMessage> An envelope for a WSDL rpc/lit bound response message, related to a request containing a wsa:ReplyTo anonymous, was sent over an HTTP request. </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="BP1144"> <description> The request message must specify a SOAPAction HTTP header with either a value that is an absolute URI that has the same value as the value of the wsa:Action SOAP header, or a value of "" (empty string). </description> <target>/wsil:testLog/wsil:messageLog/wsil:message[@type = 'request' and wsil:messageContents/soap11:Envelope/soap11:Header/wsa:Action]</target> <predicate> (wsil:messageContents/soap11:Envelope/soap11:Header/wsa:Action/text() = wsil:httpHeaders/wsil:httpHeader[fn:lower-case(@key) = 'soapaction']/@value) or (wsil:httpHeaders/wsil:httpHeader[fn:lower-case(@key) = 'soapaction']/@value = '') </predicate> <prescription level="mandatory"/> <errorMessage> A message did not specify a SOAPAction HTTP header with either a value that is an absolute URI that has the same value as the value of the wsa:Action SOAP header, or a value of "" (empty string). </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1146" 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> A non-faulting response must be sent to the endpoint referred to by the wsa:ReplyTo header or generate a fault instead. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [ (@type = 'response' and (some $resp in . satisfies some $req in /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request' and @conversation = $resp/@conversation] satisfies $req//wsa:* ) ) or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ] [wsil:messageContents/soap11:Envelope[not(soap11:Body/soap11:Fault)]] </target> <cotarget name="myRequestMsg"> /wsil:testLog/wsil:messageLog/wsil:message [ @type = 'request' and (if (not(./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID) ) then ( @conversation = $target/../../@conversation) else (./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = $target/soap11:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] )) ] </cotarget> <predicate> ((not($myRequestMsg/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:ReplyTo) or $myRequestMsg/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous') and $target[@type = 'response']/wsil:messageContents/soap11:Envelope/soap11:Header [ wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' or not(wsa:To )]) or ( $target/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:To = $myRequestMsg/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:ReplyTo/wsa:Address ) </predicate> <prescription level="mandatory"/> <errorMessage> A response message was sent to a destination other than the expected endpoint, i.e. different from wsa:ReplyTo in the request message. </errorMessage> <diagnostic>Complete message</diagnostic> </testAssertion> <testAssertion id="BP1152a" 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 message must be sent in the entity body of an HTTP request in a separate HTTP connection specified by the response EPR using the SOAP 1.1 Request Optional Response HTTP binding. </description> <!-- non-faulty response case --> <target> /wsil:testLog/wsil:messageLog/wsil:message [wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and wsil:messageContents/soap11:Envelope/soap11:Body[not(soap11:Fault)] and (some $req in /wsil:testLog/wsil:messageLog/wsil:message satisfies $req/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and $req/wsil:messageContents/soap11:Envelope/soap11:Header[ wsa:ReplyTo[1] and not(fn:contains(wsa:ReplyTo[1]/wsa:Address, 'http://www.w3.org/2005/08/addressing/anonymous'))] )] </target> <cotarget name="myRequestMsg"> /wsil:testLog/wsil:messageLog/wsil:message [wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = $target/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]] </cotarget> <predicate> ($target/@type = 'request') and ( $target/wsil:messageContents/soap11:Envelope/soap11:Header [ (wsa:To) and not (fn:contains(wsa:To[1], 'http://www.w3.org/2005/08/addressing/anonymous' )) ] ) </predicate> <prescription level="mandatory"/> <errorMessage> A response message was not sent in the entity body of an HTTP request in a separate HTTP connection as required by the (non-anonymous) response EPR. </errorMessage> <diagnostic>Complete message</diagnostic> </testAssertion> <testAssertion id="BP1152b" 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> The message must be sent in the entity body of an HTTP request in a separate HTTP connection specified by the response EPR using the SOAP 1.1 Request Optional Response HTTP binding. </description> <!-- faulty response case --> <target> /wsil:testLog/wsil:messageLog/wsil:message [wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and wsil:messageContents/soap11:Envelope/soap11:Body[soap11:Fault] and wsil:messageContents/soap11:Envelope/soap11:Header[not(wsa:Action) or not(fn:starts-with(wsa:Action,'http://www.w3.org/2005/08/addressing/' ))] and (some $req in /wsil:testLog/wsil:messageLog/wsil:message satisfies $req/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and $req/wsil:messageContents/soap11:Envelope/soap11:Header[ wsa:FaultTo[1] and not(fn:contains(wsa:FaultTo[1]/wsa:Address, 'http://www.w3.org/2005/08/addressing/anonymous'))] )] </target> <cotarget name="myRequestMsg"> /wsil:testLog/wsil:messageLog/wsil:message [wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = $target/wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]] </cotarget> <predicate> ($target/@type = 'request') and ( $target/wsil:messageContents/soap11:Envelope/soap11:Header [ (wsa:To) and not (fn:contains(wsa:To[1], 'http://www.w3.org/2005/08/addressing/anonymous' )) ] ) </predicate> <prescription level="mandatory"/> <errorMessage> A response message was not sent in the entity body of an HTTP request in a separate HTTP connection as required by the (non-anonymous) response EPR. </errorMessage> <diagnostic>Complete message</diagnostic> </testAssertion> <testAssertion id="BP1152c" 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 message must be sent in the entity body of an HTTP request in a separate HTTP connection specified by the response EPR using the SOAP 1.1 Request Optional Response HTTP binding. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[ not (wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault) and wsil:messageContents/soap11:Envelope/soap11:Header [(wsa:To) and not (fn:contains(wsa:To[1], 'http://www.w3.org/2005/08/addressing/anonymous' )) ]] </target> <predicate>$target/@type = 'request'</predicate> <prescription level="mandatory"/> <errorMessage> A message with a non-anonymous destination was not sent in the entity body of an HTTP request in a separate HTTP connection as required by the (non-anonymous) destination EPR. </errorMessage> <diagnostic>Complete message</diagnostic> </testAssertion> <testAssertion id="BP1002" 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> If it is a request, the arg #2 of POST is <HTTP/1.1> or <HTTP/1.0>. If absent, first line of the body is: HTTP-Version = HTTP/1.1. (or HTTP/1.0). If it is a response, it starts with <HTTP/1.1> or <HTTP/1.0> </description> <target>/wsil:testLog/wsil:messageLog/wsil:message[@type = 'request' and fn:contains(wsil:httpHeaders/wsil:requestLine/text(), 'HTTP')]</target> <predicate>fn:contains(wsil:httpHeaders/wsil:requestLine/text(), 'HTTP/1.0') or fn:contains(wsil:httpHeaders/wsil:requestLine/text(), 'HTTP/1.1') </predicate> <prescription level="mandatory"/> <errorMessage> The message that is sent over HTTP, is not sent using HTTP/1.1 or HTTP/1.0. </errorMessage> <diagnostic>All HTTP headers.</diagnostic> </testAssertion> <testAssertion id="BP1001" 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="BP1002"> <description> If it is a request, the arg #2 of POST is <HTTP/1.1>. If absent, first line of the body is: HTTP-Version = HTTP/1.1. If it is a response, it starts with <HTTP/1.1> </description> <target>/wsil:testLog/wsil:messageLog/wsil:message </target> <predicate>contains(wsil:httpHeaders/wsil:requestLine/text(), 'HTTP/1.1')</predicate> <prescription level="preferred"/> <reporting true="passed" false="warning"/> <errorMessage> The message is not sent using HTTP/1.1. </errorMessage> <diagnostic>All HTTP headers.</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="BP1006"> <description> The SOAPAction header contains a quoted string of any value, including "". </description> <target>/wsil:testLog/wsil:messageLog/wsil:message[@type = 'request'][wsil:httpHeaders/wsil:contentTypeHeader] </target> <predicate>every $par in wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter satisfies not($par/@quoted) or not($par/@key eq 'type' or fn:lower-case($par/@key) eq 'start-info' or $par/@key eq 'SOAPAction' or $par/@key eq 'boundary') or $par/@quoted = fn:true()</predicate> <!-- predicate>every $value in wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter/@value satisfies (starts-with($value, ") and ends-with($value, ")) or (starts-with($value, "''") and ends-with($value, "''"))</predicate --> <prescription level="mandatory"/> <errorMessage> SOAPAction HTTP header does not contain a quoted string. </errorMessage> <diagnostic>All HTTP headers.</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="false" id="BP1100"> <!-- preReq="BP1701" --> <description> The message uses a "200 OK" HTTP status code. </description> <target>//wsil:message[@type='response'][wsil:messageContents/soap11:Envelope/soap11:Body[not(soap11:Fault)]]</target> <predicate>contains(wsil:httpHeaders/wsil:requestLine, "200 OK")</predicate> <prescription level="preferred"/> <errorMessage> The envelope of the response message does not contain a soap11:Fault and the message does not use a "200 OK" HTTP status code. </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="false" id="BP1101"> <description> The response message, if successfully processed at HTTP level, is sent using either a "200 OK" or "202 Accepted" HTTP status code. </description> <target>//wsil:message[@type='response'][wsil:messageContents[not(soap11:Envelope)]][not (matches(wsil:httpHeaders/wsil:requestLine, "4[0-9][0-9]"))]</target> <predicate>contains(wsil:httpHeaders/wsil:requestLine, "200 OK") or contains(wsil:httpHeaders/wsil:requestLine, "202 Accepted")</predicate> <prescription level="preferred"/> <errorMessage> A response message without a SOAP message, is not using either a "200 OK" or "202 Accepted" HTTP status code, though successful at HTTP level. </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="BP2703"> <description> The wsdl:definitions is a well-formed XML 1.0 document. The wsdl:definitions namespace has value: http://schemas.xmlsoap.org/wsdl/. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[fn:prefix-from-QName(fn:node-name(*:definitions)) eq 'wsdl' or wsdl:definitions]</target> <predicate>fn:namespace-uri-from-QName(fn:node-name(./*:definitions)) eq 'http://schemas.xmlsoap.org/wsdl/' or ./*:bindingTemplate</predicate> <!-- p:match>. instance of schema-element(wsdl:definitions)</p:match --> <prescription level="mandatory"/> <errorMessage> The wsdl:definitions is not a well-formed XML 1.0 document, or WSDL definition does not conform to the schema located at http://schemas.xmlsoap.org/wsdl/soap/2003-02-11.xsd for some element using the WSDL-SOAP binding namespace, or does not conform to the schema located at http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd for some element using the WSDL namespace. </errorMessage> <diagnostic> Error message from the XML parser </diagnostic> </testAssertion> <testAssertion id="BP2704" 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/" xmlns:wsoap11="http://schemas.xmlsoap.org/wsdl/soap/" > <description> The wsdl:definitions using the WSDL SOAP binding namespace (prefixed "wsoap11" in this Profile) MUST be valid according to the XML Schema found at " <h:a href="http://schemas.xmlsoap.org/wsdl/soap/2004-08-24.xsd"> http://schemas.xmlsoap.org/wsdl/soap/2004-08-24.xsd</h:a>". </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[.//wsoap11:*] </target> <cotarget name="metadata">$target/../@schemaValid</cotarget> <predicate> $target/../@schemaValid = fn:true() </predicate> <prescription level="mandatory"/> <errorMessage> The wsdl:definitions is using the WSDL SOAP binding namespace (prefixed "wsoap11" in this Profile) in a way that is not valid according to the XML Schema found at " <h:a href="http://schemas.xmlsoap.org/wsdl/soap/2004-08-24.xsd"> http://schemas.xmlsoap.org/wsdl/soap/2004-08-24.xsd</h:a>". </errorMessage> <diagnostic> Error message from the XML parser </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="false" id="BP2704"> <description> The wsdl:definitions is a well-formed XML 1.0 document. The wsdl:definitions namespace has value: http://schemas.xmlsoap.org/wsdl/. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/descendant::*[namespace='http://schemas.xmlsoap.org/wsdl/soap/'] </target> <predicate>every $soap-binding in //*[namespace='http://schemas.xmlsoap.org/wsdl/soap12/' and parent::*[namespace='http://schemas.xmlsoap.org/wsdl/']] satisfies $soap-binding instance of schema-element(wsoap11:operation) or $soap-binding instance of schema-element(wsoap11:binding) or $soap-binding instance of schema-element(wsoap11:body) or $soap-binding instance of schema-element(wsoap11:fault) or $soap-binding instance of schema-element(wsoap11:header) or $soap-binding instance of schema-element(wsoap11:address)</predicate> <prescription level="mandatory"/> <errorMessage> The wsdl:definitions is not a well-formed XML 1.0 document, or WSDL definition does not conform to the schema located at http://schemas.xmlsoap.org/wsdl/soap/2003-02-11.xsd for some element using the WSDL-SOAP binding namespace, or does not conform to the schema located at http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd for some element using the WSDL namespace. </errorMessage> <diagnostic> Error message from the XML parser </diagnostic> </testAssertion --> <testAssertion id="BP2101" enable="true" 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/" xmlns="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" > <!-- preReq="BP2703" --> <description> Each wsdl:import statement is only used to import another WSDL description. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:import] </target> <predicate> every $wsdlImp in $target/wsdl:import satisfies some $wsdlFile in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[@filename=$wsdlImp/@location] satisfies ( (fn:namespace-uri($wsdlFile/*[1]) = 'http://schemas.xmlsoap.org/wsdl/' ) and ( fn:local-name($wsdlFile/*[1]) = 'definitions' ) ) </predicate> <prescription level="mandatory"/> <errorMessage> A wsdl:import element does not contain a reference to another WSDL description. </errorMessage> <diagnostic> wsdl:import element(s) that does not reference a WSDL description. </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="BP2803" preReq="BP2703"> <description> The "namespace" attribute's value is not a relative URI. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:import]</target> <!-- predicate> fn:count(fn:tokenize($target/@namespace,':')) gt 1</predicate --> <predicate>every $imp in wsdl:import[@namespace] satisfies (starts-with($imp/@namespace, 'http://') or starts-with($imp/@namespace, 'HTTP://') or starts-with($imp/@namespace, 'urn:') or starts-with($imp/@namespace, 'URN:') or starts-with($imp/@namespace, 'ft') or starts-with($imp/@namespace, 'FT'))</predicate> <prescription level="mandatory"/> <errorMessage>The wsdl:import element's "namespace" attribute value is a relative URI.</errorMessage> <diagnostic>Defective wsdl:import element.</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="BP2103"> <description> For the referenced definitions as well as all imported descriptions, The XML schema import statement is only used within an xsd:schema element. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[descendant::xsd:import]</target> <predicate>every $imp in descendant::xsd:import satisfies ($imp/ancestor::xsd:schema and $imp/ancestor::wsdl:types)</predicate> <prescription level="mandatory"/> <errorMessage> A XML schema import element was found outside of an xsd:schema element. </errorMessage> <diagnostic> Defective XML schema import element. </diagnostic> </testAssertion> <testAssertion id="BP2202" 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> All imported schema use UTF-8 or UTF-16 for the encoding. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types/xsd:schema/xsd:import] </target> <predicate> every $schImp in $target/wsdl:types/xsd:schema/xsd:import[@schemaLocation] satisfies ( some $schFile in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[@filename=$schImp/@schemaLocation] satisfies (not ($schFile/@encoding) or $schFile/@encoding = 'UTF-8' or $schFile/@encoding = 'UTF-16' or $schFile/@encoding = 'utf-8' or $schFile/@encoding = 'utf-16') ) </predicate> <prescription level="mandatory"/> <errorMessage> The XML declaration statement within an imported XML Schema does not use expected encoding (UTF-8 or UTF-16). </errorMessage> <diagnostic>XML declaration statement.</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="BP2098"> <description> The "location" attribute is specified for the wsdl:import element, and has a non-empty value. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:import</target> <predicate>@location and @location != '' </predicate> <prescription level="mandatory"/> <errorMessage> A wsdl:import element does not have a "location" attribute, or has an empty value for the location attribute. </errorMessage> <diagnostic>Defective wsdl:import element.</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="BP2105"> <description> wsdl:import elements occur either as first children elements in the WSDL namespace of the wsdl:defintitions element, or they are only preceded by wsdl:documentation elements. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:import] </target> <predicate> not(wsdl:import/preceding-sibling::wsdl:*[(local-name-from-QName(node-name(.)) != 'documentation') and (local-name-from-QName(node-name(.)) != 'import')]) </predicate> <prescription level="mandatory"/> <errorMessage> A wsdl:import element in the WSDL namespace under the wsdl:definitions element, is preceded by child elements other than wsdl:documentation elements. </errorMessage> <diagnostic> Display the WSDL import element(s) that failed the assertion. </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="BP2018" preReq="BP2703"> <description> The wsdl:types elements occur either as first children in the WSDL namespace of the wsdl:definitions element, or they are only preceded by wsdl:documentation element(s) and/or wsdl:import(s) element(s). </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types] </target> <predicate> not(wsdl:types/preceding-sibling::wsdl:*[(local-name-from-QName(node-name(.)) != 'documentation') and (local-name-from-QName(node-name(.)) != 'import') and (local-name-from-QName(node-name(.)) != 'types')]) </predicate> <prescription level="mandatory"/> <errorMessage> wsdl:types element(s) in the WSDL namespace of the wsdl:definitions element were preceded by child elements other than wsdl:documentation or wsdl:import elements. </errorMessage> <diagnostic/> </testAssertion> <testAssertion id="BP2700" 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/" > <description> The wsdl:definitions is a well-formed XML 1.0 document. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions</target> <cotarget name="metadata">$target/../@validXml</cotarget> <predicate>../@validXml=fn:true()</predicate> <prescription level="mandatory"/> <errorMessage> The wsdl:definitions is not a well-formed XML 1.0 document. </errorMessage> <diagnostic> Error message from the XML parser </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="false" id="BP2034" preReq="BP2703"> <description> The candidate description does not contain the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions </target> <predicate>not(descendant-or-self::*/namespace::node()[1] = 'xmlns:xml="http://www.w3.org/XML/1998/namespace"')</predicate> <prescription level="preferred"/> <errorMessage> The candidate description contains the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace". </errorMessage> <diagnostic/> </testAssertion> <testAssertion id="BP2201" 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 XML declaration statement uses UTF-8 or UTF-16 for the encoding. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions </target> <cotarget name="metadata">$target/../@encoding</cotarget> <predicate>fn:starts-with(fn:lower-case(../@encoding), 'utf-8') or fn:starts-with(fn:lower-case(../@encoding), 'utf-16') </predicate> <prescription level="mandatory"/> <errorMessage> XML declaration statement within WSDL document does not use expected encoding (UTF-8 or UTF-16). </errorMessage> <diagnostic>XML declaration statement.</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="BP2104" preReq="BP2101"> <description> The targetNamespace attribute on the wsdl:definitions element for the imported WSDL description has the same value as the namespace attribute on the wsdl:import element that imported the WSDL description. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:import</target> <predicate>some $wimp in . satisfies some $descFile in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[fn:ends-with($wimp/@location, @filename)] satisfies ($descFile/wsdl:definitions/@targetNamespace = $wimp/@namespace) </predicate> <prescription level="mandatory"/> <errorMessage> The targetNamespace attribute on the wsdl:definitions element for an imported WSDL description does not have the same value as the namespace attribute on the wsdl:import element that imported the WSDL description. </errorMessage> <diagnostic>wsdl:import element.</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="false" id="BP2123"> <description> Contained WSDL extension elements do not use the wsdl:required attribute value of "true". </description> <!-- p:target> //wsdl:definitions/descendant::*[namespace-uri(.) != 'http://schemas.xmlsoap.org/wsdl/' and (./ancestor::wsdlortType or ./ancestor::wsdl:binding or ./ancestor::wsdl:message or ./ancestor::wsdl:types or ./ancestor::wsdl:import)] </p:context --> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/descendant::* [namespace-uri(.) != 'http://schemas.xmlsoap.org/wsdl/' and not(namespace-uri(.) = 'http://schemas.xmlsoap.org/wsdl/soap/' and (local-name(.) = 'binding' or local-name(.) = 'operation' or local-name(.) = 'body' or local-name(.) = 'header' or local-name(.) = 'headerfault' or local-name(.) = 'fault' or local-name(.) = 'address')) and (./ancestor::wsdl:portType or ./ancestor::wsdl:binding or ./ancestor::wsdl:message or ./ancestor::wsdl:types or ./ancestor::wsdl:import)]</target> <predicate>not(@wsdl:required = fn:true()</predicate> <prescription level="preferred"/> <errorMessage> An extension element within a WSDL element that claims conformance to the Basic Profile has a wsdl:required attribute with a value of "true". </errorMessage> <diagnostic> Display the extension element that failed the assertion. </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="BP2416"> <description>A DESCRIPTION MUST NOT use QName references to WSDL components in namespaces that have been neither imported, nor defined in the referring WSDL document. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions</target> <predicate>(every $qref in $target/wsdl:service/wsdl:port/@binding satisfies ( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies ( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) and (every $qref in $target/wsdl:binding/@type satisfies ( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies ( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) and (every $qref in $target/wsdl:portType/wsdl:operation/wsdl:input/@message satisfies ( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies ( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) and (every $qref in $target/wsdl:portType/wsdl:operation/wsdl:output/@message satisfies ( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies ( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) and (every $qref in $target/wsdl:portType/wsdl:operation/wsdl:fault/@message satisfies ( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies ( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) and (every $qref in $target/wsdl:binding/wsdl:operation/wsdl:*/wsoap11:header/@message satisfies ( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies ( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) and (every $qref in $target/wsdl:binding/wsdl:operation/wsdl:*/wsoap11:headerfault/@message satisfies ( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies ( ($target/@targetNamespace = $ns ) or (some $wimp in $target/wsdl:import satisfies $wimp/@namespace = $ns ) ) ) ) </predicate> <prescription level="mandatory"/> <errorMessage>This DESCRIPTION uses QName references to WSDL components in namespaces that are neither imported, nor defined in the referring WSDL document </errorMessage> <diagnostic>Defective QName(s).</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="BP2417"> <description>A QName reference to a Schema component in a DESCRIPTION MUST use the namespace defined in the <h:code>targetNamespace</h:code> attribute on the <h:code>xsd:schema</h:code> element, or to a namespace defined in the <h:code>namespace</h:code> attribute on an <h:code>xsd:import</h:code> element within the <h:code>xsd:schema</h:code> element. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions</target> <predicate>(every $qref in $target/wsdl:message/wsdl:part/@element satisfies ( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies ( ($target/wsdl:types/xsd:schema/@targetNamespace = $ns ) or (some $simp in $target/wsdl:types/xsd:schema/xsd:import satisfies $simp/@namespace = $ns ) ) ) ) and (every $qref in $target/wsdl:message/wsdl:part/@type satisfies ( some $ns in fn:namespace-uri-from-QName(fn:resolve-QName (xsd:string($qref),$qref/..) ) satisfies ( ($target/@targetNamespace = $ns ) or (some $simp in $target/wsdl:types/xsd:schema/xsd:import satisfies $simp/@namespace = $ns ) or ($ns = 'http://www.w3.org/2001/XMLSchema' ) ) ) ) </predicate> <prescription level="mandatory"/> <errorMessage>A QName reference to a Schema component in a DESCRIPTION does not use the namespace defined in the <h:code>targetNamespace</h:code> attribute on the <h:code>xsd:schema</h:code> element, or a namespace defined in the <h:code>namespace</h:code> attribute on an <h:code>xsd:import</h:code> element within the <h:code>xsd:schema</h:code> element. </errorMessage> <diagnostic>Defective QName(s).</diagnostic> </testAssertion> <testAssertion id="BP2106" 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> In a DESCRIPTION the schemaLocation attribute of an xsd:import element MUST NOT resolve to any document whose root element is not "schema" from the namespace "http://www.w3.org/2001/XMLSchema". </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types/xsd:schema/xsd:import] </target> <predicate> every $schemaImp in $target/wsdl:types/xsd:schema/xsd:import[@schemaLocation] satisfies some $impSchemaFile in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[@filename=$schemaImp/@schemaLocation] satisfies ( fn:namespace-uri($impSchemaFile/*[1])='http://www.w3.org/2001/XMLSchema' and fn:local-name($impSchemaFile/*[1])='schema' ) </predicate> <prescription level="mandatory"/> <errorMessage> xsd:import element does not resolve to document whose root element is not "schema" from xsd namespace </errorMessage> <diagnostic> Defective XML schema import element. </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="BP2107"> <description> The xsd:schema element contains a targetNamespace attribute with a valid and non-null value unless the xsd:schema element has xsd:import and/or xsd:annotation as its only child element(s). </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types/xsd:schema] </target> <predicate>wsdl:types/xsd:schema[@targetNamespace != '' or (count(xsd:import) + count(xsd:annotation)) = count(child::*)]</predicate> <prescription level="mandatory"/> <errorMessage> A xsd:schema element contained in a wsdl:types element does not have a targetNamespace attribute with a valid and non-null value, while having child element(s) other than xsd:import or xsd:annotation. </errorMessage> <diagnostic> Defective xsd:schema element(s). </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="BP2108b"> <description> The type soapenc:Array does not appear in these declarations, and the wsdl:arrayType attribute is not used in the type declaration. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:types[xsd:schema] </target> <predicate>not (xsd:schema[descendant::xsd:extension/@base = "soapenc:Array" or descendant::xsd:restriction/@base = "soapenc:Array"])</predicate> <prescription level="mandatory"/> <errorMessage> An Array declaration uses - restricts or extends - the soapenc:Array type, or the wsdl:arrayType attribute is used in the type declaration. </errorMessage> <diagnostic>Defective declaration(s).</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="BP2108a"> <description> The type soapenc:Array does not appear in these declarations, and the wsdl:arrayType attribute is not used in the type declaration. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:types[xsd:schema]</target> <predicate>not (xsd:schema/descendant::*/@wsdl:arrayType)</predicate> <prescription level="mandatory"/> <errorMessage> An Array declaration uses - restricts or extends - the soapenc:Array type, or the wsdl:arrayType attribute is used in the type declaration. </errorMessage> <diagnostic>Defective declaration(s).</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="false" id="BP2110"> <description> The declaration does not use the naming convention ArrayOfXXX. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types/xsd:schema] </target> <predicate>not (wsdl:types/xsd:schema/descendant::xsd:element[fn:starts-with(@name, 'ArrayOf')])</predicate> <prescription level="preferred"/> <errorMessage> A declaration is using the convention ArrayOfXXX. </errorMessage> <diagnostic>Defective declaration(s).</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="BP1204"> <!-- preReq="BP1701" --> <description> The soap11:Body of the envelope does not contain the soapenc:arrayType attribute. </description> <target>//soap11:Envelope</target> <predicate>not (descendant::*[@soapenc:arrayType])</predicate> <prescription level="mandatory"/> <errorMessage> The soap11:Body of an envelope contains the soapenc:arrayType attribute. </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="false" id="BP2124"> <description> No two global element declarations share the same qualified name. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:types/xsd:schema </target> <predicate>count (xsd:element[@name = preceding-sibling::element/@name]) = 0</predicate> <prescription level="preferred"/> <errorMessage> Two or more global element declarations share the same qualified name. </errorMessage> <diagnostic> The wsdl:operation elements containing the repeated global element declarations. </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="false" id="BP2125"> <description> No two type definitions share the same qualified name. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:types/xsd:schema </target> <predicate>(count (xsd:ComplexType[@name = preceding-sibling::ComplexType/@name]) = 0) and (count (xsd:SimpleType[@name = preceding-sibling::SimpleType/@name]) = 0)</predicate> <prescription level="preferred"/> <errorMessage> Two or more type definitions share the same qualified name. </errorMessage> <diagnostic> The elements containing the repeated qualified name. </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="BP2111" preReq="BP2017"> <description> If the "parts" attribute is present, then the wsoap11:body element(s) have at most one part listed in the parts attribute. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[not(.//wsoap11:*[@style = 'rpc'])] </target> <predicate>not(.//wsoap11:body[@parts and contains(@parts," ")])</predicate> <!-- target> //wsdl:definitions/wsdl:binding[not(descendant::wsoap11:body/@use != 'literal') and (count(descendant::wsoap11:body) = count(descendant::wsoap11:body/@use)) and not(descendant::wsoap11:*/@style != 'document')] </context --> <!-- match>not(descendant::wsoap11:body[@parts and contains(@parts," ")])</match --> <prescription level="mandatory"/> <errorMessage> One or more wsoap11:body element(s) in a document-literal soabinding does not have at most one part listed in the parts attribute. </errorMessage> <diagnostic> Defective wsoap11:body element(s). </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="BP2119" preReq="BP2017"> <!-- preReq="BP2404" --> <description> If it does not specify the parts attribute on a wsoap11:body element, the corresponding abstract wsdl:message defines zero or one wsdl:part. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[not(.//wsoap11:*[@style = 'rpc'])] </target> <predicate>every $sbody in wsdl:operation//wsoap11:body[not(@parts)] satisfies some $msgname in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $sbody/../../@name]/*[local-name(.) = local-name($sbody/..)]/@message satisfies count(/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = $msgname]/wsdl:part) le 1 </predicate> <prescription level="mandatory"/> <errorMessage> A document-literal binding which does not specify the parts attribute, has more than one wsdl:part in the associated wsdl:message element. </errorMessage> <diagnostic>Defective wsdl:binding element.</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="BP2013" preReq="BP2017"> <description> The binding (in wsoap11:body elements) only refers to part elements that have been defined using the "type" attribute </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']]</target> <!-- target> //wsdl:definitions/wsdl:binding[not(.//wsoap11:body/@use != 'literal') and (count(.//wsoap11:body) = count(.//wsoap11:body/@use)) and not(.//wsoap11:*/@style != 'rpc')] </context --> <predicate>every $sbody in wsdl:operation//wsoap11:body satisfies some $msgname in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $sbody/../../@name]/*[local-name(.) = local-name($sbody/..)]/@message satisfies every $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = $msgname]/wsdl:part satisfies $mpart/@type or $sbody/@parts and not(contains($sbody/@parts, $mpart/@name)) </predicate> <!-- match>every $sbody in wsdl:operation//wsoap11:body satisfies some $msgname in //wsdl:portType/wsdl:operation[@name = $sbody/../../@name]/*[local-name(.) = local-name($sbody/..)]/@message satisfies every $mpart in //wsdl:definitions/wsdl:message[@name = $msgname]/wsdl:part satisfies $mpart/@type or $sbody/@parts and not(contains($sbody/@parts, $mpart/@name))</match --> <prescription level="mandatory"/> <errorMessage> soabinding (in wsoap11:body elements) refers to part(s) that do not have the "type" attribute. </errorMessage> <diagnostic> {binding}{message with failed part} </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="false" id="BP1211aOLD"> <!-- preReq="BP1701" --> <description> Part accessor elements in the envelope do not have an xsi:nil attribute with a value of "1" or "true". </description> <target>/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[../../@type='request' and soap11:Body/*]</target> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[@name = local-name-from-QName(node-name($target/soap11:Body/*[1]))] </cotarget> <!-- cotarget name="mybinding">//wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsdl:operation/@name = local-name-from-QName(node-name($target/soap11:Body/*))] </cotarget --> <prerequisite>not($myOpBinding/..//wsoap11:body/@use != 'literal') and (count($myOpBinding/..//wsoap11:body) = count($myOpBinding/..//wsoap11:body/@use)) and not($myOpBinding/..//wsoap11:*/@style != 'rpc') </prerequisite> <!-- prerequisite>not($mybinding//wsoap11:body/@use != 'literal') and (count($mybinding//wsoap11:body) = count($mybinding//wsoap11:body/@use)) and not($mybinding//wsoap11:*/@style != 'rpc') </prerequisite --> <predicate>not (soap11:Body/*/*[attribute::xsi:nil = '1' or attribute::xsi:nil = fn:true()])</predicate> <prescription level="mandatory"/> <errorMessage> Envelope referenced by an rpc-literal binding has part accessor elements with an xsi:nil attribute with a value of "1" or "true". </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="false" id="BP2112"> <description> No wsdl:part referred by such a wsoap11:body element is defined using the "element" attribute. </description> <target> For a candidate wsdl:binding, with a style "rpc" attribute and containing at least a wsoap11:body element </target> <predicate>TBD</predicate> <prescription level="permitted"/> <errorMessage> The referred wsdl:part element uses the "element" attribute in an rpc-literal wsoap11:body. </errorMessage> <diagnostic> {wsoap11:body}{wsdl:part element(s)} </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="BP2012" preReq="BP2017"> <!-- preReq="BP2404" --> <description> A doc//wsoap11:body/@use != 'literal') and (count($myOpBinding/..//wsoap11:body) = count($myOpBinding/..//wsoap11:body/@use)) and not($myOpBinding/..//wsoap11:*/@style = 'rpc') and $myOpBinding/wsdl:output/wsoap11:body[@parts and (@parts = '' or @parts = ' ' )] ument-literal binding only refers in wsoap11:body elements to part elements that have been defined using the "element" attribute. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[not(.//wsoap11:*[@style = 'rpc'])] </target> <predicate>every $sbody in wsdl:operation//wsoap11:body satisfies some $msgname in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $sbody/../../@name]/*[local-name(.) = local-name($sbody/..)]/@message satisfies every $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = $msgname]/wsdl:part satisfies $mpart/@element or $sbody/@parts and not(contains($sbody/@parts, $mpart/@name))</predicate> <prescription level="mandatory"/> <errorMessage> The binding (in wsoap11:body elements) refers to part(s) of a soap11:Body element that do not have the "element" attribute. </errorMessage> <diagnostic> wsoap11:body element(s) that have non "element" parts attributes. </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="BP1212a"> <!-- preReq="BP1701" --> <!-- rpc-lit / request case --> <description> The Envelope of request message contains exactly one part accessor element for each of the wsdl:part elements bound to the envelope's corresponding wsoap11:body element. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[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> some $mbody in ./soap11:Body satisfies some $dbody in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[@name = fn:local-name($mbody/*[1])]/wsdl:input/wsoap11:body satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = fn:local-name($mbody/*[1])]/*[fn:local-name(.) = 'input'] satisfies some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = fn:tokenize(xsd:string($dopmsg/@message), ':' )[fn:last()]] satisfies ( not(wsdl:part) and not($mbody/*/* )) or (every $mpart in $dmesg/wsdl:part satisfies fn:count($mbody/*/*[fn:local-name(.) = $mpart/@name]) eq 1 or ($dbody/@parts and not(contains($dbody/@parts, $mpart/@name)))) </predicate> <prescription level="mandatory"/> <errorMessage> The content of the soap11:Body element of request message is inconsistent with its description. The envelope does not contain exactly one part accessor element for each of the wsdl:part elements bound to the envelope's corresponding wsoap11:body element. </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="BP1212b"> <!-- preReq="BP1701" --> <!-- rpc-lit / response case --> <description> The Envelope of response message contains exactly one part accessor element for each of the wsdl:part elements bound to the envelope's corresponding wsoap11:body element. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap11:Envelope[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 [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))] </cotarget> <predicate> some $mbody in ./soap11:Body satisfies some $dbody in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[fn:string-join((@name, 'Response'),'') = fn:local-name($mbody/*[1])]/wsdl:output/wsoap11:body satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[fn:string-join((@name, 'Response'),'') = fn:local-name($mbody/*[1])]/*[fn:local-name(.) = 'output' ] satisfies some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = fn:tokenize(xsd:string($dopmsg/@message), ':' )[fn:last()] and wsdl:part/@type] satisfies every $mpart in $dmesg/wsdl:part satisfies fn:count($mbody/*/*[fn:local-name(.) = $mpart/@name]) eq 1 or ($dbody/@parts and not(contains($dbody/@parts, $mpart/@name))) </predicate> <prescription level="mandatory"/> <errorMessage> The content of the soap11:Body element of resonse message is inconsistent with its description. The envelope does not contain exactly one part accessor element for each of the wsdl:part elements bound to the envelope's corresponding wsoap11:body element. </errorMessage> <diagnostic/> </testAssertion> <testAssertion id="BP1213a" 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 request message envelope has no element content in the soap11:Body element if the value of the parts attribute of the wsoap11:body is an empty string in the corresponding doc-literal description. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Request' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <prerequisite> some $myOpBind in $myOpBinding satisfies ( $myOpBind/../wsoap11:binding[ not (@style = 'rpc' )] and $myOpBind/wsoap11:operation[ not (@style = 'rpc' )] and $myOpBind/wsdl:input/wsoap11:body[@parts and (@parts = '' or @parts = ' ' )] ) </prerequisite> <predicate>count(./soap11:Body/*) eq 0</predicate> <prescription level="mandatory"/> <errorMessage>The request message soap11:Body element must be empty when, in the corresponding doc-literal description, the value of the parts attribute of wsoap11:body is an empty string.</errorMessage> <diagnostic>SOAP envelope</diagnostic> </testAssertion> <testAssertion id="BP1213b" 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 response message envelope has no element content in the soap11:Body element if the value of the parts attribute of the wsoap11:body is an empty string in the corresponding doc-literal description. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <!-- assume bp2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Response' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <prerequisite> some $myOpBind in $myOpBinding satisfies ( $myOpBind/../wsoap11:binding[ not (@style = 'rpc' )] and $myOpBind/wsoap11:operation[ not (@style = 'rpc' )] and $myOpBind/wsdl:input/wsoap11:body[@parts and (@parts = '' or @parts = ' ' )] ) </prerequisite> <predicate>count(./soap11:Body/*) eq 0</predicate> <prescription level="mandatory"/> <errorMessage>The response message soap11:Body element must be empty when, in the corresponding doc-literal description, the value of the parts attribute of wsoap11:body is an empty string.</errorMessage> <diagnostic>SOAP envelope</diagnostic> </testAssertion> <testAssertion id="BP1214a" 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 request message envelope does not contain any part accessor elements if the value of the parts attribute of the wsoap11:body is an empty string in the corresponding rpc-literal description </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[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> <prerequisite> $myOpBinding/wsdl:input/wsoap11:body[@parts and (@parts = '' or @parts = ' ' )] </prerequisite> <predicate>count(./soap11:Body/*/*) eq 0</predicate> <prescription level="mandatory"/> <errorMessage> The content of the request message soap11:Body element is inconsistent with its description. The envelope must not have any part accessor elements when, in the corresponding rpc-literal description, the value of the parts attribute of wsoap11:body is an empty string. </errorMessage> <diagnostic>SOAP envelope</diagnostic> </testAssertion> <!-- NEXT: --> <testAssertion id="BP1214b" 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 response message envelope does not contain any part accessor elements if the value of the parts attribute of the wsoap11:body is an empty string in the corresponding rpc-literal description </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/ soap11:Envelope[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 [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))] </cotarget> <prerequisite> $myOpBinding/wsdl:output/wsoap11:body[@parts and (@parts = '' or @parts = ' ' )] </prerequisite> <predicate>count(./soap11:Body/*/*) eq 0</predicate> <prescription level="mandatory"/> <errorMessage> The content of the response message soap11:Body element is inconsistent with its description. The envelope must not have any part accessor elements when, in the corresponding rpc-literal description, the value of the parts attribute of wsoap11:body is an empty string. </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="BP2113"> <description> When they contain references to message parts, the wsoap11:header, wsoap11:headerfault and wsoap11:fault elements only refer to wsdl:part element(s) that have been defined using the "element" attribute. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:header[@part] or .//wsoap11:headerfault[@part] or .//wsdl:fault/wsoap11:fault[@name] ]</target> <predicate>(every $shhf in wsdl:operation//wsoap11:*[local-name(.) = 'header' or local-name(.) = 'headerfault'] satisfies some $msguse in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $shhf/../../@name]/*[local-name(.) = local-name($shhf/..)] satisfies every $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = local-name-from-QName(resolve-QName(xsd:string($msguse/@message),$msguse))]/wsdl:part satisfies $mpart/@element or $shhf/@part and not($shhf/@part = $mpart/@name)) and (every $sf in wsdl:operation/wsdl:fault/wsoap11:fault satisfies some $msguse in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $sf/../../@name]/wsdl:fault[@name = $sf/@name] satisfies every $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = local-name-from-QName(resolve-QName(xsd:string($msguse/@message),$msguse))]/wsdl:part satisfies $mpart/@element) </predicate> <prescription level="mandatory"/> <errorMessage> The wsoap11:header, wsoap11:headerfault or wsoap11:fault elements refer to wsd:part element(s) that are not defined using only the "element" attribute. </errorMessage> <diagnostic> Defective wsdl:binding and wsdl:part elements. </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="BP2114"> <!-- preReq="BP2118" --> <description> Every wsdl:part from each wsdl:message in the associated wsdl:portType is referenced either by the wsoap11:body, wsoap11:header, wsoap11:fault, or wsoap11:headerfault. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding</target> <predicate>some $bing in self::node() satisfies every $op in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType[local-name-from-QName(resolve-QName(xsd:string($bing/@type),$bing)) = @name]/wsdl:operation satisfies some $bop in $bing/wsdl:operation[@name = $op/@name] satisfies ( ( ($bop/wsdl:input/wsoap11:body[not(@parts)]) or ( every $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = local-name-from-QName(resolve-QName(xsd:string($op/wsdl:input/@message),$op/wsdl:input))]/wsdl:part satisfies ( fn:exists(fn:index-of(tokenize($bop/wsdl:input/wsoap11:body/@parts,'\s+'), $mpart/@name)) or (some $extra in $bing/wsdl:operation/wsdl:*/wsoap11:*[local-name-from-QName(resolve-QName(xsd:string(@message),.)) = $mpart/../@name] satisfies $mpart/@name = $extra/@part )) ) ) and ( not($op/wsdl:output) or ($bop/wsdl:output/wsoap11:body[not(@parts)]) or ( every $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = local-name-from-QName(resolve-QName(xsd:string($op/wsdl:output/@message),$op/wsdl:output))]/wsdl:part satisfies ( fn:exists(fn:index-of(tokenize($bop/wsdl:output/wsoap11:body/@parts,'\s+'), $mpart/@name)) or (some $extra in $bing/wsdl:operation/wsdl:*/wsoap11:*[local-name-from-QName(resolve-QName(xsd:string(@message),.)) = $mpart/../@name] satisfies $mpart/@name = $extra/@part )) ) ) and ( not($op/wsdl:fault) or (every $flt in $op/wsdl:fault satisfies $flt/@name = $bop/wsdl:fault/wsoap11:fault/@name) ) ) </predicate> <prescription level="mandatory"/> <errorMessage> A wsdl:binding does not bind every wsdl:part of a wsdl:message in the wsdl:portType to which it refers to one of wsoap11:body, wsoap11:header, wsoap11:fault or wsoap11:headerfault. </errorMessage> <diagnostic> {Defective wsdl:binding element}{message with part(s) unbound} </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="BP2115" > <description> An "element" attribute on any wsdl:part element refers to a global element declaration. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part/@element]</target> <predicate> every $part in wsdl:part[@element] satisfies some $ged in //xsd:schema/xsd:element satisfies ( ( $ged/../@targetNamespace = namespace-uri-from-QName( resolve-QName(xsd:string($part/@element),$part)) or (not ($ged/../@targetNamespace) and not (namespace-uri-from-QName( resolve-QName(xsd:string($part/@element),$part)) ) ) ) and local-name-from-QName(resolve-QName(xsd:string($part/@element),$part)) = $ged/@name ) </predicate> <prescription level="mandatory"/> <errorMessage> A wsdl:message element containing a wsdl:part element that uses the "element" attribute does not refer, via that attribute, to a global element declaration. </errorMessage> <diagnostic>Defective wsdl:message element.</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/" id="BP1012a" enable="true" > <!-- rpc-lit / request case --> <description> The content of the request message envelope matches the definition in the WSDL document for rpc-lit binding. The order of the part elements in the soap11:Body of the wired message, is same as that of the wsdl:partS, in the wsdl:message that describes it for each of the wsdl:part elements bound to the envelope's corresponding wsoap11:body element. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[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> some $mbody in ./soap11:Body satisfies some $dbody in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[@name = fn:local-name($mbody/*[1])]/wsdl:input/wsoap11:body satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = fn:local-name($mbody/*[1])]/*[fn:local-name(.) = 'input'] satisfies some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = fn:tokenize(xsd:string($dopmsg/@message), ':' )[fn:last()]] satisfies ( not(wsdl:part) and not($mbody/*/* )) or (every $tst in ( for $i in 1 to fn:count($mbody/*/*) return //wsdl:message/wsdl:part[not($dbody/@parts and not(fn:contains($dbody/@parts,@name)))][$i]/@name = fn:local-name($mbody/*/*[$i]) ) satisfies $tst = fn:true()) </predicate> <prescription level="mandatory"/> <errorMessage> The content of the request message envelope does not match the wsdl:message definition for rpc/lit binding. The order of parts in soap11:Body does not match the order of wsdl:partS in wsdl:message that describes it for each of the wsdl:part elements bound to the envelope's corresponding wsoap11:body element. </errorMessage> <diagnostic> Non-matching WSDL operation and 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/" id="BP1012b" enable="true" > <description> The content of the response message envelope matches the definition in the WSDL document for rpc-lit binding. The order of the part elements in the soap11:Body of the wired message, is same as that of the wsdl:partS, in the wsdl:message that describes it for each of the wsdl:part elements bound to the envelope's corresponding wsoap11:body element. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap11:Envelope[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 [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))] </cotarget> <predicate> some $mbody in ./soap11:Body satisfies some $dbody in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[fn:string-join((@name, 'Response'),'') = fn:local-name($mbody/*[1])]/wsdl:output/wsoap11:body satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[fn:string-join((@name, 'Response'),'') = fn:local-name($mbody/*[1])]/*[fn:local-name(.) = 'output' ] satisfies some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = fn:tokenize(xsd:string($dopmsg/@message), ':' )[fn:last()] and wsdl:part/@type] satisfies every $tst in ( for $i in 1 to fn:count($mbody/*/*) return //wsdl:message/wsdl:part[not($dbody/@parts and not(fn:contains($dbody/@parts,@name)))][$i]/@name = fn:local-name($mbody/*/*[$i]) ) satisfies $tst = fn:true() </predicate> <prescription level="mandatory"/> <errorMessage> The content of the response message envelope does not match the wsdl:message definition for rpc/lit binding. The order of parts in soap11:Body does not match the order of wsdl:partS in wsdl:message that describes it for each of the wsdl:part elements bound to the envelope's corresponding wsoap11:body element. </errorMessage> <diagnostic> Non-matching WSDL operation and 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="BP2208" preReq="BP2703"> <description> The wsdl:operation element is either a WSDL request/response or a one-way operation (no Notification or Sollicit-Response). </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation </target> <predicate>not(*[local-name-from-QName(node-name(.)) = 'output' and position() = 1])</predicate> <!-- predicate>not(wsdl:output) or (wsdl:output[position() != 1])</predicate --> <prescription level="mandatory"/> <errorMessage> wsdl:operation was not a request/response or one-way operation. </errorMessage> <diagnostic>Operation.</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="BP2010" preReq="BP2703"> <description> name attributes of Operations are unique in the wsdl:portType definition </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType </target> <predicate> not(wsdl:operation[@name = preceding-sibling::*/@name]) and not(wsdl:operation[@name = following-sibling::*/@name]) </predicate> <prescription level="mandatory"/> <errorMessage> name attributes are not unique within the portType definition. </errorMessage> <diagnostic> list of duplicate name(s) and of elements that use them. </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="BP2014" > <description> The parameterOrder attribute omits at most 1 part from an output wsdl:message. </description> <target>/wsil:testLog//wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@parameterOrder] </target> <predicate>for $op in self::node() return count( for $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/*/wsdl:message[@name = $op/wsdl:output/@message]/wsdl:part return index-of(tokenize($op/@parameterOrder,'\s+'), $mpart/@name)) ge count(/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/*/wsdl:message[@name = $op/wsdl:output/@message]/wsdl:part) - 1</predicate> <prescription level="mandatory"/> <errorMessage> An operation associated with an rpc-literal binding has a parameterOrder attribute that omits more than 1 part. </errorMessage> <diagnostic> {defective portType}{output wsdl: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="BP2116" > <description> The wsdl:message element does not contain part elements that use both "type" and "element" attributes. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part]</target> <predicate>not(wsdl:part[@type and @element])</predicate> <prescription level="mandatory"/> <errorMessage> A wsdl:message element has at least one wsdl:part element that contains both type and element attributes. </errorMessage> <diagnostic>Defective wsdl:message element.</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="BP2402" preReq="BP2703"> <description> The wsdl:binding element has a wsoap11:binding child element. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding</target> <predicate>child::wsoap11:binding</predicate> <prescription level="mandatory"/> <errorMessage> The wsdl:binding element does not use a wsoap11:binding element as defined in section "3 SOAP Binding." of the WSDL 1.1 specification. </errorMessage> <diagnostic>wsdl:binding.</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="BP2403" preReq="BP2703 BP2402"> <description> The contained soabinding element has a "transport" attribute </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsoap11:binding]</target> <predicate>wsoap11:binding[@transport]</predicate> <prescription level="mandatory"/> <errorMessage> Transport attribute of the soabinding does not exist. </errorMessage> <diagnostic>soabinding element.</diagnostic> </testAssertion> <testAssertion id="BP2404" 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="BP2703 BP2402 BP2403"> <description> The contained soabinding element has a "transport" attribute, which has value: http://schemas.xmlsoap.org/soap/http. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsoap11:binding]</target> <predicate>wsoap11:binding[@transport = 'http://schemas.xmlsoap.org/soap/http']</predicate> <prescription level="mandatory"/> <errorMessage> Transport attribute of the soabinding does not contain http://schemas.xmlsoap.org/soap/http. </errorMessage> <diagnostic>soabinding element.</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="BP2017" preReq="BP2404"> <description> The wsdl:binding is either an rpc-literal binding or a document-literal binding. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsoap11:binding]</target> <predicate>not(.//wsoap11:body/@use != 'literal') and (count(.//wsoap11:body) = count(.//wsoap11:body/@use)) and ((not(.//wsoap11:*/@style != 'rpc') and not(.//wsoap11:operation[not(@style) and not(../../wsoap11:binding/@style)])) or (not(.//wsoap11:*/@style != 'document'))) </predicate> <!-- match>@style="document" or @style="rpc"not(.//wsoap11:body/@use != 'literal') and (count(.//wsoap11:body) = count(.//wsoap11:body[@use])) and ((not(.//wsoap11:*/@style != 'rpc') and not(.//wsoap11:operation[not(@style) and not(../../wsoap11:binding/@style)])) or (not(.//wsoap11:*/@style != 'document')))</match --> <prescription level="mandatory"/> <errorMessage> The "style" attribute of an operation in soabinding, does not have the same value of "document" or "rpc", as other operations of the binding. </errorMessage> <diagnostic>defective soabinding element.</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="BP2406" preReq="BP2703"> <description> The use attribute has a value of "literal". </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsoap11:binding] </target> <predicate>not(.//*[@use and @use != "literal"])</predicate> <!-- target> /wsdl:binding//wsoap11:body | //wsdl:binding//wsoap11:fault | //wsdl:binding//wsoap11:header | //wsdl:binding//wsoap11:headerfault </context --> <!-- match>@use="literal"</match --> <prescription level="mandatory"/> <errorMessage> The use attribute of a wsoap11:body, wsoap11:fault, wsoap11:header and wsoap11:headerfault does not have value of "literal". </errorMessage> <diagnostic> Defective wsoap11:body, wsoap11:fault, wsoap11:header, or wsoap11:headerfault elements. </diagnostic> </testAssertion> <testAssertion id="BP2705" 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/" xmlns:wsoap11="http://schemas.xmlsoap.org/wsdl/soap/" > <description> The wsdl:definitions in namespace http://schemas.xmlsoap.org/wsdl/ is valid in accordance with the wsi version of the wsdl 1.1 schema at http://ws-i.org/profiles/basic/1.1/wsdl-2004-08-24.xsd . </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[wsdl:definitions] </target> <cotarget name="metadata">$target/@schemaValid</cotarget> <predicate> $target/@schemaValid = fn:true() </predicate> <!-- The following is a strongly typed schema aware test, which cannot work, since when using schema aware processing, xslt validation failures are fatal <predicate> every $def in ./wsdl:definitions satisfies $def instance of element(*,wsdl:tDefinitions) </predicate> --> <prescription level="mandatory"/> <errorMessage> The description file contains a WSDL definition which does not conform to the schema located at http://ws-i.org/profiles/basic/1.1/wsdl-2004-08-24.xsd </errorMessage> <diagnostic> Error message from the XML parser </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="false" id="BP2709" > <description>Driver testable.</description> <target>not(1)</target> <predicate>TBD</predicate> <prescription level="permitted"/> <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="BP2120b" preReq="BP2017"> <!-- rpc-lit case (request only) --> <!-- Prereq = BP2017 For each op, Create a signature image: ":input:" + opname+accessors + [ ":output:" ] Then make sure not 2 ops have same image. --> <description> Each operation referenced by the binding results in a unique wire signature. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap11:*[@style = 'rpc']] </target> <cotarget name="imagesig"> for $bop_1 in $target/wsdl:operation return fn:string-join( ( $bop_1/wsdl:input/wsoap11:body/@namespace , $bop_1/@name , for $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType [@name = fn:tokenize(xsd:string($target/@type), ':' )[fn:last()]]/wsdl:operation[@name = $bop_1/@name]/ wsdl:input return ( ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Request' ) ) ) ) ),',' ) </cotarget> <predicate> fn:count($imagesig) = fn:count(fn:distinct-values($imagesig)) </predicate> <prescription level="mandatory"/> <errorMessage> A binding has operations that are not unique. </errorMessage> <diagnostic> Defective wsdl:operation element(s). </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="BP2120a" preReq="BP2017"> <!-- doc-lit case (request only) --> <description> Each operation referenced by the binding results in a unique wire signature. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [not(.//wsoap11:*[@style = 'rpc'])] </target> <cotarget name="imagesig"> for $bop_1 in $target/wsdl:operation return fn:string-join( ( for $part in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [ @name = ( fn:tokenize(/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType [@name = fn:tokenize(xsd:string($target/@type), ':' )[fn:last()]]/wsdl:operation[@name = $bop_1/@name]/ wsdl:input/@message, ':' )[fn:last()] ) ]/wsdl:part[1] return (fn:namespace-uri-from-QName(fn:resolve-QName(xsd:string($part/@element), $part)) , fn:local-name-from-QName(fn:resolve-QName(xsd:string($part/@element), $part)) ) , for $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType [@name = fn:tokenize(xsd:string($target/@type), ':' )[fn:last()]]/wsdl:operation[@name = $bop_1/@name]/ wsdl:input return ( ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Request' ) ) ) ) ),',' ) </cotarget> <predicate> fn:count($imagesig) = fn:count(fn:distinct-values($imagesig)) </predicate> <prescription level="mandatory"/> <errorMessage> A binding has operations that are not unique. </errorMessage> <diagnostic> Defective wsdl:operation element(s). </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="false" id="BP2711" > <description>don't know why this is listed as Not testable.</description> <target>///wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port</target> <predicate>not(wsoap11:address/@location = preceding::wsdl:port/wsoap11:address/@location) and not(wsoap11:address/@location = following::wsdl:port/wsoap11:address/@location)</predicate> <prescription level="preferred"/> <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="BP1011a"> <!-- preReq="BP1701 BP1308" --> <description> The content of the envelope matches the definition in the WSDL document. In case of a doc-lit binding, the child element of soap11:body is an instance of the global element declaration referenced by the corresponding wsdl:part. It is assumed the doc-lit binding has only 1 part. (NOTE: BP211 assumed prereq for the cotarget) </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Request' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <predicate>count(soap11:Body/*) le 1</predicate> <prescription level="mandatory"/> <errorMessage> The content of the envelope associated with a doc-lit WSDL binding does not match the wsdl:message definition. the child element of soap11:body is not an instance of the global element declaration referenced by the corresponding wsdl:part. </errorMessage> <diagnostic> Non-matching WSDL operation and 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="BP1011b"> <!-- case response. preReq="BP1701 BP1308" --> <description> The content of the response message envelope matches the definition in the WSDL document. In case of a doc-lit binding, the child element of soap11:Body is an instance of the global element declaration referenced by the corresponding wsdl:part. It is assumed the doc-lit binding has only 1 part. (NOTE: BP211 assumed prereq for the cotarget) </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <!-- assume bp2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Response' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <predicate>count(soap11:Body/*) le 1</predicate> <prescription level="mandatory"/> <errorMessage> The content of the envelope does not match the wsdl:message definition. the child element of soap11:Body is not an instance of the global element declaration referenced by the corresponding wsdl:part. </errorMessage> <diagnostic> Non-matching WSDL operation and 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/" id="BP1111a" enable="true" > <!-- preReq="BP1701 BP1308" --> <description> The content of the request message envelope matches the definition in the WSDL document. In case of a doc-lit binding, the child element of soap11:body is an instance of the global element declaration referenced by the corresponding wsdl:part. It is assumed the doc-lit binding has only 1 part. (NOTE: BP211 assumed prereq for the cotarget) </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Request' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <prerequisite> some $myOpBind in $myOpBinding satisfies ( not($myOpBind/..//wsoap11:body/@use != 'literal') and (count($myOpBind/..//wsoap11:body) = count($myOpBind/..//wsoap11:body/@use)) and $myOpBind/../wsoap11:binding[ not (@style = 'rpc' )] and $myOpBind/wsoap11:operation[ not (@style = 'rpc' )] ) </prerequisite> <predicate>count(soap11:Body/*) le 1</predicate> <prescription level="mandatory"/> <errorMessage> The content of the request message envelope associated with a doc-lit WSDL binding does not match the wsdl:message definition. the child element of soap11:body is not an instance of the global element declaration referenced by the corresponding wsdl:part. </errorMessage> <diagnostic> Non-matching WSDL operation and 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/" id="BP1111b" enable="true"> <!-- case response. preReq="BP1701 BP1308" --> <description> The content of the response message envelope matches the definition in the WSDL document. In case of a doc-lit binding, the child element of soap11:Body is an instance of the global element declaration referenced by the corresponding wsdl:part. It is assumed the doc-lit binding has only 1 part. (NOTE: BP211 assumed prereq for the cotarget) </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <!-- assume bp2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Response' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <prerequisite> some $myOpBind in $myOpBinding satisfies ( not($myOpBind/..//wsoap11:body/@use != 'literal') and (count($myOpBind/..//wsoap11:body) = count($myOpBind/..//wsoap11:body/@use)) and $myOpBind/../wsoap11:binding[ not (@style = 'rpc' )] and $myOpBind/wsoap11:operation[ not (@style = 'rpc' )] ) </prerequisite> <predicate>count(soap11:Body/*) le 1</predicate> <prescription level="mandatory"/> <errorMessage> The content of the response message envelope does not match the wsdl:message definition. the child element of soap11:Body is not an instance of the global element declaration referenced by the corresponding wsdl:part. </errorMessage> <diagnostic> Non-matching WSDL operation and 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="BP2019" preReq="BP2406"> <description> For doc/lit binding, the "namespace" attribute is not specified in any contained wsoap11:body, wsoap11:header, wsoap11::headerfault, wsoap11:fault elements </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[not(.//wsoap11:*[@style = 'rpc'])] </target> <predicate> every $wopbind in ( $target//wsoap11:body | $target//wsoap11:fault | $target//wsoap11:header | $target//wsoap11:headerfault ) satisfies not($wopbind/@namespace) </predicate> <prescription level="mandatory"/> <errorMessage> The binding is of style "document" and use "literal", and the "namespace" attribute is specified in some wsoap11:body, wsoap11:header, wsoap11::headerfault, wsoap11:fault element </errorMessage> <diagnostic> Contained element with namespace attribute. </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="BP2020" preReq="BP2017"> <description> The namespace attribute is specified on all wsoap11:body elements and the value of the namespace attribute is an absolute URI. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']] </target> <predicate>every $wbody in .//wsoap11:body satisfies fn:count(fn:tokenize($wbody/@namespace,':')) > 1</predicate> <!-- predicate>not (//wsoap11:body[not(@namespace)])</predicate --> <prescription level="mandatory"/> <errorMessage> A wsoap11:body element does not have a namespace attribute, or the namespace attribute value is not an absolute URI. </errorMessage> <diagnostic> wsoap11:body elements that failed the assertion </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="BP2117" preReq="BP2017 BP2406"> <description> The rpc-literal binding does not have a namespace attribute specified on a contained wsoap11:header, wsoap11:headerfault, and wsoap11:fault element. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:*[@style = 'rpc']] </target> <predicate>not(.//wsoap11:fault[@namespace]) and not(.//wsoap11:header[@namespace]) and not(.//wsoap11:headerfault[@namespace])</predicate> <prescription level="mandatory"/> <errorMessage> An rpc-literal binding has the namespace attribute specified on contained wsoap11:header, wsoap11:headerfault and wsoap11:fault elements. </errorMessage> <diagnostic> {Defective wsdl:binding}{defective wsoap11:header, wsoap11:headerfault, or wsoap11:fault element} </diagnostic> </testAssertion> <testAssertion id="BP2118" 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 list (or set) of wsdl:operation elements for the contained wsdl:binding is the same as the list of wsdl:operations for the referred wsdl:portType. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding</target> <cotarget name="myportype">/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType[@name = fn:local-name-from-QName(fn:resolve-QName(xsd:string($target/@type), $target))]</cotarget> <predicate> (every $operation in $myportype/wsdl:operation satisfies <br/> (some $bop in $target/wsdl:operation satisfies <br/> $bop/@name = $operation/@name)) and <br/> (count(wsdl:operation) = count($myportype/wsdl:operation)) and <br/> not(wsdl:operation[@name = preceding-sibling::wsdl:operation/@name ]) </predicate> <prescription level="mandatory"/> <errorMessage> A wsdl:binding does not have the same list of wsdl:operations as the wsdl:portType to which it refers. </errorMessage> <diagnostic> {unmatching wsdl:binding element}{unmatching portType element} </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="BP2021" preReq="BP2703"> <description> The wsdl:input element and wsdl:output element of each operation uses the attribute name "part" with a Schema type of "NMTOKEN" and does not use "parts", for both wsoap11:header elements and wsoap11:headerfault elements. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[wsdl:input/wsoap11:header or wsdl:input/wsoap11:headerfault or wsdl:output/wsoap11:header or wsdl:output/wsoap11:headerfault] </target> <predicate> (not(wsdl:input/wsoap11:header) or (wsdl:input/wsoap11:header[@part] and not(wsdl:input/wsoap11:header[@parts]) and not(wsdl:input/wsoap11:header[contains(@part, ' ')]) and not(wsdl:input/wsoap11:header[contains(@part, ',')]))) and (not(wsdl:input/wsoap11:headerfault) or (wsdl:input/wsoap11:headerfault[@part] and not(wsdl:input/wsoap11:headerfault[@parts]) and not(wsdl:input/wsoap11:headerfault[contains(@part, ' ')]) and not(wsdl:input/wsoap11:headerfault[contains(@part, ',')]))) and (not(wsdl:output/wsoap11:header) or (wsdl:output/wsoap11:header[@part] and not(wsdl:output/wsoap11:header[@parts]) and not(wsdl:output/wsoap11:header[contains(@part, ' ')]) and not(wsdl:output/wsoap11:header[contains(@part, ',')]))) and (not(wsdl:output/wsoap11:headerfault) or (wsdl:output/wsoap11:headerfault[@part] and not(wsdl:output/wsoap11:headerfault[@parts]) and not(wsdl:output/wsoap11:headerfault[contains(@part, ' ')]) and not(wsdl:output/wsoap11:headerfault[contains(@part, ',')]))) </predicate> <prescription level="mandatory"/> <errorMessage> The wsdl:input element or wsdl:output element of an operation does not use the attribute name "part" with a Schema type of "NMTOKEN" for wsoap11:header elements or wsoap11:headerfault elements, or it uses "parts". </errorMessage> <diagnostic> wsdl:input element or wsdl:output element of the defective operation. </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="BP2022" > <description> the name attribute is specified on the wsoap11:fault element. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation/wsdl:fault/wsoap11:fault</target> <predicate>@name and @name != '' </predicate> <prescription level="mandatory"/> <errorMessage> Defective wsoap11:fault element: the name attribute is not specified on the wsoap11:fault element. </errorMessage> <diagnostic> Defective wsoap11:fault element </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="BP2032" > <description> the name attribute that is specified on the wsoap11:fault element matches the value specified on the parent element wsdl:fault. </description> <target>/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation/wsdl:fault</target> <predicate>@name = wsoap11:fault/@name</predicate> <prescription level="mandatory"/> <errorMessage> Defective wsoap11:fault element: the "name" attribute value does not match the value of the "name" attribute on the parent element wsdl:fault. </errorMessage> <diagnostic> Defective wsoap11:fault element </diagnostic> </testAssertion> <testAssertion id="BP1005" 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="BP1601 BP1202" --> <description> The envelope has a wrapper element with a name equal to the name attribute on the wsdl:operation element suffixed with string "Response". </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/ soap11:Envelope[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> <cotarget name="related-Request"> /wsil:testLog/wsil:messageLog/wsil:message [ @type = 'request' and (if (not(./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID) ) then ( @conversation = $target/../../@conversation) else (./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:MessageID = $target/soap11:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] )) ]/wsil:messageContents/soap11:Envelope[soap11:Body/*] </cotarget> <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBindings"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap11:* [@style = 'rpc']]/wsdl:operation[@name = fn:local-name($related-Request[1]/soap11:Body/*[1])] </cotarget> <predicate> fn:concat(fn:local-name($related-Request[1]/soap11:Body/*[1]), 'Response' ) = fn:local-name($target/soap11:Body/*[1]) </predicate> <prescription level="mandatory"/> <errorMessage> Wrapper element in the envelope does not have a value equal to the name attribute on the wsdl:operation element suffixed with string "Response". </errorMessage> <diagnostic/> </testAssertion> <testAssertion id="BP1008a" 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 envelope has part accessor elements for parameters and return value, in no namespaces, but the descendants of these are namespace qualified as defined by the schema in which their types are defined. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[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> every $accessor in $target/soap11:Body/*/* satisfies ( fn:namespace-uri-from-QName(fn:node-name($accessor)) = '' or fn:namespace-uri-from-QName(fn:node-name($accessor)) = 'http://www.ws-i.org/testing/2008/02/log/') </predicate> <prescription level="mandatory"/> <errorMessage> The request envelope has part accessor elements for parameters and return value, within namespaces. </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/" id="BP1008b" enable="true"> <!-- rpc-lit / response case --> <!-- preReq="BP1701" --> <description> The response envelope has part accessor elements for parameters and return value, in no namespaces. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap11:Envelope[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']]/ <br/> wsdl:operation <br/> [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))] </cotarget> <predicate> every $accessor in ./soap11:Body/*/* satisfies ( fn:namespace-uri-from-QName(fn:node-name($accessor)) = '' or fn:namespace-uri-from-QName(fn:node-name($accessor)) = 'http://www.ws-i.org/testing/2008/02/log/' ) </predicate> <prescription level="mandatory"/> <errorMessage> The response envelope has part accessor elements for parameters and return value, within namespaces. </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="BP1755a"> <!-- preReq="BP1701" --> <description> Each part accessor element in the envelope has a local name of the same value as the name attribute of the corresponding wsdl:part element. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[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> (some $mbody in ./soap11:Body satisfies every $accessor in $mbody/*/* satisfies some $dbody in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [@name = fn:local-name($mbody/*[1])]/wsdl:input/wsoap11:body satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation [@name = fn:local-name($mbody/*[1])]/*[fn:local-name(.) = 'input' ] satisfies some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [@name = fn:tokenize(xsd:string($dopmsg/@message),':' )[fn:last() ] ]satisfies some $mpart in $dmesg/wsdl:part satisfies $mpart/@name = fn:local-name($accessor) ) </predicate> <prescription level="mandatory"/> <errorMessage> The envelope referenced by an rpc-literal binding has a part accessor element with a local name that is not the same value as the name attribute of the corresponding wsdl:part element. </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="BP1755b"> <!-- preReq="BP1701" --> <description> Each part accessor element in the response envelope has a local name of the same value as the name attribute of the corresponding wsdl:part element. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap11:Envelope[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 [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))] </cotarget> <predicate> (some $mbody in ./soap11:Body satisfies every $accessor in $mbody/*/* satisfies some $dbody in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[fn:string-join((@name, 'Response' ),'') = fn:local-name($mbody/*[1])]/wsdl:output/wsoap11:body satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[fn:string-join((@name, 'Response'),'') = fn:local-name($mbody/*[1])]/*[fn:local-name(.) = 'output' ] satisfies some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[@name = fn:tokenize(xsd:string($dopmsg/@message),':' )[fn:last() ] ] satisfies some $mpart in $dmesg/wsdl:part satisfies $mpart/@name = fn:local-name($accessor) ) </predicate> <prescription level="mandatory"/> <errorMessage> The response envelope referenced by an rpc-literal binding has a part accessor element with a local name that is not the same value as the name attribute of the corresponding wsdl:part element. </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="false" id="BP1010"> <!-- preReq="BP1701" --> <description> The envelope has part accessor elements for parameters and return value, in no namespaces, but the descendants of these are namespace qualified as defined by the schema in which their types are defined. </description> <target> //soap11:Envelope[every $x in soap11:Body/* satisfies ( /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[ @name=local-name-from-QName(node-name($x))]/wsoap11:operation[@style="rpc"] | /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[ @name=local-name-from-QName(node-name($x))]/../wsoap11:binding[@style="rpc"]) ] </target> <predicate>every $accessor in (.//soap11:Body/*/*) satisfies ( for $accessorName in local-name-from-QName(node-name($accessor)) return ( for $type in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message/wsdl:part[@name=$accessorName]/@type return ( for $nsTag in substring-before($type, ':') return ( for $ns in namespace-uri-for-prefix($nsTag, $accessor) return ( every $accessorChild in $accessor/* satisfies ( namespace-uri($accessorChild) = $ns ))))))</predicate> <prescription level="mandatory"/> <errorMessage> The envelope has part accessor elements for parameters and return value, within namespaces, or the descendants of these elements are not namespace qualified as defined by the schema in which their types are defined. </errorMessage> <diagnostic/> </testAssertion> <testAssertion id="BP1009a" 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="BP1601 BP1202" --> <!-- doc-lit / request case --> <description> The Envelope includes all wsoap11:headers specified in the wsdl:input (if request) or wsdl:output (if response) of the operation referred to by its wsdl:binding, and may also include headers that were not specified. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Request' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <prerequisite> $myOpBinding/wsdl:input/wsoap11:header </prerequisite> <predicate> some $myOpBind in $myOpBinding satisfies ( every $inputhdr in $myOpBind/wsdl:input/wsoap11:header satisfies some $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [@name = fn:local-name-from-QName(fn:resolve-QName(xsd:string($inputhdr/@message), $inputhdr)) ] /wsdl:part[ @name = $inputhdr/@part] satisfies some $headerblk in $target/soap11:Header/* satisfies ( fn:resolve-QName(xsd:string($mpart/@element), $mpart ) = fn:node-name($headerblk) ) ) </predicate> <prescription level="mandatory"/> <errorMessage> Envelope does not include all wsoap11:headers specified in the wsdl:input (of request) of its bound operation. </errorMessage> <diagnostic/> </testAssertion> <testAssertion id="BP1009b" 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="BP1601 BP1202" --> <!-- doc-lit / response case --> <description> The Envelope includes all wsoap11:headers specified in the wsdl:input (if request) or wsdl:output (if response) of the operation referred to by its wsdl:binding, and may also include headers that were not specified. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <!-- assume bp2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Response' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <prerequisite> $myOpBinding/wsdl:output/wsoap11:header </prerequisite> <predicate> some $myOpBind in $myOpBinding satisfies ( every $outputhdr in $myOpBind/wsdl:output/wsoap11:header satisfies some $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [@name = fn:local-name-from-QName(fn:resolve-QName(xsd:string($outputhdr/@message), $outputhdr)) ] /wsdl:part[ @name = $outputhdr/@part] satisfies some $headerblk in $target/soap11:Header/* satisfies ( fn:resolve-QName(xsd:string($mpart/@element), $mpart ) = fn:node-name($headerblk) ) ) </predicate> <prescription level="mandatory"/> <errorMessage> Envelope does not include all wsoap11:headers specified in the wsdl:input (if request) or wsdl:output (if response) of its bound operation. </errorMessage> <diagnostic/> </testAssertion> <testAssertion id="BP1009c" 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="BP1601 BP1202" --> <!-- rpc-lit / request case --> <description> The Envelope includes all wsoap11:headers specified in the wsdl:input (for request) of the operation referred to by its wsdl:binding, and may also include headers that were not specified. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not (./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[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> <prerequisite> $myOpBinding/wsdl:input/wsoap11:header </prerequisite> <predicate> some $myOpBind in $myOpBinding satisfies ( every $inputhdr in $myOpBind/wsdl:input/wsoap11:header satisfies some $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [@name = fn:local-name-from-QName(fn:resolve-QName(xsd:string($inputhdr/@message), $inputhdr)) ] /wsdl:part[ @name = $inputhdr/@part] satisfies some $headerblk in $target/soap11:Header/* satisfies ( fn:resolve-QName(xsd:string($mpart/@element), $mpart ) = fn:node-name($headerblk) ) ) </predicate> <prescription level="mandatory"/> <errorMessage> Envelope does not include all wsoap11:headers specified in the wsdl:input (if request) or wsdl:output (if response) of its bound operation. </errorMessage> <diagnostic/> </testAssertion> <testAssertion id="BP1009d" 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="BP1601 BP1202" --> <!-- rpc-lit / response case --> <description> The Envelope includes all wsoap11:headers specified in the wsdl:output (for response) of the operation referred to by its wsdl:binding, and may also include headers that were not specified. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap11:Envelope[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 [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))] </cotarget> <prerequisite> $myOpBinding/wsdl:output/wsoap11:header </prerequisite> <predicate> some $myOpBind in $myOpBinding satisfies ( every $outputhdr in $myOpBind/wsdl:output/wsoap11:header satisfies some $mpart in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [@name = fn:local-name-from-QName(fn:resolve-QName(xsd:string($outputhdr/@message), $outputhdr)) ] /wsdl:part[ @name = $outputhdr/@part] satisfies some $headerblk in $target/soap11:Header/* satisfies ( fn:resolve-QName(xsd:string($mpart/@element), $mpart ) = fn:node-name($headerblk) ) ) </predicate> <prescription level="mandatory"/> <errorMessage> Envelope does not include all wsoap11:headers specified in the wsdl:input (if request) or wsdl:output (if response) of its bound operation. </errorMessage> <diagnostic/> </testAssertion> <testAssertion id="BP1116a" 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="BP1006"> <!-- doc-lit "logical" request case --> <description> The SOAPAction parameter on the Content-Type header if present has value equal to the value of the corresponding wsoap11:operation/@soapAction attribute, and an empty string ("") if there is no such attribute. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter/@key = 'SOAPAction' (: and @type = 'request' :) and not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[soap11:Body[not (soap11:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($target/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($target/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Request' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget> <predicate> some $myOpBind in $myOpBinding satisfies ( ($myOpBind/wsoap11:operation/@soapAction = $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter [@key = 'SOAPAction']/@value) or (not ($myOpBind/wsoap11:operation/@soapAction ) and $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[@key = 'SOAPAction']/@value = '') ) </predicate> <prescription level="mandatory"/> <errorMessage> The SOAPAction parameter on the Content-Type header if present does not match wsoap11:operation/@soapAction attribute. </errorMessage> <diagnostic> {All HTTP headers}{soapAction value from the soabinding}. </diagnostic> </testAssertion> <testAssertion id="BP1116b" 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="BP1006"> <!-- rpc-lit / "logical" request case --> <description> The SOAPAction parameter on the Content-Type header if present has value equal to the value of the corresponding wsoap11:operation/@soapAction attribute, and an empty string ("") if there is no such attribute. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter/@key = 'SOAPAction' (: and @type = 'request' :) and not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[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> <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> some $myOpBind in $myOpBinding satisfies ( ($myOpBind/wsoap11:operation/@soapAction = $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter [@key = 'SOAPAction']/@value) or (not ($myOpBind/wsoap11:operation/@soapAction ) and $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[@key = 'SOAPAction']/@value = '') ) </predicate> <prescription level="mandatory"/> <errorMessage> The SOAPAction parameter on the Content-Type header if present does not match wsoap11:operation/@soapAction attribute. </errorMessage> <diagnostic> {All HTTP headers}{soapAction value from the soabinding}. </diagnostic> </testAssertion> <testAssertion id="BP2122" 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/" xmlns:wsoap11="http://schemas.xmlsoap.org/wsdl/soap/" > <description> The data type definition if any within the wsdl:types element is an XML schema definition defined in the XML Schema 1.0 Recommendation with the namespace URI "http://www.w3.org/2001/XMLSchema". </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[wsdl:definitions//xsd:schema] </target> <cotarget name="metadata">$target/@schemaValid</cotarget> <predicate> $target/@schemaValid = fn:true() </predicate> <!-- The following is a strongly typed schema aware test, which cannot work, since when using schema aware processing, xslt validation failures are fatal <predicate> every $s in .//xsd:schema satisfies $s instance of schema-element(xsd:schema) </predicate- --> <prescription level="mandatory"/> <errorMessage> A wsdl:types element contained a data type definition that is not an XML schema definition. </errorMessage> <diagnostic>Defective data type definition.</diagnostic> </testAssertion> <testAssertion id="BP1090a" 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/"> <!-- doc-lit fault case --> <description> For a Fault response message with a wsa:Action element, defined using a doc/lit binding, the following must hold: - The wsa:Action value in the soap11:Header must equal to that specified from the WSDL. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap11:Envelope[soap11:Body/soap11:Fault and soap11:Header[wsa:Action]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap11:Body/*[1] or $myenv/soap11:Header/wsa:Action )) ) ] </target > <cotarget name="relatedRequest"> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ][1] </cotarget> <!-- assume BP2017 passed for cotarget --> <cotarget name="myOpBinding"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($relatedRequest/soap11:Body/*[1] ) then (some $dmesg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [wsdl:part[fn:resolve-QName(xsd:string(@element), . ) = fn:node-name($relatedRequest[1]/soap11:Body/*[1])] ] satisfies some $dopmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input [fn:local-name-from-QName(fn:resolve-QName(xsd:string(@message), . )) = $dmesg/@name] satisfies $opBinding/@name = $dopmsg/../@name ) else fn:true() ) and ( if ($relatedRequest/soap11:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($relatedRequest/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', if($opmsg/@name) then $opmsg/@name else fn:concat($opmsg/../@name, 'Request' ) ) ) ) and ( $opBinding/@name = $opmsg/../@name ) ) else fn:true() ) ] </cotarget > <predicate> (: correct wsa:Action value :) not(/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[ $myOpBinding/@name = @name ]/wsdl:fault) or (some $detailQName in fn:node-name($target/soap11:Body/soap11:Fault/detail/*[1]) satisfies some $msgDef in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [ wsdl:part[1][fn:resolve-QName(xsd:string(@element),.) = $detailQName ]] satisfies (some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[ $myOpBinding/@name = @name ] satisfies (not ($opmsg/wsdl:fault[ fn:local-name-from-QName(fn:resolve-QName(xsd:string(./@message),.)) = $msgDef/@name ]) or (some $flt in $opmsg/wsdl:fault[ fn:local-name-from-QName(fn:resolve-QName(xsd:string(./@message),.)) = $msgDef/@name ] satisfies ($target/soap11:Header/wsa:Action = ( if ($flt/@wsam:Action) then $flt/@wsam:Action else fn:concat($opmsg/../../@targetNamespace, if (not(fn:ends-with($opmsg/../../@targetNamespace,'/'))) then '/' else '', $opmsg/../@name, '/', $opmsg/@name, '/Fault/', $flt/@name ) ) ) )) )) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="warning"/> <errorMessage> A Fault response message defined using a doc/lit binding has a wsa:Action value that is not equal to that specified in the WSDL. This may be due to the fact that the fault was generated by some infrastructure component (e.g. WS-Addressing, WS-RM, etc.). Verify that the fault was generated by some WS-* infrastructure component and not by the application. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1090b" 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 / fault case --> <description> For a Fault response message with a wsa:Action element, defined using a doc/lit binding, the following must hold: - The wsa:Action value in the soap11:Header must equal to that specified from the WSDL. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap11:Envelope[ (soap11:Body/soap11:Fault) and soap11:Header[wsa:Action]] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ] </target> <cotarget name ="relatedRequest"> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ][1] </cotarget> <!-- 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($relatedRequest[1]/soap11:Body/*[1]))] </cotarget> <predicate> (: correct wsa:Action value :) some $detailQName in fn:node-name($target/soap11:Body/soap11:Fault/detail/*[1]) satisfies some $msgDef in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message [ wsdl:part[1][fn:resolve-QName(xsd:string(@element),.) = $detailQName ]] satisfies (some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/ wsdl:operation[ $myOpBinding/@name = @name ]/ wsdl:fault[ fn:local-name-from-QName(fn:resolve-QName(xsd:string(./@message),.)) = $msgDef/@name ] satisfies ($target/soap11:Header/wsa:Action = ( if ($opmsg/@wsam:Action) then $opmsg/@wsam:Action else fn:concat($opmsg/../../../@targetNamespace, if (not(fn:ends-with($opmsg/../../../@targetNamespace,'/'))) then '/' else '', $opmsg/../../@name, '/', $opmsg/../@name, '/Fault/', $opmsg/@name ) ) ) ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="warning"/> <errorMessage> A Fault response message defined using a rpc/lit binding has a wsa:Action value that is not equal to that specified in the WSDL. This may be due to the fact that the fault was generated by some infrastructure component (e.g. WS-Addressing, WS-RM, etc.). Verify that the fault was generated by some WS-* infrastructure component and not by the application. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP2801" 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> The value (either actual or computed) of wsam:Action attribute for the wsdl:input element contained in the target wsdl:operation of the wsdl:portType MUST equal the value of the non-empty soapAction attribute inside the wsoap11:operation element contained in the target wsdl:operation of the wsdl:binding. </description> <target> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [wsoap11:operation[@soapAction] and wsoap11:operation/@soapAction ne '' and (some $bop in . satisfies /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation [@name = $bop/@name]/wsdl:input[@wsam:Action])] </target> <cotarget name="myOpDefinition"> /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $target/@name] </cotarget> <predicate> $target/wsoap11:operation[@soapAction = (if ($myOpDefinition/wsdl:input/@wsam:Action) then $myOpDefinition/wsdl:input/@wsam:Action else fn:concat($myOpDefinition/../../@targetNamespace, if (not(fn:ends-with($myOpDefinition/../../@targetNamespace,'/'))) then '/' else '', $myOpDefinition/../@name, '/', if($myOpDefinition/wsdl:input/@name) then $myOpDefinition/wsdl:input/@name else fn:concat($myOpDefinition/@name, 'Request' )) ) ] </predicate> <prescription level="mandatory"/> <errorMessage> Bad value (either actual or computed) of wsam:Action attribute for the wsdl:input element contained in the target wsdl:operation of the wsdl portType. </errorMessage> <diagnostic>Operation.</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="false" id="BP3002" > <description> The uddi:bindingTemplate element contains a uddi:accessPoint element, with a non-empty value. </description> <target>For a candidate uddi:bindingTemplate</target> <predicate>TBD</predicate> <prescription level="mandatory"/> <errorMessage> The uddi:bindingTemplate does not contain an uddi:accessPoint element, or it is empty. </errorMessage> <diagnostic>bindingTemplate key</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="false" id="BP3001" > <description> The uddi:tModel element uses WSDL as the description language and the uddi:tModel contains a reference to a WSDL binding. The uddi:overviewDoc/uddi:overviewURL element contains a reference to a WSDL definition, which uses a namespace of http://schemas.xmlsoap.org/wsdl/. The uddi:overviewURL may use the fragment notation to resolve to a specific wsdl:binding. </description> <target>For a candidate uddi:tModel</target> <predicate>TBD</predicate> <prescription level="mandatory"/> <errorMessage> The uddi:tModel does not reference a WSDL based Web service definition or the uddi:tModel does not reference a wsdl:binding. </errorMessage> <diagnostic>{tModel key}{uddi:overviewDoc}</diagnostic> </testAssertion> <testAssertion xmlns:p="http://docs.oasis-open.org/ws-brsp/ns/Profile-TAs-201305" xmlns:t="http://www.ws-i.org/testing/2004/07/assertions/" xmlns:xalan="http://xml.apache.org/xslt" 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="false" id="BP3003" > <description> The uddi:tModel is categorized using the uddi:types taxonomy, as "wsdlSpec": the uddi:keyedReference element has a tModelKey attribute value equal to "uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4" and a keyValue attribute value equal to "wsdlSpec". </description> <target>For a candidate uddi:tModel</target> <predicate>TBD</predicate> <prescription level="mandatory"/> <errorMessage> The uddi:tModel is not categorized using the uddi:types taxonomy with a categorization of "wsdlSpec". </errorMessage> <diagnostic>{tModel key}{categoryBag}</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="BP1211a"> <!-- preReq="BP1701" --> <!-- rpc-lit / request case --> <description> Part accessor elements in the envelope do not have an xsi:nil attribute with a value of "1" or "true". </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap11:Envelope[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>not (soap11:Body/*/*[attribute::xsi:nil = '1' or attribute::xsi:nil = fn:true()])</predicate> <prescription level="mandatory"/> <errorMessage> Envelope referenced by an rpc-literal binding has part accessor elements with an xsi:nil attribute with a value of "1" or "true". </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="BP1211b"> <!-- preReq="BP1701" --> <!-- rpc-lit / response case --> <description> Part accessor elements in the response envelope do not have an xsi:nil attribute with a value of "1" or "true". </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap11:Envelope[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 [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap11:Body/*[1]))] </cotarget> <predicate>not (soap11:Body/*/*[attribute::xsi:nil = '1' or attribute::xsi:nil = fn:true()])</predicate> <prescription level="mandatory"/> <errorMessage> response Envelope referenced by an rpc-literal binding has part accessor elements with an xsi:nil attribute with a value of "1" or "true". </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="BP1205"> <description> An ENVELOPE MUST NOT contain <h:code>soap11:encodingStyle</h:code> attributes on any of the elements whose namespace name is "http://schemas.xmlsoap.org/soap/envelope/". </description> <target> /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope </target> <predicate>every $attrib in (self::node()/attribute::*, ./soap11:Body/attribute::*, ./soap11:Body//node()/attribute::*) satisfies (fn:namespace-uri($attrib) != 'http://schemas.xmlsoap.org/soap/envelope/' or fn:local-name($attrib) != 'encodingStyle')</predicate> <prescription level="mandatory"/> <errorMessage> Envelope node whose namespace name is "http://schemas.xmlsoap.org/soap/envelope/" contains soap11:encodingStyle. </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="BP1013"> <description> An ENVELOPE containing a <h:code>soap11:mustUnderstand</h:code> attribute MUST only use the lexical forms "0" and "1". </description> <target> /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope </target> <predicate>every $attrib in (self::node()/attribute::soap11:mustUnderstand, .//node()/attribute::soap11:mustUnderstand) satisfies ($attrib = '1' or $attrib = '0')</predicate> <prescription level="mandatory"/> <errorMessage> An Envelope containing a <h:code>soap11:mustUnderstand</h:code> attribute has a value other than 1 or 0. </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="BP1126"> <description> An INSTANCE MUST return a 500 "Internal Server Error" HTTP status code if the response envelope is a Fault. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [ ( @type = 'response' ) and wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault ] </target> <predicate>fn:contains(wsil:httpHeaders/wsil:requestLine/text(), '500')</predicate> <prescription level="mandatory"/> <errorMessage> An message containing a Fault was returned with an HTTP status code that was not 500 "Internal Server Error" </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="BP1260"> <description> When an ENVELOPE is a Fault, the <h:code>soap11:Fault</h:code> element MUST NOT have element children other than <h:code>faultcode</h:code>, <h:code>faultstring</h:code>, <h:code>faultactor</h:code> and <h:code>detail</h:code>. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault] </target> <predicate> not( exists($target/wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault/* [ local-name() != 'faultcode' and local-name() != 'faultstring' and local-name() != 'faultactor' and local-name() != 'detail' ] )) </predicate> <prescription level="mandatory"/> <errorMessage> A Fault was found with children other than <h:code>faultcode</h:code>, <h:code>faultstring</h:code>, <h:code>faultactor</h:code>, or <h:code>detail</h:code>. </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="BP1261"> <description> When an ENVELOPE is a Fault, the element children of the <h:code>soap11:Fault</h:code> element MUST be unqualified. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault] </target> <predicate> not( exists($target/wsil:messageContents/soap11:Envelope/soap11:Body/soap11:Fault/* [ namespace-uri() != '' ] )) </predicate> <prescription level="mandatory"/> <errorMessage> A Fault was found with children that are qualified with a namespace. </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="BP1262"> <description> A MESSAGE MUST NOT use the HTTP Extension Framework (RFC2774), which includes the M-POST method </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request'] </target> <predicate> not( starts-with($target/wsil:httpHeaders/wsil:requestLine/text(), "M-POST")) </predicate> <prescription level="mandatory"/> <errorMessage> A message uses the M-POST method from the HTTP Extension Framework outlined in RFC2774 </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="BP1263"> <description> An ENVELOPE MUST NOT have any element children of <h:code>soap11:Envelope</h:code> following the <h:code>soap11:Body</h:code> element. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap11:Envelope[soap11:Body] </target> <predicate> every $sibling in $target/* satisfies ( not ($sibling >> $target/soap11:Body) ) </predicate> <prescription level="mandatory"/> <errorMessage> The <h:code>soap11:Body</h:code> element is followed by a sibling element </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="BP1264"> <description> A HTTP Request MESSAGE MUST use the HTTP POST method. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request'] </target> <predicate> starts-with($target/wsil:httpHeaders/wsil:requestLine/text(), "POST") </predicate> <prescription level="mandatory"/> <errorMessage> A request message does not use the POST method </errorMessage> <diagnostic/> </testAssertion> <testAssertion id="BP1149a" 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/"> <!-- request with non-anon response EPRs to an instance that only accepts anon --> <description> This assertion tests one aspect of R1149. Specifically, if a consumer sends a request message with a non-anonymous response EPR to an instance which advertises that it only supports anonymous EPRs, any response from that instance must be the SOAP fault described by <h:a href="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509/#id2270777">Section 6.4.1.7 of the Web Services Addressing 1.0 - SOAP Binding</h:a>. Other possible fault conditions, such as invalid addresses, are not tested for by this assertion. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] ] /wsil:messageContents/soap11:Envelope [/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> <cotarget name ="related-Request"> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ] </cotarget> <predicate> ( if<br/> ( ($related-Request/soap11:Header/wsa:ReplyTo and not ($related-Request/soap11:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous')) or ($related-Request/soap11:Header/wsa:FaultTo and not ($related-Request/soap11:Header/wsa:FaultTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous')) )<br/> then<br/> ( <!-- non-Fault case is picked up by BP1149b --> not ($target/soap11:Body/soap11:Fault) or fn:ends-with($target/soap11:Body/soap11:Fault/faultcode, 'OnlyAnonymousAddressSupported') )<br/> else fn:true()<br/> ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="warning"/> <errorMessage> The service requires the use of WS-Addressing with anonymous response EPRs. The response to a request with non-anonymous response EPRs must be the fault defined by Section 6.4.1.7 of the "WS-Addressing 1.0 - SOAP Binding" specification. Altough the transmitted response is a fault, it does not match the definition in Section 6.4.1.7. This could be due to some other, overriding error such as a MustUnderstand fault. Inspect the response message and verify that this is the case. If not, the service is acting incorrectly by not transimitting the proper fault. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1149b" 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/"> <!-- request with non-anon response EPRs to an instance that only accepts anon --> <description> This assertion tests one aspect of R1149. Specifically, if a consumer sends a request message with a non-anonymous response EPR to an instance which advertises that it only supports anonymous EPRs, any response from that instance must be the SOAP fault described by <h:a href="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509/#id2270777">Section 6.4.1.7 of the Web Services Addressing 1.0 - SOAP Binding</h:a>. Other possible fault conditions, such as invalid addresses, are not tested for by this assertion. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] ] /wsil:messageContents/soap11:Envelope [/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> <cotarget name ="related-Request"> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ] </cotarget> <predicate> ( if<br/> ( ($related-Request/soap11:Header/wsa:ReplyTo and not ($related-Request/soap11:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous')) or ($related-Request/soap11:Header/wsa:FaultTo and not ($related-Request/soap11:Header/wsa:FaultTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous')) )<br/> then<br/> ( $target/soap11:Body/soap11:Fault )<br/> else fn:true()<br/> ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="failed"/> <errorMessage> The service requires the use of WS-Addressing with anonymous response EPRs. Any response to a request with non-anonymous response EPRs must be the fault defined by Section 6.4.1.7 of the "WS-Addressing 1.0 - SOAP Binding" specification. The transmitted response is either not a fault or does not match the definition of this fault. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1149c" 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/"> <!-- request with anon response EPRs to an instance that only accepts non-anon --> <description> This assertion tests one aspect of R1149. Specifically, if a consumer sends a request message with an anonymous response EPR to an instance which advertises that it only supports non-anonymous EPRs, any response from that instance must be the SOAP fault described by <h:a href="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509/#id2270788">Section 6.4.1.8 of the Web Services Addressing 1.0 - SOAP Binding</h:a>. Other possible fault conditions, such as invalid addresses, are not tested for by this assertion. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] ] /wsil:messageContents/soap11:Envelope [/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> <cotarget name ="related-Request"> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ] </cotarget> <predicate> ( if<br/> ( not ($related-Request/soap11:Header/wsa:ReplyTo) or $related-Request/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' or $related-Request/soap11:Header/wsa:FaultTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' )<br/> then<br/> ( <!-- non-Fault case is picked up by BP1149d --> not ($target/soap11:Body/soap11:Fault) or fn:ends-with($target/soap11:Body/soap11:Fault/faultcode, 'OnlyNonAnonymousAddressSupported') )<br/> else fn:true()<br/> ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="warning"/> <errorMessage> The service requires the use of WS-Addressing with non-anonymous response EPRs. The response to a request with anonymous response EPRs must be the fault defined by Section 6.4.1.8 of the "WS-Addressing 1.0 - SOAP Binding" specification. Altough the transmitted response is a fault, it does not match the definition in Section 6.4.1.8. This could be due to some other, overriding error such as a MustUnderstand fault. Inspect the response message and verify that this is the case. If not, the service is acting incorrectly by not transimitting the proper fault. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <testAssertion id="BP1149d" 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/"> <!-- request with anon response EPRs to an instance that only accepts non-anon --> <description> This assertion tests one aspect of R1149. Specifically, if a consumer sends a request message with an anonymous response EPR to an instance which advertises that it only supports non-anonymous EPRs, any response from that instance must be the SOAP fault described by <h:a href="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509/#id2270788">Section 6.4.1.8 of the Web Services Addressing 1.0 - SOAP Binding</h:a>. Other possible fault conditions, such as invalid addresses, are not tested for by this assertion. </description> <target> /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap11:Envelope/soap11:Header/wsa:RelatesTo [not (@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] ] /wsil:messageContents/soap11:Envelope [/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> <cotarget name ="related-Request"> /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap11:Envelope[soap11:Header/wsa:MessageID = $target/soap11:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ] </cotarget> <predicate> ( if<br/> ( not ($related-Request/soap11:Header/wsa:ReplyTo) or $related-Request/soap11:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' or $related-Request/soap11:Header/wsa:FaultTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' )<br/> then<br/> ( $target/soap11:Body/soap11:Fault )<br/> else fn:true()<br/> ) </predicate> <prescription level="mandatory"/> <reporting true="passed" false="failed"/> <errorMessage> The service requires the use of WS-Addressing with non-anonymous response EPRs. The response to a request with anonymous response EPRs must be the fault defined by Section 6.4.1.8 of the "WS-Addressing 1.0 - SOAP Binding" specification. The transmitted response is not a SOAP Fault message. </errorMessage> <diagnostic>Complete message.</diagnostic> </testAssertion> <guide topic="testAssertion"> <item name="description"> <p><i>[<b>markup: testAssertion/description </b>]</i> (optional)</p> <p>A plain text description of the current test assertion. At minimum expressing the TA predicate.</p> </item> <item name="comments"> <p><i>[<b>markup: testAssertion/comments </b>]</i> (optional)</p> A plain text comment about the TA script and how well it covers the profile requirement. Explanation material for users, and developers (what could be improved, etc.). </item> <item name="target"> <p><i>[<b>markup: testAssertion/target </b>]</i> (required)</p> The artifacts to be tested, defined by an XPath expression that returns a list of XML nodes from the log file in input. For every artifact (node) selected by the Target expression, there will be a report entry for this TA in the test report, with a result of either: <ul> <li><b>passed</b></li> <li><b>failed</b></li> <li><b>warning</b></li> <li><b>notApplicable</b></li> <li><b>notApplicable</b></li> <li><b>notRelevant</b></li> <li><b>missingInput</b></li> <li><b>undetermined</b></li> </ul> <p>See the "reporting" item for the meaning of these results.</p> </item> <item name="cotarget"> <p><i>[<b>markup: testAssertion/cotarget </b>]</i> (optional)</p> <p>Artifact that is related to the target, and that needs be accessed for the testing. Identified by an XPath expression that may refer to the related target node using the variable '$target'. </p> <p>For example, the target can be a SOAP message and the cotarget the WSDL file that describes this SOAP message.</p> <p>A cotarget must have a @name attribute that identifies it. The value of this attribute can be used as a variable (when prepending '$' to it) by subsequently defined cotargets, prerequisite and predicate.</p> </item> <item name="prerequisite"> <p><i>[<b>markup: testAssertion/@preReq </b>]</i> (optional)</p> <p><i>[<b>markup: testAssertion/prerequisite </b>]</i> (optional)</p> <p>The pre-condition for evaluating this Test Assertion on this target. If the prerequisite evaluates to "false" then the target does not qualify for this Test Assertion (the test report is "notRelevant")</p> <p>The first part (preReq attribute) is an enumeration of Test Assertion IDs. Each one of the prerequisite TAs must either use the same target (e.g. SOAP Envelope, or WSDL binding, etc.) as this TA, or a target that is of a more general type than the main TA target. The target must "pass" each one of these prerequisite TAs in order to qualify for this TA.</p> <p>(e.g. the target of TA t1 can be a WSDL binding while the target of a TA t2 prerequisite of t1, can be the entire WSDL file).</p> <p>The second part ("prerequisite" element) is an XPath (boolean) expression of the same nature as the predicate. If present, it must evaluate to "true" for the target to qualify. If it fails, the result for the current TA in the report will be "notRelevant". Otherwise, the target can be further evaluated by the predicate of the main TA. The expression may refer to the target explicitly using the variable name "$target", or to any cotarget using its name as variable name ($[name]).</p> </item> <item name="TA_Id"> <p><i>[<b>markup: testAssertion/@id</b>]</i> (required)</p> A unique ID for the current test assertion. </item> <item name="predicate"> <p><i>[<b>markup: testAssertion/predicate</b>]</i> required element]</p> <p>A logical expression that evaluates whether this target is fulfilling the profile requirement addressed by this test Assertion. By default: </p> - A result of <b>true</b> means the requirement is fulfilled (reported as a "passed" in the test report). <br/> - A result of <b>false</b> means the requirement is violated (reported as a "failed" in the test report). <br/> <p>However, in some cases and for testability reasons, the predicate may be designed as a partial indicator e.g. only indicates some cases of fulfillment, or some cases of violation. As a result, when "true" indicates fulfillment it may be that "false" is unconclusive, or conversely "false" will indicate violation, but "true" is unconclusive. In such cases, the "Reporting" element specifies the meaning of the predicate result w/r to the profile requirement.</p> <p>The predicate expression implicitly refers to the target (whic is its "XPath context") although it may explicitly refer to it using the variable name "$target". It may refer to any cotarget using its name as variable name ($[name]).</p> </item> <item name="prescription"> <p><i>[<b>markup: testAssertion/prescription/@level </b>]</i> (required)</p> Conveys the level of prescription associated with the profile requirement. At least three values may be used: <ul> <li><b>mandatory</b>: maps to RFC2119 keywords MUST, MUST NOT, SHALL, SHALL NOT, REQUIRED (and sometimes MAY NOT) </li> <li><b>preferred</b>: maps to RFC2119 keywords SHOULD, SHOULD NOT, RECOMMENDED, NOT RECOMMENDED </li> <li><b>permitted</b>: maps to RFC2119 keywords MAY, OPTIONAL. </li> </ul> </item> <item name="reporting"> <p><i>[<b>markup: testAssertion/reporting </b>]</i> (optional)</p> <p>For each possible outcome of the predicate (true or false), specifies how it must be interpreted w/r to the profile feature. Two attributes are used that both must be present, when this element is present: </p> <ul> <li><b>@true attribute</b>: may take values among {passed, failed, warning, undetermined} (default is 'passed') </li> <li><b>@false attribute</b>: may take values among {passed, failed, warning, undetermined} (default is 'failed') </li> </ul> The reported outcomes have the following meaning:<BR/> <ul> <li><b>passed</b>: the target passes the test and can be considered as fulfilling the profile feature.</li> <li><b>failed</b>: the target fails the test and can be considered as violating (or not exhibiting) the profile feature.</li> <li><b>warning</b>: the test result is inconclusive. There is a possibility of profile requirement violation, that deserved further investigation.</li> <li><b>undetermined</b>: the test result is inconclusive for this predicate value.</li> </ul> <p>NOTES: the predicate of the TA may be worded in a negative way so that @false='passed' although that is not recommended. The result of a test should not be related to the prescription level, e.g. a "preferred" or "permitted" level should not imply that @false='warning'.</p> <p>Other test results that are automatically generated and not controlled by the "reporting" element are:</p> <ul> <li><b>notRelevant</b>: the target failed the prerequisite condition and therefore does not qualify for further testing (i.e. the predicate expression is NOT evaluated on it).</li> <li><b>missingInput</b>: a cotarget expression returned an empty node set.</li> <li><b>notApplicable</b>: this target was not even selected by the target XPath expression, while being of the same general artifact type (e.g. message type).</li> </ul> </item> <item name="errorMessage"> <p><i>[<b>markup: testAssertion/errorMessage </b>]</i> (required)</p> Specifies the standard error message to be reported for all targets failing this TA. </item> <item name="diagnostic"> <p><i>[<b>markup: testAssertion/diagnostic </b>]</i> (optional)</p> Specifies how to extract detailed failure information from the testing of this specific target instance. These diagnostic details will vary from one target to the other. </item> </guide> </testAssertions> </profile>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]