Test Assertions Basic Profile Version 2.0

2013-06-14

Test Assertions

Test Assertion

Test Assertion:BP1901
Description: The soap:Envelope contains other header blocks.
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope[soap12:Header[some $hbloc in child::* satisfies not(fn:namespace-uri($hbloc) = 'http://www.w3.org/2005/08/addressing') and not($hbloc/attribute::*:IsReferenceParameter) ]]
Predicate:fn:true()
Reporting: true=warning, false=failed
Prescription:permitted
Error Message: Extensibility Point WARNING: The soap12:Envelope makes use of extra SOAP headers
Diagnostic Data:

Test Assertion

Test Assertion:BP1904
Description: The soap12:Envelope contains @role with unspecified values.
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope[.//attribute::*:role]
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')
Reporting: true=passed, false=warning
Prescription:permitted
Error Message: Extensibility Point WARNING: The soap12:Envelope contains @role with unspecified values
Diagnostic Data:

Test Assertion

Test Assertion:BP1905
Description: The soap12:Envelope contains a Fault with unspecified Detail content.
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope[soap12:Body/soap12:Fault/soap12:Detail]
Predicate:fn:true()
Reporting: true=warning, false=passed
Prescription:permitted
Error Message: Extensibility Point WARNING: The soap12:Fault makes use of optional Detail element
Diagnostic Data:

Test Assertion

Test Assertion:BP1015
Description: A receiver must not fault messages with envelopes that contain an XML Declaration.
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents[@containsXmlDecl = 'true']/soap12:Envelope
Predicate:not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or (.//soap12:Envelope/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] = $target/soap12:Header/wsa:MessageID)]/wsil:messageContents/soap12:Envelope/soap12:Body/soap12:Fault )
Reporting: true=passed, false=warning
Prescription:mandatory
Error Message: 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 the XML declaration.
Diagnostic Data: {SOAP message}

Test Assertion

Test Assertion:BP1306
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).
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents[fn:starts-with(fn:lower-case(@encoding), 'utf-8') ]/soap12:Envelope[soap12:Header/*:R1019 or soap12:Header/*:R4006]
Predicate:not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or (.//soap12:Envelope/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] = $target/soap12:Header/wsa:MessageID)]/wsil:messageContents/soap12:Envelope/soap12:Body/soap12:Fault )
Reporting: true=passed, false=warning
Prescription:mandatory
Error Message: 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.
Diagnostic Data: {SOAP message}

Test Assertion

Test Assertion:BP1307
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).
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents[fn:starts-with(fn:lower-case(@encoding), 'utf-16') ]/soap12:Envelope[soap12:Header/*:R4007]
Predicate:not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or (.//soap12:Envelope/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] = $target/soap12:Header/wsa:MessageID)]/wsil:messageContents/soap12:Envelope/soap12:Body/soap12:Fault )
Reporting: true=passed, false=warning
Prescription:mandatory
Error Message: 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.
Diagnostic Data: {SOAP message}

Test Assertion

Test Assertion:BP1019
Description: The soap12:Envelope in the message is a well-formed XML 1.0 document.
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope
co-Target: metadata$target/../../wsil:messageContents[@validXml and @xmlVersion]
Predicate:$target/../../wsil:messageContents[@validXml = fn:true() and @xmlVersion = '1.0']
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The soap12:Envelope does not conform to XML 1.0.
Diagnostic Data: {SOAP message}{any XML parser error messages}

Test Assertion

Test Assertion: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.
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope
Predicate: $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[fn:lower-case(@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')
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion: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.
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[fn:lower-case(@key) = 'type']/@value= 'application/xop+xml']
Predicate:wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[fn:lower-case(@key) = 'start-info' and @value != '']
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The XOP_ENCODED_MESSAGE does not include the start-info parameter with proper @value.
Diagnostic Data:

Test Assertion

Test Assertion: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.
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[fn:lower-case(@key) = 'type']/@value = 'application/xop+xml']
Predicate:some $rootContentID in string(wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[fn:lower-case(@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[fn:lower-case(@key) = 'type']/@value)
Reporting:true=passed, false=failed
Prescription:preferred
Error Message: The XOP_ENCODED_MESSAGE SHOULD include the full value of the type parameter
Diagnostic Data:

Test Assertion

Test Assertion:BP1600
Description: The envelope conforms to the structure specified in SOAP 1.2 Part 1, Section 5.
Target: /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope
co-Target: metadata$target/../@schemaValid
Predicate: $target/../@schemaValid = fn:true()
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The envelope does not conform to the structure specified in SOAP 1.2 Part 1, Section 5
Diagnostic Data:SOAP envelope.

Test Assertion

Test Assertion:BP1881
Description: The envelope must have exactly zero or one child elements of the soap12:Body
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope
Predicate:count(soap12:Body/*) le 1
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The envelope does not have exactly zero or one child elements of the soap12:Body
Diagnostic Data:SOAP envelope.

Test Assertion

Test Assertion:BP1202
Description: Each child element (if any) of the soap12:Body element is namespace qualified (not the grandchildren).
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope[count(soap12:Body/*) > 0]
Predicate:fn:namespace-uri-from-QName(fn:node-name(soap12:Body/*)) != ''
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A child element of the soap12:Body element is not namespace qualified.
Diagnostic Data:SOAP envelope.

Test Assertion

Test Assertion:BP1007
Description: DTDs relating to soap12:Header or soap12:Body documents, are not present in the envelope: no DOCTYPE element is present.
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope
co-Target: metadata$target/../@containsDTD
Predicate:not(../@containsDTD = fn:true())
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The soap12:Header or soap12:Body elements in the envelope, were described with an included DTD.
Diagnostic Data:SOAP envelope.

Test Assertion

Test Assertion:BP1208
Description: The SOAP envelope does not include XML processing instructions.
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope
co-Target: metadata$target/../@containsProcessingInstructions
Predicate:not(../@containsProcessingInstructions = fn:true())
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: a SOAP envelope contains XML processing instructions.
Diagnostic Data:SOAP envelope.

Test Assertion

Test Assertion:BP1033
Description: The SOAP envelope does not contain the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace".
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope
Predicate:not(.//*[fn:namespace-uri(.) = 'http://www.w3.org/XML/1998/namespace'])
Reporting:true=passed, false=failed
Prescription:preferred
Error Message: The SOAP envelope contains the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace".
Diagnostic Data:SOAP envelope

Test Assertion

Test Assertion:BP1032
Description: Test to see if the soap12:Envelope, soap12:Header, and soap12:Body elements have any attributes in either either 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.1 namespace), it is felt that the existence of such attributes represent an error.
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope
Predicate:every $attrib in (self::node()/attribute::*, ./soap12:Header/attribute::*, ./soap12: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/'
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The message has a soap12:Envelope, soap12:Header, or soap12: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.
Diagnostic Data:SOAP envelope

Test Assertion

Test Assertion:BP1035
Description: The value of the wsa:Action element is http://www.w3.org/2005/08/addressing/soap/fault
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope[soap12:Header/wsa:Action and (fn:ends-with(soap12:Body/soap12:Fault/soap12:Code/soap12:Value,'MustUnderstand') or fn:ends-with(soap12:Body/soap12:Fault/soap12:Code/soap12:Value, 'VersionMismatch'))]
Predicate:normalize-space(string(./soap12:Header/wsa:Action)) eq 'http://www.w3.org/2005/08/addressing/soap/fault'
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A fault response does not contain the expected wsa:Action value of http://www.w3.org/2005/08/addressing/soap/fault.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1040a
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.
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/soap12:Envelope[soap12:Body/* and not (soap12:Body/soap12:Fault) ]
Predicate:$target/soap12:Header/wsa:Action
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The use of WS-Addressing was required, but the message did not include wsa:Action.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1040b
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request'] /wsil:messageContents/soap12:Envelope [ not(soap12:Header/wsa:RelatesTo) and not(soap12:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/none') and not(soap12: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"] ]
Predicate: ( (not ($target/soap12:Header/wsa:ReplyTo) or ($target/soap12:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous') ) and (not ($target/soap12:Header/wsa:FaultTo) or ($target/soap12:Header/wsa:FaultTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous') ) )
Reporting: true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1040c
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".
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request'] /wsil:messageContents/soap12:Envelope [ not(soap12:Header/wsa:RelatesTo) and not(soap12:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/none') and not(soap12: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"] ]
Predicate: ( ($target/soap12:Header/wsa:ReplyTo) and not ($target/soap12:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous') and not ($target/soap12:Header/wsa:FaultTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous') )
Reporting: true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1041
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.
Target:/wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope[soap12:Body/soap12:Fault[some $code in .//soap12:Value 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')]]
Predicate:$target/soap12:Header[not(soap12:NotUnderstood[fn:namespace-uri-for-prefix(fn:substring-before(@qname, ':'), .) = 'http://www.w3.org/2005/08/addressing'])]
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1142a
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 soap12: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 soap12:Header
Target: /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/soap12:Envelope [soap12:Header[ wsa:Action and not (wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] )] and soap12:Body/* and not (soap12:Body/soap12:Fault) ] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]/wsdl:operation[@name = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
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/soap12:Header/wsa:To ) )

else fn:true()

)

and

( if

( $myOpBinding/wsdl:output ) then

($target/soap12:Header/wsa:MessageID) else fn:true()

)

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/soap12: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' ) ) ) ) )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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 soap12: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 soap12:Header
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1142b
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 soap12:Header must equal to that specified from the wsdl
Target: /wsil:testLog/wsil:messageLog/wsil:message[@type = 'response']/wsil:messageContents/ soap12:Envelope[soap12:Header[wsa:Action] and soap12:Body/* and not (soap12:Body/soap12:Fault)] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]/ wsdl:operation [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
co-Target: related-Request /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap12:Envelope[soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]
Predicate: ( not ($related-Request/soap12:Header/wsa:ReplyTo) or ($related-Request/soap12:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' ) ) and ( $target/soap12:Header/wsa:RelatesTo [ not ( @RelationshipType ) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) and ( $target/soap12: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/soap12: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' ) ) ) ) )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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 soap12:Header must equal to that specified from the wsdl
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1142c
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 soap12:Header must equal to that specified from the wsdl
Target: /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/ soap12:Envelope [soap12:Body[not (soap12:Fault)] and soap12: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) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]/ wsdl:operation [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
co-Target: related-Request /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap12:Envelope[soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]
Predicate: ( ($related-Request/soap12:Header/wsa:ReplyTo) and not ($related-Request/soap12:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' ) ) and ( $target/soap12:Header/wsa:RelatesTo [ not ( @RelationshipType ) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) and ( $target/soap12: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/soap12: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' ) ) ) ) )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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 soap12:Header must equal to that specified from the wsdl
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1143a
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 soap12: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 soap12:Header
Target: /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/ soap12:Envelope [soap12:Body[not (soap12:Fault)] and soap12: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/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap12: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() ) ]
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/soap12:Header/wsa:To ) ) else fn:true() ) and ( if ( $myOpBinding/wsdl:output ) then ( $target/soap12:Header/wsa:MessageID) else fn:true() )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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 soap12: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 soap12:Header
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1143b
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 soap12:Header must equal to that specified from the wsdl (this is covered by the cotarget presence)
Target: /wsil:testLog/wsil:messageLog/wsil:message[@type = 'response']/wsil:messageContents/soap12:Envelope [soap12:Body[not (soap12:Fault) ] and soap12:Header[wsa:Action] ] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap12: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() ) :) ]
co-Target: related-Request /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap12:Envelope[soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]
Predicate: ( not ($related-Request/soap12:Header/wsa:ReplyTo) or ($related-Request/soap12:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' ) ) and ( $target/soap12:Header/wsa:RelatesTo [ not ( @RelationshipType ) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) and ( $target/soap12:Header[ not (wsa:To) or (wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' )] )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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 soap12:Header must equal to that specified from the wsdl (this is covered by the cotarget presence)
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1143c
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 soap12:Header must equal to that specified from the wsdl (this is covered by the cotarget presence)
Target: /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/soap12:Envelope [soap12:Body[not (soap12:Fault)] and soap12: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/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap12: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() ) ]
co-Target: related-Request /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap12:Envelope[soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]
Predicate: ( ($related-Request/soap12:Header/wsa:ReplyTo) and not ($related-Request/soap12:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' ) ) and ( $target/soap12:Header/wsa:RelatesTo [ not ( @RelationshipType ) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) and ( $target/soap12:Header[ (wsa:To) and not (wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' )] )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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 soap12:Header must equal to that specified from the wsdl (this is covered by the cotarget presence)
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1043a
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope[soap12:Header/wsa:ReplyTo/wsa:ReferenceParameters/*]
co-Target: related-Response /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not(@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] ] /wsil:messageContents/soap12:Envelope [soap12:Header/wsa:RelatesTo[not(@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] = $target/soap12:Header/wsa:MessageID]
Predicate: ( if

( ($related-Response/soap12:Header/wsa:Action) and (not($related-Response/soap12:Body/soap12:Fault) or (not($target/soap12:Header/wsa:FaultTo) and $related-Response/soap12:Header/wsa:Action ne 'http://www.w3.org/2005/08/addressing/fault')) )

then

( every $refP in $target/soap12:Header/wsa:ReplyTo/wsa:ReferenceParameters/* satisfies some $header in $related-Response/soap12:Header/*[@wsa:IsReferenceParameter='1'or @wsa:IsReferenceParameter = 'true'] satisfies fn:resolve-QName(fn:name($refP), $refP) = fn:resolve-QName(fn:name($header), $header) )

else fn:true()

)
Reporting: true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1043b
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope[soap12:Header/wsa:FaultTo/wsa:ReferenceParameters/*]
co-Target: related-Response /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not(@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] ] /wsil:messageContents/soap12:Envelope [soap12:Header/wsa:RelatesTo[not(@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] = $target/soap12:Header/wsa:MessageID]
Predicate: ( if

( ($related-Response/soap12:Header/wsa:Action) and ($related-Response/soap12:Body/soap12:Fault) )

then

( every $refP in $target/soap12:Header/wsa:FaultTo/wsa:ReferenceParameters/* satisfies some $header in $related-Response/soap12:Header/*[@wsa:IsReferenceParameter='1'or @wsa:IsReferenceParameter = 'true'] satisfies fn:resolve-QName(fn:name($refP), $refP) = fn:resolve-QName(fn:name($header), $header) )

else fn:true()

)
Reporting: true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1153a
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/ soap12:Envelope [soap12:Body[not (soap12:Fault)] and soap12:Header[not(wsa:To) ]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) and ( some $port in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port satisfies not(wsa:EndpointReference) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap12: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() ) ]
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) ]
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 (.//soap12:Envelope/soap12:Header/wsa:RelatesTo = $target/soap12:Header/wsa:MessageID)] /wsil:messageContents/soap12:Envelope/soap12:Body/soap12:Fault ) ) else fn:true() )
Reporting: true=passed, false=warning
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1153b
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/wsil:messageContents/soap12:Envelope [soap12:Header[ not (wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ) and not(wsa:To)] and soap12:Body/* and not (soap12:Body/soap12: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)) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]/wsdl:operation[@name = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
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) ]
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 (.//soap12:Envelope/soap12:Header/wsa:RelatesTo = $target/soap12:Header/wsa:MessageID)] /wsil:messageContents/soap12:Envelope/soap12:Body/soap12:Fault ) )

else fn:true()

)

Reporting: true=passed, false=warning
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1125a
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/ soap12:Envelope [soap12:Body[not (soap12:Fault)] and not(soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ) and ((some $repto in soap12:Header/wsa:ReplyTo satisfies fn:contains($repto, 'anonymous')) or not(soap12:Header/wsa:ReplyTo) ) ] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) and ( some $port in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port satisfies not(wsa:EndpointReference) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap12: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() ) ]
Predicate:$target/../../@type = 'request'
Reporting: true=passed, false=failed
Prescription:mandatory
Error Message: An envelope for a WSDL doc/lit bound request message, with a wsa:ReplyTo anonymous, was sent over an HTTP response.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1125b
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/ soap12:Envelope [soap12:Body[not (soap12:Fault)] and not(soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ) and ((some $repto in soap12:Header/wsa:ReplyTo satisfies fn:contains($repto, 'anonymous')) or not(soap12: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)) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]/wsdl:operation[@name = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Predicate:$target/../../@type = 'request'
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: An envelope for a WSDL rpc/lit bound request message, with a wsa:ReplyTo anonymous, was sent over an HTTP response.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1126a
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope [soap12:Body[not (soap12:Fault) ] and soap12: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/soap12:Envelope/soap12:Header/wsa:MessageID = $respenv/soap12:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and $req/wsil:messageContents/soap12:Envelope/soap12: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/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap12: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() ) ]
Predicate:$target/../../@type = 'response'
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1126b
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message/wsil:messageContents/soap12:Envelope [soap12:Body[not (soap12:Fault) ] and soap12: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/soap12:Envelope/soap12:Header/wsa:MessageID = $respenv/soap12:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and $req/wsil:messageContents/soap12:Envelope/soap12: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) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]/ wsdl:operation [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Predicate:$target/../../@type = 'response'
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1144
Description: The message must specify an action 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).
Target: /wsil:testLog/wsil:messageLog/wsil:message[wsil:messageContents/soap12:Envelope/soap12:Header/wsa:Action]
Prerequisite:BP1761
Predicate: (wsil:messageContents/soap12:Envelope/soap12:Header/wsa:Action/text() = wsil:httpHeaders/wsil:httpHeader[fn:lower-case(@key) = 'action']/@value) or not(wsil:httpHeaders/wsil:httpHeader[fn:lower-case(@key) = 'action'])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A message did not specify an action 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).
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1002
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>
Target: /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request'and fn:contains(wsil:httpHeaders/wsil:requestLine/text(), 'HTTP')]
Predicate:fn:contains(wsil:httpHeaders/wsil:requestLine/text(), 'HTTP/1.0') or fn:contains(wsil:httpHeaders/wsil:requestLine/text(), 'HTTP/1.1')
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The message that is sent over HTTP, is not sent using HTTP/1.1 or HTTP/1.0.
Diagnostic Data:All HTTP headers.

Test Assertion

Test Assertion:BP1001
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>
Target:/wsil:testLog/wsil:messageLog/wsil:message
Prerequisite:BP1002
Predicate:contains(wsil:httpHeaders/wsil:requestLine/text(), 'HTTP/1.1')
Reporting: true=passed, false=warning
Prescription:preferred
Error Message: The message is not sent using HTTP/1.1.
Diagnostic Data:All HTTP headers.

Test Assertion

Test Assertion:BP1006
Description: The action header contains a quoted string of any value, including "".
Target:/wsil:testLog/wsil:messageLog/wsil:message[@type = 'request'][wsil:httpHeaders/wsil:contentTypeHeader]
Prerequisite:BP1761
Predicate: every $par in wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter satisfies not($par/@quoted) or not(fn:lower-case($par/@key) eq 'type' or fn:lower-case($par/@key) eq 'start-info' or fn:lower-case($par/@key) eq 'action' or fn:lower-case($par/@key) eq 'boundary') or $par/@quoted = fn:true()
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: action HTTP header does not contain a quoted string.
Diagnostic Data:All HTTP headers.

Test Assertion

Test Assertion:BP1100
Description: The message uses a "200 OK" HTTP status code.
Target://wsil:message[@type='response'][wsil:messageContents/soap12:Envelope/soap12:Body[not(soap12:Fault)]]
Predicate:contains(wsil:httpHeaders/wsil:requestLine, "200")
Reporting:true=passed, false=failed
Prescription:preferred
Error Message: The envelope of the response message does not contain a soap12:Fault and the message does not use a "200 OK" HTTP status code.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1101
Description: The response message, if successfully processed at HTTP level, is sent using either a "200 OK" or "202 Accepted" HTTP status code.
Target://wsil:message[@type='response'][wsil:messageContents[not(soap12:Envelope)]][not (matches(wsil:httpHeaders/wsil:requestLine, "4[0-9][0-9]"))]
Predicate:contains(wsil:httpHeaders/wsil:requestLine, "200") or contains(wsil:httpHeaders/wsil:requestLine, "202 Accepted")
Reporting:true=passed, false=failed
Prescription:preferred
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1150
Description: The message must be a response sent in the entity body of the HTTP Response using the same HTTP connection as the request message of that operation.
Target:/wsil:testLog/wsil:messageLog/wsil:message[*[contains(., 'MustUnderstand') or contains(., 'VersionMismatch')]]
Predicate:wsil:messageContents/soap12:Envelope/soap12:Body/soap12:Fault/soap12:Code/soap12:Value[contains(., 'MustUnderstand') or contains(., 'VersionMismatch')]
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A response message was not sent in the entity body of the HTTP Response using the same HTTP connection as the request message of that operation.
Diagnostic Data:Complete message

Test Assertion

Test Assertion:BP1151
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ] [./wsil:messageContents/soap12:Envelope [not (soap12:Body/soap12:Fault [contains(soap12:Code/soap12:Value, 'MustUnderstand') or contains(soap12:Code/soap12:Value, 'VersionMismatch')] ) ] ]
co-Target: myRequestMsg /wsil:testLog/wsil:messageLog/wsil:message [ @type = 'request' and (if (not(./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:MessageID) ) then ( @conversation = $target/../../@conversation) else (./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] )) ]
Prerequisite: $myRequestMsg[1]/wsil:messageContents/soap12:Envelope/soap12:Header[wsa:ReplyTo and not(wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous' )]
Predicate: ($target/@type = 'request') and ( $target/wsil:messageContents/soap12:Envelope/soap12:Header [ (wsa:To) and not (wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' ) ] )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A message was not 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.
Diagnostic Data:Complete message

Test Assertion

Test Assertion:BP1146
Description: A non-faulting response must be sent to the endpoint referred to by the wsa:ReplyTo header or generate a fault instead.
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/soap12:Envelope/soap12:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ] [wsil:messageContents/soap12:Envelope[not(soap12:Body/soap12:Fault)]]
co-Target: myRequestMsg /wsil:testLog/wsil:messageLog/wsil:message [ @type = 'request' and (if (not(./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:MessageID) ) then ( @conversation = $target/../../@conversation) else (./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] )) ]
Predicate: ((not($myRequestMsg/wsil:messageContents/soap12:Envelope/soap12:Header/wsa:ReplyTo) or $myRequestMsg/wsil:messageContents/soap12:Envelope/soap12:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous') and $target[@type = 'response']/wsil:messageContents/soap12:Envelope/soap12:Header [ wsa:To = 'http://www.w3.org/2005/08/addressing/anonymous' or not(wsa:To )]) or ( $target/wsil:messageContents/soap12:Envelope/soap12:Header/wsa:To = $myRequestMsg/wsil:messageContents/soap12:Envelope/soap12:Header/wsa:ReplyTo/wsa:Address )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A response message was sent to a destination other than the expected endpoint, i.e. different from wsa:ReplyTo in the request message.
Diagnostic Data:Complete message

Test Assertion

Test Assertion:BP1152a
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message [wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and wsil:messageContents/soap12:Envelope/soap12:Body[not(soap12:Fault)] and (some $req in /wsil:testLog/wsil:messageLog/wsil:message satisfies $req/wsil:messageContents/soap12:Envelope/soap12:Header/wsa:MessageID = wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and $req/wsil:messageContents/soap12:Envelope/soap12:Header[ wsa:ReplyTo[1] and not(fn:contains(wsa:ReplyTo[1]/wsa:Address, 'http://www.w3.org/2005/08/addressing/anonymous'))] )]
co-Target: myRequestMsg /wsil:testLog/wsil:messageLog/wsil:message [wsil:messageContents/soap12:Envelope/soap12:Header/wsa:MessageID = $target/wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]]
Predicate: ($target/@type = 'request') and ( $target/wsil:messageContents/soap12:Envelope/soap12:Header [ (wsa:To) and not (fn:contains(wsa:To[1], 'http://www.w3.org/2005/08/addressing/anonymous' )) ] )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message

Test Assertion

Test Assertion:BP1152b
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message [wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and wsil:messageContents/soap12:Envelope/soap12:Body[soap12:Fault] and wsil:messageContents/soap12:Envelope/soap12: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/soap12:Envelope/soap12:Header/wsa:MessageID = wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] and $req/wsil:messageContents/soap12:Envelope/soap12:Header[ wsa:FaultTo[1] and not(fn:contains(wsa:FaultTo[1]/wsa:Address, 'http://www.w3.org/2005/08/addressing/anonymous'))] )]
co-Target: myRequestMsg /wsil:testLog/wsil:messageLog/wsil:message [wsil:messageContents/soap12:Envelope/soap12:Header/wsa:MessageID = $target/wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)]]
Predicate: ($target/@type = 'request') and ( $target/wsil:messageContents/soap12:Envelope/soap12:Header [ (wsa:To) and not (fn:contains(wsa:To[1], 'http://www.w3.org/2005/08/addressing/anonymous' )) ] )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message

Test Assertion

Test Assertion:BP1152c
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message[ not (wsil:messageContents/soap12:Envelope/soap12:Body/soap12:Fault) and wsil:messageContents/soap12:Envelope/soap12:Header [(wsa:To) and not (fn:contains(wsa:To[1], 'http://www.w3.org/2005/08/addressing/anonymous' )) ]]
Predicate:$target/@type = 'request'
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message

Test Assertion

Test Assertion:BP2703
Description: The wsdl:definitions is a well-formed XML 1.0 document. The wsdl:definitions namespace has value: http://schemas.xmlsoap.org/wsdl/.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[fn:prefix-from-QName(fn:node-name(*:definitions)) eq 'wsdl' or wsdl:definitions]
Predicate:fn:namespace-uri-from-QName(fn:node-name(./*:definitions)) eq 'http://schemas.xmlsoap.org/wsdl/' or ./*:bindingTemplate
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data: Error message from the XML parser

Test Assertion

Test Assertion:BP2756
Description:A DESCRIPTION MUST NOT include the wsoap12:soapActionRequired attribute
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions
Predicate:not (.//wsoap12:operation/@soapActionRequired)
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A DESCRIPTION include the wsoap12:soapActionRequired attribute
Diagnostic Data:

Test Assertion

Test Assertion:BP1761
Description:A SOAP1.2 SENDER SHOULD NOT include the SOAPAction HTTP header
Target:/wsil:testLog/wsil:messageLog/wsil:message[wsil:httpHeaders]
Predicate:not(wsil:httpHeaders/wsil:httpHeader[fn:lower-case(@key) = 'soapaction'])
Reporting:true=passed, false=failed
Prescription:preferred
Error Message: A SOAP1.2 SENDER has included the SOAPAction HTTP header (instead of using the 'action' header)
Diagnostic Data:

Test Assertion

Test Assertion:BP1757
Description: A receiver must not fault messages that do not have the action parameter on the Content-Type HTTP header field.
Target:/wsil:testLog/wsil:messageLog/wsil:message[not(wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[fn:lower-case(@key) = 'action'])]/wsil:messageContents/soap12:Envelope
Prerequisite:BP1761
Predicate:not (/wsil:testLog/wsil:messageLog/wsil:message[(@type = 'response' and @conversation = $target/../../@conversation) or (.//soap12:Envelope/soap12:Header/wsa:RelatesTo = $target/soap12:Header/wsa:MessageID)]/wsil:messageContents/soap12:Envelope/soap12:Body/soap12:Fault )
Reporting: true=passed, false=warning
Prescription:mandatory
Error Message: A soap Fault has been generated when receiving a message with no action parameter on the Content-Type HTTP header field: verify that this Fault has another cause - it must not be caused by this parameter absence.
Diagnostic Data: {SOAP message}

Test Assertion

Test Assertion:BP2704
Description: The wsdl:definitions using the WSDL SOAP binding namespace (prefixed "wsoap12" in this Profile) MUST be valid according to the XML Schema found at " http://schemas.xmlsoap.org/wsdl/soap12/wsdl11soap12.xsd ".
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[.//wsoap12:*]
co-Target: metadata$target/../@schemaValid
Predicate: $target/../@schemaValid = fn:true()
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The wsdl:definitions is using the WSDL SOAP binding namespace (prefixed "wsoap12" in this Profile) in a way that is not valid according to the XML Schema found at " http://schemas.xmlsoap.org/wsdl/soap12/wsdl11soap12.xsd ".
Diagnostic Data: Error message from the XML parser

Test Assertion

Test Assertion:BP2101
Description: Each wsdl:import statement is only used to import another WSDL description.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:import]
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' ) )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A wsdl:import element does not contain a reference to another WSDL description.
Diagnostic Data: wsdl:import element(s) that does not reference a WSDL description.

Test Assertion

Test Assertion:BP2803
Description: The "namespace" attribute's value is not a relative URI.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:import]
Prerequisite:BP2703
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'))
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message:The wsdl:import element's "namespace" attribute value is a relative URI.
Diagnostic Data:Defective wsdl:import element.

Test Assertion

Test Assertion: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.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[descendant::xsd:import]
Predicate:every $imp in descendant::xsd:import satisfies ($imp/ancestor::xsd:schema and $imp/ancestor::wsdl:types)
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A XML schema import element was found outside of an xsd:schema element.
Diagnostic Data: Defective XML schema import element.

Test Assertion

Test Assertion:BP2202
Description: All imported schema use UTF-8 or UTF-16 for the encoding.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types/xsd:schema/xsd:import]
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') )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The XML declaration statement within an imported XML Schema does not use expected encoding (UTF-8 or UTF-16).
Diagnostic Data:XML declaration statement.

Test Assertion

Test Assertion:BP2098
Description: The "location" attribute is specified for the wsdl:import element, and has a non-empty value.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:import
Predicate:@location and @location != ''
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A wsdl:import element does not have a "location" attribute, or has an empty value for the location attribute.
Diagnostic Data:Defective wsdl:import element.

Test Assertion

Test Assertion: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.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:import]
Predicate: not(wsdl:import/preceding-sibling::wsdl:*[(local-name-from-QName(node-name(.)) != 'documentation') and (local-name-from-QName(node-name(.)) != 'import')])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A wsdl:import element in the WSDL namespace under the wsdl:definitions element, is preceded by child elements other than wsdl:documentation elements.
Diagnostic Data: Display the WSDL import element(s) that failed the assertion.

Test Assertion

Test Assertion:BP2018
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).
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types]
Prerequisite:BP2703
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')])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:

Test Assertion

Test Assertion:BP2700
Description: The wsdl:definitions is a well-formed XML 1.0 document.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions
co-Target: metadata$target/../@validXml
Predicate:../@validXml=fn:true()
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The wsdl:definitions is not a well-formed XML 1.0 document.
Diagnostic Data: Error message from the XML parser

Test Assertion

Test Assertion:BP2034
Description: The candidate description does not contain the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace".
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions
Prerequisite:BP2703
Predicate:not(descendant-or-self::*/namespace::node()[1] = 'xmlns:xml="http://www.w3.org/XML/1998/namespace"')
Reporting:true=passed, false=failed
Prescription:preferred
Error Message: The candidate description contains the namespace declaration xmlns:xml="http://www.w3.org/XML/1998/namespace".
Diagnostic Data:

Test Assertion

Test Assertion:BP2201
Description: The XML declaration statement uses UTF-8 or UTF-16 for the encoding.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions
co-Target: metadata$target/../@encoding
Predicate:fn:starts-with(fn:lower-case(../@encoding), 'utf-8') or fn:starts-with(fn:lower-case(../@encoding), 'utf-16')
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: XML declaration statement within WSDL document does not use expected encoding (UTF-8 or UTF-16).
Diagnostic Data:XML declaration statement.

Test Assertion

Test Assertion:BP2104
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.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:import
Prerequisite:BP2101
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)
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:wsdl:import element.

Test Assertion

Test Assertion:BP2123
Description: Contained WSDL extension elements do not use the wsdl:required attribute value of "true".
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)]
Predicate:not(@wsdl:required = fn:true()
Reporting:true=passed, false=failed
Prescription:preferred
Error Message: An extension element within a WSDL element that claims conformance to the Basic Profile has a wsdl:required attribute with a value of "true".
Diagnostic Data: Display the extension element that failed the assertion.

Test Assertion

Test Assertion: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.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions
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:*/wsoap12: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:*/wsoap12: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 ) ) ) )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message:This DESCRIPTION uses QName references to WSDL components in namespaces that are neither imported, nor defined in the referring WSDL document
Diagnostic Data:Defective QName(s).

Test Assertion

Test Assertion:BP2417
Description:A QName reference to a Schema component in a DESCRIPTION MUST use the namespace defined in the targetNamespace attribute on the xsd:schema element, or to a namespace defined in the namespace attribute on an xsd:import element within the xsd:schema element.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions
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' ) ) ) )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message:A QName reference to a Schema component in a DESCRIPTION does not use the namespace defined in the targetNamespace attribute on the xsd:schema element, or a namespace defined in the namespace attribute on an xsd:import element within the xsd:schema element.
Diagnostic Data:Defective QName(s).

Test Assertion

Test Assertion:BP2106
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".
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types/xsd:schema/xsd:import]
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' )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: xsd:import element does not resolve to document whose root element is not "schema" from xsd namespace
Diagnostic Data: Defective XML schema import element.

Test Assertion

Test Assertion: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).
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types/xsd:schema]
Predicate:wsdl:types/xsd:schema[@targetNamespace != '' or (count(xsd:import) + count(xsd:annotation)) = count(child::*)]
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data: Defective xsd:schema element(s).

Test Assertion

Test Assertion:BP2108b
Description: The type soapenc:Array does not appear in these declarations, and the wsdl:arrayType attribute is not used in the type declaration.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:types[xsd:schema]
Predicate:not (xsd:schema[descendant::xsd:extension/@base = "soapenc:Array" or descendant::xsd:restriction/@base = "soapenc:Array"])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: An Array declaration uses - restricts or extends - the soapenc:Array type, or the wsdl:arrayType attribute is used in the type declaration.
Diagnostic Data:Defective declaration(s).

Test Assertion

Test Assertion:BP2108a
Description: The type soapenc:Array does not appear in these declarations, and the wsdl:arrayType attribute is not used in the type declaration.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:types[xsd:schema]
Predicate:not (xsd:schema/descendant::*/@wsdl:arrayType)
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: An Array declaration uses - restricts or extends - the soapenc:Array type, or the wsdl:arrayType attribute is used in the type declaration.
Diagnostic Data:Defective declaration(s).

Test Assertion

Test Assertion:BP2110
Description: The declaration does not use the naming convention ArrayOfXXX.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions[wsdl:types/xsd:schema]
Predicate:not (wsdl:types/xsd:schema/descendant::xsd:element[fn:starts-with(@name, 'ArrayOf')])
Reporting:true=passed, false=failed
Prescription:preferred
Error Message: A declaration is using the convention ArrayOfXXX.
Diagnostic Data:Defective declaration(s).

Test Assertion

Test Assertion:BP1204
Description: The soap12:Body of the envelope does not contain the soapenc:arrayType attribute.
Target://soap12:Envelope
Predicate:not (descendant::*[@soapenc:arrayType])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The soap12:Body of an envelope contains the soapenc:arrayType attribute.
Diagnostic Data:SOAP envelope.

Test Assertion

Test Assertion:BP2124
Description: No two global element declarations share the same qualified name.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:types/xsd:schema
Predicate:count (xsd:element[@name = preceding-sibling::element/@name]) = 0
Reporting:true=passed, false=failed
Prescription:preferred
Error Message: Two or more global element declarations share the same qualified name.
Diagnostic Data: The wsdl:operation elements containing the repeated global element declarations.

Test Assertion

Test Assertion:BP2125
Description: No two type definitions share the same qualified name.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:types/xsd:schema
Predicate:(count (xsd:ComplexType[@name = preceding-sibling::ComplexType/@name]) = 0) and (count (xsd:SimpleType[@name = preceding-sibling::SimpleType/@name]) = 0)
Reporting:true=passed, false=failed
Prescription:preferred
Error Message: Two or more type definitions share the same qualified name.
Diagnostic Data: The elements containing the repeated qualified name.

Test Assertion

Test Assertion:BP2111
Description: If the "parts" attribute is present, then the wsoap12:body element(s) have at most one part listed in the parts attribute.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[not(.//wsoap12:*[@style = 'rpc'])]
Prerequisite:BP2017
Predicate:not(.//wsoap12:body[@parts and contains(@parts," ")])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: One or more wsoap12:body element(s) in a document-literal soabinding does not have at most one part listed in the parts attribute.
Diagnostic Data: Defective wsoap12:body element(s).

Test Assertion

Test Assertion:BP2119
Description: If it does not specify the parts attribute on a wsoap12:body element, the corresponding abstract wsdl:message defines zero or one wsdl:part.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[not(.//wsoap12:*[@style = 'rpc'])]
Prerequisite:BP2017
Predicate:every $sbody in wsdl:operation//wsoap12: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
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A document-literal binding which does not specify the parts attribute, has more than one wsdl:part in the associated wsdl:message element.
Diagnostic Data:Defective wsdl:binding element.

Test Assertion

Test Assertion:BP2013
Description: The binding (in wsoap12:body elements) only refers to part elements that have been defined using the "type" attribute
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]
Prerequisite:BP2017
Predicate:every $sbody in wsdl:operation//wsoap12: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))
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: soabinding (in wsoap12:body elements) refers to part(s) that do not have the "type" attribute.
Diagnostic Data: {binding}{message with failed part}

Test Assertion

Test Assertion:BP2012
Description: A doc//wsoap12:body/@use != 'literal') and (count($myOpBinding/..//wsoap12:body) = count($myOpBinding/..//wsoap12:body/@use)) and not($myOpBinding/..//wsoap12:*/@style = 'rpc') and $myOpBinding/wsdl:output/wsoap12:body[@parts and (@parts = '' or @parts = ' ' )] ument-literal binding only refers in wsoap12:body elements to part elements that have been defined using the "element" attribute.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[not(.//wsoap12:*[@style = 'rpc'])]
Prerequisite:BP2017
Predicate:every $sbody in wsdl:operation//wsoap12: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))
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The binding (in wsoap12:body elements) refers to part(s) of a soap12:Body element that do not have the "element" attribute.
Diagnostic Data: wsoap12:body element(s) that have non "element" parts attributes.

Test Assertion

Test Assertion:BP1212a
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 wsoap12:body element.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body//soap12:Fault) ] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]/wsdl:operation[@name = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Predicate: some $mbody in ./soap12: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/wsoap12: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))))
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The content of the soap12: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 wsoap12:body element.
Diagnostic Data:

Test Assertion

Test Assertion:BP1212b
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 wsoap12:body element.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body/soap12:Fault)] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]/ wsdl:operation [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Predicate: some $mbody in ./soap12: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/wsoap12: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)))
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The content of the soap12: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 wsoap12:body element.
Diagnostic Data:

Test Assertion

Test Assertion:BP1213a
Description:The request message envelope has no element content in the soap12:Body element if the value of the parts attribute of the wsoap12:body is an empty string in the corresponding doc-literal description.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body[not (soap12:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap12: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() ) ]
Prerequisite: some $myOpBind in $myOpBinding satisfies ( $myOpBind/../wsoap12:binding[ not (@style = 'rpc' )] and $myOpBind/wsoap12:operation[ not (@style = 'rpc' )] and $myOpBind/wsdl:input/wsoap12:body[@parts and (@parts = '' or @parts = ' ' )] )
Predicate:count(./soap12:Body/*) eq 0
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message:The request message soap12:Body element must be empty when, in the corresponding doc-literal description, the value of the parts attribute of wsoap12:body is an empty string.
Diagnostic Data:SOAP envelope

Test Assertion

Test Assertion:BP1213b
Description: The response message envelope has no element content in the soap12:Body element if the value of the parts attribute of the wsoap12:body is an empty string in the corresponding doc-literal description.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap12:Envelope[soap12:Body[not (soap12:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap12: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() ) ]
Prerequisite: some $myOpBind in $myOpBinding satisfies ( $myOpBind/../wsoap12:binding[ not (@style = 'rpc' )] and $myOpBind/wsoap12:operation[ not (@style = 'rpc' )] and $myOpBind/wsdl:input/wsoap12:body[@parts and (@parts = '' or @parts = ' ' )] )
Predicate:count(./soap12:Body/*) eq 0
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message:The response message soap12:Body element must be empty when, in the corresponding doc-literal description, the value of the parts attribute of wsoap12:body is an empty string.
Diagnostic Data:SOAP envelope

Test Assertion

Test Assertion:BP1214a
Description: The request message envelope does not contain any part accessor elements if the value of the parts attribute of the wsoap12:body is an empty string in the corresponding rpc-literal description
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body/soap12:Fault) ] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]/wsdl:operation [@name = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Prerequisite: $myOpBinding/wsdl:input/wsoap12:body[@parts and (@parts = '' or @parts = ' ' )]
Predicate:count(./soap12:Body/*/*) eq 0
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The content of the request message soap12: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 wsoap12:body is an empty string.
Diagnostic Data:SOAP envelope

Test Assertion

Test Assertion:BP1214b
Description: The response message envelope does not contain any part accessor elements if the value of the parts attribute of the wsoap12:body is an empty string in the corresponding rpc-literal description
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/ soap12:Envelope[soap12:Body/* and not (soap12:Body/soap12:Fault)] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]/ wsdl:operation [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Prerequisite: $myOpBinding/wsdl:output/wsoap12:body[@parts and (@parts = '' or @parts = ' ' )]
Predicate:count(./soap12:Body/*/*) eq 0
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The content of the response message soap12: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 wsoap12:body is an empty string.
Diagnostic Data:SOAP envelope

Test Assertion

Test Assertion:BP2113
Description: When they contain references to message parts, the wsoap12:header, wsoap12:headerfault and wsoap12:fault elements only refer to wsdl:part element(s) that have been defined using the "element" attribute.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:header[@part] or .//wsoap12:headerfault[@part] or .//wsdl:fault/wsoap12:fault[@name] ]
Predicate:(every $shhf in wsdl:operation//wsoap12:*[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/wsoap12: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)
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The wsoap12:header, wsoap12:headerfault or wsoap12:fault elements refer to wsd:part element(s) that are not defined using only the "element" attribute.
Diagnostic Data: Defective wsdl:binding and wsdl:part elements.

Test Assertion

Test Assertion:BP2114
Description: Every wsdl:part from each wsdl:message in the associated wsdl:portType is referenced either by the wsoap12:body, wsoap12:header, wsoap12:fault, or wsoap12:headerfault.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
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/wsoap12: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/wsoap12:body/@parts,'\s+'), $mpart/@name)) or

(some $extra in $bing/wsdl:operation/wsdl:*/wsoap12:*[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/wsoap12: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/wsoap12:body/@parts,'\s+'), $mpart/@name)) or

(some $extra in $bing/wsdl:operation/wsdl:*/wsoap12:*[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/wsoap12:fault/@name) )

)

Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A wsdl:binding does not bind every wsdl:part of a wsdl:message in the wsdl:portType to which it refers to one of wsoap12:body, wsoap12:header, wsoap12:fault or wsoap12:headerfault.
Diagnostic Data: {Defective wsdl:binding element}{message with part(s) unbound}

Test Assertion

Test Assertion:BP2115
Description: An "element" attribute on any wsdl:part element refers to a global element declaration.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part/@element]
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 )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Defective wsdl:message element.

Test Assertion

Test Assertion:BP1012a
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 soap12: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 wsoap12:body element.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body//soap12:Fault) ] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]/wsdl:operation[@name = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Predicate: some $mbody in ./soap12: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/wsoap12: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())
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The content of the request message envelope does not match the wsdl:message definition for rpc/lit binding. The order of parts in soap12: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 wsoap12:body element.
Diagnostic Data: Non-matching WSDL operation and envelope.

Test Assertion

Test Assertion:BP1012b
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 soap12: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 wsoap12:body element.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body/soap12:Fault)] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]/ wsdl:operation [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Predicate: some $mbody in ./soap12: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/wsoap12: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()
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The content of the response message envelope does not match the wsdl:message definition for rpc/lit binding. The order of parts in soap12: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 wsoap12:body element.
Diagnostic Data: Non-matching WSDL operation and envelope.

Test Assertion

Test Assertion:BP2208
Description: The wsdl:operation element is either a WSDL request/response or a one-way operation (no Notification or Sollicit-Response).
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation
Prerequisite:BP2703
Predicate:not(*[local-name-from-QName(node-name(.)) = 'output' and position() = 1])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: wsdl:operation was not a request/response or one-way operation.
Diagnostic Data:Operation.

Test Assertion

Test Assertion:BP2010
Description: name attributes of Operations are unique in the wsdl:portType definition
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType
Prerequisite:BP2703
Predicate: not(wsdl:operation[@name = preceding-sibling::*/@name]) and not(wsdl:operation[@name = following-sibling::*/@name])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: name attributes are not unique within the portType definition.
Diagnostic Data: list of duplicate name(s) and of elements that use them.

Test Assertion

Test Assertion:BP2014
Description: The parameterOrder attribute omits at most 1 part from an output wsdl:message.
Target:/wsil:testLog//wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@parameterOrder]
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
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: An operation associated with an rpc-literal binding has a parameterOrder attribute that omits more than 1 part.
Diagnostic Data: {defective portType}{output wsdl:message}

Test Assertion

Test Assertion:BP2116
Description: The wsdl:message element does not contain part elements that use both "type" and "element" attributes.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:message[wsdl:part]
Predicate:not(wsdl:part[@type and @element])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A wsdl:message element has at least one wsdl:part element that contains both type and element attributes.
Diagnostic Data:Defective wsdl:message element.

Test Assertion

Test Assertion:BP2402
Description: The wsdl:binding element has a wsoap12:binding child element.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
Prerequisite:BP2703
Predicate:child::wsoap12:binding
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The wsdl:binding element does not use a wsoap12:binding element as defined in section "3 SOAP Binding." of the WSDL 1.1 specification.
Diagnostic Data:wsdl:binding.

Test Assertion

Test Assertion:BP2403
Description: The contained soabinding element has a "transport" attribute
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsoap12:binding]
Prerequisite:BP2703 BP2402
Predicate:wsoap12:binding[@transport]
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: Transport attribute of the soabinding does not exist.
Diagnostic Data:soabinding element.

Test Assertion

Test Assertion:BP2404
Description: The contained soabinding element has a "transport" attribute, which has value: http://schemas.xmlsoap.org/soap/http.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsoap12:binding]
Prerequisite:BP2703 BP2402 BP2403
Predicate:wsoap12:binding[@transport='http://schemas.xmlsoap.org/soap/http']
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: Transport attribute of the soabinding does not contain http://schemas.xmlsoap.org/soap/http.
Diagnostic Data:soabinding element.

Test Assertion

Test Assertion:BP2017
Description: The wsdl:binding is either an rpc-literal binding or a document-literal binding.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsoap12:binding]
Prerequisite:BP2404
Predicate:not(.//wsoap12:body/@use != 'literal') and (count(.//wsoap12:body) = count(.//wsoap12:body/@use)) and ((not(.//wsoap12:*/@style != 'rpc') and not(.//wsoap12:operation[not(@style) and not(../../wsoap12:binding/@style)])) or (not(.//wsoap12:*/@style != 'document')))
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The "style" attribute of an operation in soabinding, does not have the same value of "document" or "rpc", as other operations of the binding.
Diagnostic Data:defective soabinding element.

Test Assertion

Test Assertion:BP2406
Description: The use attribute has a value of "literal".
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[wsoap12:binding]
Prerequisite:BP2703
Predicate:not(.//*[@use and @use != "literal"])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The use attribute of a wsoap12:body, wsoap12:fault, wsoap12:header and wsoap12:headerfault does not have value of "literal".
Diagnostic Data: Defective wsoap12:body, wsoap12:fault, wsoap12:header, or wsoap12:headerfault elements.

Test Assertion

Test Assertion:BP2705
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 .
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[wsdl:definitions]
co-Target: metadata$target/@schemaValid
Predicate: $target/@schemaValid = fn:true()
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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
Diagnostic Data: Error message from the XML parser

Test Assertion

Test Assertion:BP2120b
Description: Each operation referenced by the binding results in a unique wire signature.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]
co-Target: imagesig for $bop_1 in $target/wsdl:operation return fn:string-join( ( $bop_1/wsdl:input/wsoap12: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' ) ) ) ) ),',' )
Prerequisite:BP2017
Predicate: fn:count($imagesig) = fn:count(fn:distinct-values($imagesig))
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A binding has operations that are not unique.
Diagnostic Data: Defective wsdl:operation element(s).

Test Assertion

Test Assertion:BP2120a
Description: Each operation referenced by the binding results in a unique wire signature.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [not(.//wsoap12:*[@style = 'rpc'])]
co-Target: 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' ) ) ) ) ),',' )
Prerequisite:BP2017
Predicate: fn:count($imagesig) = fn:count(fn:distinct-values($imagesig))
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A binding has operations that are not unique.
Diagnostic Data: Defective wsdl:operation element(s).

Test Assertion

Test Assertion:BP2711
Description:don't know why this is listed as Not testable.
Target:///wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:service/wsdl:port
Predicate:not(wsoap12:address/@location = preceding::wsdl:port/wsoap12:address/@location) and not(wsoap12:address/@location = following::wsdl:port/wsoap12:address/@location)
Reporting:true=passed, false=failed
Prescription:preferred
Error Message:
Diagnostic Data:

Test Assertion

Test Assertion:BP1011a
Description: The content of the envelope matches the definition in the WSDL document. In case of a doc-lit binding, the child element of soap12: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)
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body[not (soap12:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap12: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() ) ]
Predicate:count(soap12:Body/*) le 1
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The content of the envelope associated with a doc-lit WSDL binding does not match the wsdl:message definition. the child element of soap12:body is not an instance of the global element declaration referenced by the corresponding wsdl:part.
Diagnostic Data: Non-matching WSDL operation and envelope.

Test Assertion

Test Assertion:BP1011b
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 soap12: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)
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap12:Envelope[soap12:Body[not (soap12:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap12: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() ) ]
Predicate:count(soap12:Body/*) le 1
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The content of the envelope does not match the wsdl:message definition. the child element of soap12:Body is not an instance of the global element declaration referenced by the corresponding wsdl:part.
Diagnostic Data: Non-matching WSDL operation and envelope.

Test Assertion

Test Assertion:BP1111a
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 soap12: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)
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body[not (soap12:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap12: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() ) ]
Prerequisite: some $myOpBind in $myOpBinding satisfies ( not($myOpBind/..//wsoap12:body/@use != 'literal') and (count($myOpBind/..//wsoap12:body) = count($myOpBind/..//wsoap12:body/@use)) and $myOpBind/../wsoap12:binding[ not (@style = 'rpc' )] and $myOpBind/wsoap12:operation[ not (@style = 'rpc' )] )
Predicate:count(soap12:Body/*) le 1
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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 soap12:body is not an instance of the global element declaration referenced by the corresponding wsdl:part.
Diagnostic Data: Non-matching WSDL operation and envelope.

Test Assertion

Test Assertion:BP1111b
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 soap12: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)
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap12:Envelope[soap12:Body[not (soap12:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap12: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() ) ]
Prerequisite: some $myOpBind in $myOpBinding satisfies ( not($myOpBind/..//wsoap12:body/@use != 'literal') and (count($myOpBind/..//wsoap12:body) = count($myOpBind/..//wsoap12:body/@use)) and $myOpBind/../wsoap12:binding[ not (@style = 'rpc' )] and $myOpBind/wsoap12:operation[ not (@style = 'rpc' )] )
Predicate:count(soap12:Body/*) le 1
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The content of the response message envelope does not match the wsdl:message definition. the child element of soap12:Body is not an instance of the global element declaration referenced by the corresponding wsdl:part.
Diagnostic Data: Non-matching WSDL operation and envelope.

Test Assertion

Test Assertion:BP2019
Description: For doc/lit binding, the "namespace" attribute is not specified in any contained wsoap12:body, wsoap12:header, wsoap12::headerfault, wsoap12:fault elements
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[not(.//wsoap12:*[@style = 'rpc'])]
Prerequisite:BP2406
Predicate: every $wopbind in ( $target//wsoap12:body | $target//wsoap12:fault | $target//wsoap12:header | $target//wsoap12:headerfault ) satisfies not($wopbind/@namespace)
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The binding is of style "document" and use "literal", and the "namespace" attribute is specified in some wsoap12:body, wsoap12:header, wsoap12::headerfault, wsoap12:fault element
Diagnostic Data: Contained element with namespace attribute.

Test Assertion

Test Assertion:BP2020
Description: The namespace attribute is specified on all wsoap12:body elements and the value of the namespace attribute is an absolute URI.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]
Prerequisite:BP2017
Predicate:every $wbody in .//wsoap12:body satisfies fn:count(fn:tokenize($wbody/@namespace,':')) > 1
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A wsoap12:body element does not have a namespace attribute, or the namespace attribute value is not an absolute URI.
Diagnostic Data: wsoap12:body elements that failed the assertion

Test Assertion

Test Assertion:BP2117
Description: The rpc-literal binding does not have a namespace attribute specified on a contained wsoap12:header, wsoap12:headerfault, and wsoap12:fault element.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]
Prerequisite:BP2017 BP2406
Predicate:not(.//wsoap12:fault[@namespace]) and not(.//wsoap12:header[@namespace]) and not(.//wsoap12:headerfault[@namespace])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: An rpc-literal binding has the namespace attribute specified on contained wsoap12:header, wsoap12:headerfault and wsoap12:fault elements.
Diagnostic Data: {Defective wsdl:binding}{defective wsoap12:header, wsoap12:headerfault, or wsoap12:fault element}

Test Assertion

Test Assertion:BP2118
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.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding
co-Target: 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))]
Predicate: (every $operation in $myportype/wsdl:operation satisfies

(some $bop in $target/wsdl:operation satisfies

$bop/@name = $operation/@name)) and

(count(wsdl:operation) = count($myportype/wsdl:operation)) and

not(wsdl:operation[@name = preceding-sibling::wsdl:operation/@name ])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A wsdl:binding does not have the same list of wsdl:operations as the wsdl:portType to which it refers.
Diagnostic Data: {unmatching wsdl:binding element}{unmatching portType element}

Test Assertion

Test Assertion:BP2021
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 wsoap12:header elements and wsoap12:headerfault elements.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[wsdl:input/wsoap12:header or wsdl:input/wsoap12:headerfault or wsdl:output/wsoap12:header or wsdl:output/wsoap12:headerfault]
Prerequisite:BP2703
Predicate: (not(wsdl:input/wsoap12:header) or (wsdl:input/wsoap12:header[@part] and not(wsdl:input/wsoap12:header[@parts]) and not(wsdl:input/wsoap12:header[contains(@part, ' ')]) and not(wsdl:input/wsoap12:header[contains(@part, ',')]))) and (not(wsdl:input/wsoap12:headerfault) or (wsdl:input/wsoap12:headerfault[@part] and not(wsdl:input/wsoap12:headerfault[@parts]) and not(wsdl:input/wsoap12:headerfault[contains(@part, ' ')]) and not(wsdl:input/wsoap12:headerfault[contains(@part, ',')]))) and (not(wsdl:output/wsoap12:header) or (wsdl:output/wsoap12:header[@part] and not(wsdl:output/wsoap12:header[@parts]) and not(wsdl:output/wsoap12:header[contains(@part, ' ')]) and not(wsdl:output/wsoap12:header[contains(@part, ',')]))) and (not(wsdl:output/wsoap12:headerfault) or (wsdl:output/wsoap12:headerfault[@part] and not(wsdl:output/wsoap12:headerfault[@parts]) and not(wsdl:output/wsoap12:headerfault[contains(@part, ' ')]) and not(wsdl:output/wsoap12:headerfault[contains(@part, ',')])))
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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 wsoap12:header elements or wsoap12:headerfault elements, or it uses "parts".
Diagnostic Data: wsdl:input element or wsdl:output element of the defective operation.

Test Assertion

Test Assertion:BP2022
Description: the name attribute is specified on the wsoap12:fault element.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation/wsdl:fault/wsoap12:fault
Predicate:@name and @name != ''
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: Defective wsoap12:fault element: the name attribute is not specified on the wsoap12:fault element.
Diagnostic Data: Defective wsoap12:fault element

Test Assertion

Test Assertion:BP2032
Description: the name attribute that is specified on the wsoap12:fault element matches the value specified on the parent element wsdl:fault.
Target:/wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation/wsdl:fault
Predicate:@name = wsoap12:fault/@name
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: Defective wsoap12:fault element: the "name" attribute value does not match the value of the "name" attribute on the parent element wsdl:fault.
Diagnostic Data: Defective wsoap12:fault element

Test Assertion

Test Assertion:BP1005
Description: The envelope has a wrapper element with a name equal to the name attribute on the wsdl:operation element suffixed with string "Response".
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/ soap12:Envelope[soap12:Body/* and not (soap12:Body/soap12:Fault)] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: related-Request /wsil:testLog/wsil:messageLog/wsil:message [ @type = 'request' and (if (not(./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:MessageID) ) then ( @conversation = $target/../../@conversation) else (./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo [@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] )) ]/wsil:messageContents/soap12:Envelope[soap12:Body/*]
co-Target: myOpBindings /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:* [@style = 'rpc']]/wsdl:operation[@name = fn:local-name($related-Request[1]/soap12:Body/*[1])]
Predicate: fn:concat(fn:local-name($related-Request[1]/soap12:Body/*[1]), 'Response' ) = fn:local-name($target/soap12:Body/*[1])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: Wrapper element in the envelope does not have a value equal to the name attribute on the wsdl:operation element suffixed with string "Response".
Diagnostic Data:

Test Assertion

Test Assertion:BP1008a
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body//soap12:Fault) ] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]/wsdl:operation[@name = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Predicate: every $accessor in $target/soap12: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/')
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The request envelope has part accessor elements for parameters and return value, within namespaces.
Diagnostic Data:

Test Assertion

Test Assertion:BP1008b
Description: The response envelope has part accessor elements for parameters and return value, in no namespaces.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body/soap12:Fault)] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]/

wsdl:operation

[fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Predicate: every $accessor in ./soap12: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/' )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The response envelope has part accessor elements for parameters and return value, within namespaces.
Diagnostic Data:

Test Assertion

Test Assertion:BP1755a
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body//soap12:Fault) ] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]/wsdl:operation[@name = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Predicate: (some $mbody in ./soap12: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/wsoap12: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) )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:

Test Assertion

Test Assertion:BP1755b
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.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body/soap12:Fault)] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]/ wsdl:operation [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Predicate: (some $mbody in ./soap12: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/wsoap12: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) )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:

Test Assertion

Test Assertion:BP1010
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.
Target: //soap12:Envelope[every $x in soap12:Body/* satisfies ( /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[ @name=local-name-from-QName(node-name($x))]/wsoap12:operation[@style="rpc"] | /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[ @name=local-name-from-QName(node-name($x))]/../wsoap12:binding[@style="rpc"]) ]
Predicate:every $accessor in (.//soap12: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 ))))))
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:

Test Assertion

Test Assertion:BP1009a
Description: The Envelope includes all wsoap12: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.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body[not (soap12:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap12: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() ) ]
Prerequisite:$myOpBinding/wsdl:input/wsoap12:header
Predicate: some $myOpBind in $myOpBinding satisfies ( every $inputhdr in $myOpBind/wsdl:input/wsoap12: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/soap12:Header/* satisfies ( fn:resolve-QName(xsd:string($mpart/@element), $mpart ) = fn:node-name($headerblk) ) )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: Envelope does not include all wsoap12:headers specified in the wsdl:input (of request) of its bound operation.
Diagnostic Data:

Test Assertion

Test Assertion:BP1009b
Description: The Envelope includes all wsoap12: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.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap12:Envelope[soap12:Body[not (soap12:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:output satisfies ($target/soap12: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() ) ]
Prerequisite: $myOpBinding/wsdl:output/wsoap12:header
Predicate: some $myOpBind in $myOpBinding satisfies ( every $outputhdr in $myOpBind/wsdl:output/wsoap12: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/soap12:Header/* satisfies ( fn:resolve-QName(xsd:string($mpart/@element), $mpart ) = fn:node-name($headerblk) ) )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: Envelope does not include all wsoap12:headers specified in the wsdl:input (if request) or wsdl:output (if response) of its bound operation.
Diagnostic Data:

Test Assertion

Test Assertion:BP1009c
Description: The Envelope includes all wsoap12: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.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not (./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body//soap12:Fault)] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]/ wsdl:operation[@name = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Prerequisite: $myOpBinding/wsdl:input/wsoap12:header
Predicate: some $myOpBind in $myOpBinding satisfies ( every $inputhdr in $myOpBind/wsdl:input/wsoap12: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/soap12:Header/* satisfies ( fn:resolve-QName(xsd:string($mpart/@element), $mpart ) = fn:node-name($headerblk) ) )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: Envelope does not include all wsoap12:headers specified in the wsdl:input (if request) or wsdl:output (if response) of its bound operation.
Diagnostic Data:

Test Assertion

Test Assertion:BP1009d
Description: The Envelope includes all wsoap12: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.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body//soap12:Fault) ] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]/wsdl:operation [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Prerequisite: $myOpBinding/wsdl:output/wsoap12:header
Predicate: some $myOpBind in $myOpBinding satisfies ( every $outputhdr in $myOpBind/wsdl:output/wsoap12: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/soap12:Header/* satisfies ( fn:resolve-QName(xsd:string($mpart/@element), $mpart ) = fn:node-name($headerblk) ) )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: Envelope does not include all wsoap12:headers specified in the wsdl:input (if request) or wsdl:output (if response) of its bound operation.
Diagnostic Data:

Test Assertion

Test Assertion:BP1116a
Description: The action parameter on the Content-Type header if present has value equal to the value of the corresponding wsoap12:operation/@soapAction attribute, and an empty string ("") if there is no such attribute.
Target: /wsil:testLog/wsil:messageLog/wsil:message [wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[fn:lower-case(@key) = 'action'] (: and @type = 'request' :) and not ( ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body[not (soap12:Fault)]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($target/soap12: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/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($target/soap12: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() ) ]
Prerequisite:BP1006 BP1761
Predicate: some $myOpBind in $myOpBinding satisfies ( ($myOpBind/wsoap12:operation/@soapAction = $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter [fn:lower-case(@key) = 'action']/@value) or (not ($myOpBind/wsoap12:operation/@soapAction ) and $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[fn:lower-case(@key) = 'action']/@value = '') )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The action parameter on the Content-Type header if present does not match wsoap12:operation/@soapAction attribute.
Diagnostic Data: {All HTTP headers}{soapAction value from the soabinding}.

Test Assertion

Test Assertion:BP1116b
Description: The action parameter on the Content-Type header if present has value equal to the value of the corresponding wsoap12:operation/@soapAction attribute, and an empty string ("") if there is no such attribute.
Target: /wsil:testLog/wsil:messageLog/wsil:message [wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[fn:lower-case(@key) = 'action'] (: and @type = 'request' :) and not ( ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body//soap12:Fault) ] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]/wsdl:operation[@name = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Prerequisite:BP1006 BP1761
Predicate: some $myOpBind in $myOpBinding satisfies ( ($myOpBind/wsoap12:operation/@soapAction = $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter [fn:lower-case(@key) = 'action']/@value) or (not ($myOpBind/wsoap12:operation/@soapAction ) and $target/../../wsil:httpHeaders/wsil:contentTypeHeader/wsil:parameter[fn:lower-case(@key) = 'action']/@value = '') )
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The action parameter on the Content-Type header if present does not match wsoap12:operation/@soapAction attribute.
Diagnostic Data: {All HTTP headers}{soapAction value from the soabinding}.

Test Assertion

Test Assertion:BP2122
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".
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile[wsdl:definitions//xsd:schema]
co-Target: metadata$target/@schemaValid
Predicate: $target/@schemaValid = fn:true()
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: A wsdl:types element contained a data type definition that is not an XML schema definition.
Diagnostic Data:Defective data type definition.

Test Assertion

Test Assertion:BP1090a
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 soap12:Header must equal to that specified from the WSDL.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap12:Envelope[soap12:Body/soap12:Fault and soap12:Header[wsa:Action]] [ some $myenv in . satisfies ( every $message in //wsdl:definitions/wsdl:message satisfies ( (not($message/wsdl:part[1]/@type) ) and ( $myenv/soap12:Body/*[1] or $myenv/soap12:Header/wsa:Action )) ) ]
co-Target: relatedRequest /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap12:Envelope[soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ][1]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation [ some $opBinding in . satisfies (if ($relatedRequest/soap12: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]/soap12: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/soap12:Header/wsa:Action) then ( some $opmsg in /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation/wsdl:input satisfies ($relatedRequest/soap12: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() ) ]
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/soap12:Body/soap12:Fault/soap12: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/soap12: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 ) ) ) )) ))
Reporting: true=passed, false=warning
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1090b
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 soap12:Header must equal to that specified from the WSDL.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap12:Envelope[ (soap12:Body/soap12:Fault) and soap12:Header[wsa:Action]] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: relatedRequest /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap12:Envelope[soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ][1]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]/wsdl:operation[@name = fn:local-name-from-QName(node-name($relatedRequest[1]/soap12:Body/*[1]))]
Predicate: (: correct wsa:Action value :) some $detailQName in fn:node-name($target/soap12:Body/soap12:Fault/soap12: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/soap12: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 ) ) ) )
Reporting: true=passed, false=warning
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP2801
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 soapAction attribute, if present, inside the wsoap12:operation element contained in the target wsdl:operation of the wsdl:binding.
Target: /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding/wsdl:operation[wsoap12:operation[@soapAction] and wsoap12: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])]
co-Target: myOpDefinition /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:portType/wsdl:operation[@name = $target/@name]
Predicate: $target/wsoap12:operation/@soapAction = $myOpDefinition/wsdl:input/@wsam:Action
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: The value of wsam:Action attribute for the wsdl:input element contained in the target wsdl:operation of the wsdl portType, does not match the @soapAction value in this operation binding.
Diagnostic Data:Operation.

Test Assertion

Test Assertion:BP1211a
Description: Part accessor elements in the envelope do not have an xsi:nil attribute with a value of "1" or "true".
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'request' and not ( ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ) ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body//soap12:Fault) ] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding [.//wsoap12:*[@style = 'rpc']]/wsdl:operation[@name = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Predicate:not (soap12:Body/*/*[attribute::xsi:nil = '1' or attribute::xsi:nil = fn:true()])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: Envelope referenced by an rpc-literal binding has part accessor elements with an xsi:nil attribute with a value of "1" or "true".
Diagnostic Data:

Test Assertion

Test Assertion:BP1211b
Description: Part accessor elements in the response envelope do not have an xsi:nil attribute with a value of "1" or "true".
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or ( @RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' ) ] ] /wsil:messageContents/soap12:Envelope[soap12:Body/* and not (soap12:Body/soap12:Fault)] [ some $myenv in . satisfies some $message in //wsdl:definitions/wsdl:message satisfies ($message/wsdl:part[1]/@type) ]
co-Target: myOpBinding /wsil:testLog/wsil:descriptionFiles/wsil:descriptionFile/wsdl:definitions/wsdl:binding[.//wsoap12:*[@style = 'rpc']]/ wsdl:operation [fn:string-join((@name, 'Response' ),'' ) = fn:local-name-from-QName(node-name($target/soap12:Body/*[1]))]
Predicate:not (soap12:Body/*/*[attribute::xsi:nil = '1' or attribute::xsi:nil = fn:true()])
Reporting:true=passed, false=failed
Prescription:mandatory
Error Message: response Envelope referenced by an rpc-literal binding has part accessor elements with an xsi:nil attribute with a value of "1" or "true".
Diagnostic Data:

Test Assertion

Test Assertion:BP1149a
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 Section 6.4.1.7 of the Web Services Addressing 1.0 - SOAP Binding. Other possible fault conditions, such as invalid addresses, are not tested for by this assertion.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] ] /wsil:messageContents/soap12: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"] ]
co-Target: related-Request /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap12:Envelope[soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]
Predicate: ( if

( ($related-Request/soap12:Header/wsa:ReplyTo and not ($related-Request/soap12:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous')) or ($related-Request/soap12:Header/wsa:FaultTo and not ($related-Request/soap12:Header/wsa:FaultTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous')) )

then

( not ($target/soap12:Body/soap12:Fault) or ( fn:ends-with($target/soap12:Body/soap12:Fault/soap12:Code/soap12:Value, 'Sender') and fn:ends-with($target/soap12:Body/soap12:Fault/soap12:Code/soap12:Subcode/soap12:Value, 'InvalidAddressingHeader') and fn:ends-with($target/soap12:Body/soap12:Fault/soap12:Code/soap12:Subcode/soap12:Subcode/soap12:Value, 'OnlyAnonymousAddressSupported') ) )

else fn:true()

)
Reporting: true=passed, false=warning
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1149b
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 Section 6.4.1.7 of the Web Services Addressing 1.0 - SOAP Binding. Other possible fault conditions, such as invalid addresses, are not tested for by this assertion.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] ] /wsil:messageContents/soap12: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"] ]
co-Target: related-Request /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap12:Envelope[soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]
Predicate: ( if

( ($related-Request/soap12:Header/wsa:ReplyTo and not ($related-Request/soap12:Header/wsa:ReplyTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous')) or ($related-Request/soap12:Header/wsa:FaultTo and not ($related-Request/soap12:Header/wsa:FaultTo/wsa:Address = 'http://www.w3.org/2005/08/addressing/anonymous')) )

then

( $target/soap12:Body/soap12:Fault )

else fn:true()

)
Reporting: true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1149c
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 Section 6.4.1.8 of the Web Services Addressing 1.0 - SOAP Binding. Other possible fault conditions, such as invalid addresses, are not tested for by this assertion.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] ] /wsil:messageContents/soap12: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"] ]
co-Target: related-Request /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap12:Envelope[soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]
Predicate: ( if

( not ($related-Request/soap12:Header/wsa:ReplyTo) or $related-Request/soap12:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' or $related-Request/soap12:Header/wsa:FaultTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' )

then

( not ($target/soap12:Body/soap12:Fault) or ( fn:ends-with($target/soap12:Body/soap12:Fault/soap12:Code/soap12:Value, 'Sender') and fn:ends-with($target/soap12:Body/soap12:Fault/soap12:Code/soap12:Subcode/soap12:Value, 'InvalidAddressingHeader') and fn:ends-with($target/soap12:Body/soap12:Fault/soap12:Code/soap12:Subcode/soap12:Subcode/soap12:Value, 'OnlyNonAnonymousAddressSupported') ) )

else fn:true()

)
Reporting: true=passed, false=warning
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion

Test Assertion:BP1149d
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 Section 6.4.1.8 of the Web Services Addressing 1.0 - SOAP Binding. Other possible fault conditions, such as invalid addresses, are not tested for by this assertion.
Target: /wsil:testLog/wsil:messageLog/wsil:message [@type = 'response' or ./wsil:messageContents/soap12:Envelope/soap12:Header/wsa:RelatesTo [not (@RelationshipType) or (@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply')] ] /wsil:messageContents/soap12: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"] ]
co-Target: related-Request /wsil:testLog/wsil:messageLog/wsil:message[@type = 'request']/ wsil:messageContents/soap12:Envelope[soap12:Header/wsa:MessageID = $target/soap12:Header/wsa:RelatesTo[@RelationshipType = 'http://www.w3.org/2005/08/addressing/reply' or not (@RelationshipType)] ]
Predicate: ( if

( not ($related-Request/soap12:Header/wsa:ReplyTo) or $related-Request/soap12:Header/wsa:ReplyTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' or $related-Request/soap12:Header/wsa:FaultTo/wsa:Address='http://www.w3.org/2005/08/addressing/anonymous' )

then

( $target/soap12:Body/soap12:Fault )

else fn:true()

)
Reporting: true=passed, false=failed
Prescription:mandatory
Error Message: 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.
Diagnostic Data:Complete message.

Test Assertion Glossary

Test Assertion PartWhat it means:
Test Assertion ID:

[markup: testAssertion/@id] (required)

A unique ID for the current test assertion.
Description:

[markup: testAssertion/description ] (optional)

A plain text description of the current test assertion. At minimum expressing the TA predicate.

Comments:

[markup: testAssertion/comments ] (optional)

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.).
Target:

[markup: testAssertion/target ] (required)

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:
  • passed
  • failed
  • warning
  • notApplicable
  • notRelevant
  • missingInput
  • undetermined

See the "reporting" item for the meaning of these results.

Cotarget:

[markup: testAssertion/cotarget ] (optional)

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'.

For example, the target can be a SOAP message and the cotarget the WSDL file that describes this SOAP message.

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.

Prerequisite:

[markup: testAssertion/@preReq ] (optional)

[markup: testAssertion/prerequisite ] (optional)

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")

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.

(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).

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]).

Predicate:

[markup: testAssertion/predicate] required element]

A logical expression that evaluates whether this target is fulfilling the profile requirement addressed by this test Assertion. By default:

- A result of true means the requirement is fulfilled (reported as a "passed" in the test report).

- A result of false means the requirement is violated (reported as a "failed" in the test report).

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.

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]).

Prescription:

[markup: testAssertion/prescription/@level ] (required)

Conveys the level of prescription associated with the profile requirement. At least three values may be used:
  • mandatory: maps to RFC2119 keywords MUST, MUST NOT, SHALL, SHALL NOT, REQUIRED (and sometimes MAY NOT)
  • preferred: maps to RFC2119 keywords SHOULD, SHOULD NOT, RECOMMENDED, NOT RECOMMENDED
  • permitted: maps to RFC2119 keywords MAY, OPTIONAL.
Reporting:

[markup: testAssertion/reporting ] (optional)

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:

  • @true attribute: may take values among {passed, failed, warning, undetermined} (default is 'passed')
  • @false attribute: may take values among {passed, failed, warning, undetermined} (default is 'failed')
The reported outcomes have the following meaning:

  • passed: the target passes the test and can be considered as fulfilling the profile feature.
  • failed: the target fails the test and can be considered as violating (or not exhibiting) the profile feature.
  • warning: the test result is inconclusive. There is a possibility of profile requirement violation, that deserved further investigation.
  • undetermined: the test result is inconclusive for this predicate value.

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'.

Other test results that are automatically generated and not controlled by the "reporting" element are:

  • notRelevant: the target failed the prerequisite condition and therefore does not qualify for further testing (i.e. the predicate expression is NOT evaluated on it).
  • missingInput: a cotarget expression returned an empty node set.
  • notApplicable: this target was not even selected by the target XPath expression, while being of the same general artifact type (e.g. message type).