SOAP Version 1.2 Specification Assertions and Test Collection

Editors' copy Version 4.2

Editors:
Hugo Haas, W3C
Oisin Hurley, IONA Technologies
Anish Karmarkar, Oracle
Jeff Mischkinsky, Oracle

Abstract

This document draws a list of testable assertions found in the SOAP Version 1.2 specification, and provides a set of tests in order to show whether the assertion is implemented in a SOAP processor.

The goal of this document is to get a list of features whose implementation can be tested in order to satisfy the entrance criteria of the Proposed Recommendation stage.

It is incorrect to claim to be compliant with the SOAP Version 1.2 specification by passing successfully all the tests provided in this test suite. It is also incorrect to claim to be non-complaint with the SOAP Version 1.2 specification by failing any test provided in this test suite. A SOAP 1.2 implementation that passes all of the tests specified in this document may claim to conform to the SOAP 1.2 Test Suite $Date: 2002/05/06 $.

Status of this Document

This document is an editors' copy that has no official standing.

This document has been produced by the W3C XML Protocol Working Group. All information in this document is to be considered as work in progress.

This version is based on the April 11 2002 snapshot of the SOAP Version 1.2 Part 1 and Part 2 specification. Please refer to the latest SOAP Version 1.2 Working Draft for any current normative information.

References to the April 11 2002 snapshot document will gradually go away, and the document will be updated with the text and assertions from the latest version of the draft.

Please send comments on this document to w3c-xml-protocol-wg@w3.org (member archive), especially if something is missing from this list of assertions.

Editorial Note:
The mailing list has been restricted on the basis of the fact that the specification documents referenced from here are the WG-private versions.

Table of Contents

Introduction
SOAP 1.2 Conformance Assertions
Testing MEP Metadata
Pattern and Binding Assertions

SOAP 1.2 Tests Collection
Changelog

Introduction

This document draws a list of testable assertions found in the SOAP Version 1.2 specification, and provides a set of tests in order to show whether the assertion is implemented in a SOAP processor. The primary goal of this document is to foster interoperability between different SOAP 1.2 implementations. The document is intended to help implementors to write SOAP processors that comply with SOAP 1.2 specification, and interoperate with other SOAP processors that comply with SOAP 1.2 specification.

A SOAP 1.2 implementation that passes all of the tests specified in this document may claim to conform to the SOAP 1.2 Test Suite (insert version number).

Even though the purpose of the SOAP 1.2 Test Suite is to facilitate the creation of interoperable implementations, conformance to the SOAP 1.2 Test Suite does not imply conformance to the SOAP 1.2 specification; there are mandatory requirements of the specification that are not tested by the suite (as a simple example, SOAP 1.2 requires that every legal value of a role name is accepted, and all illegal ones rejected). An implementation may be said to be SOAP 1.2 conformant if and only if it it satisfies the conformance requirements specified in SOAP 1.2 specification. The W3C does not at this time provide for any comprehensive means of testing for such conformance.

Similarly, an implementation may conform to the SOAP 1.2 specification even if it does not support all capabilities tested by the SOAP 1.2 Test Suite. SOAP 1.2 specification admits special purpose implementations, such as those in dedicated controllers, which may send and receive only a very limited suite of messages; the requirement is that whatever is done be done correctly. An implementation may conform to the SOAP 1.2 specification even if it does not support all capabilities tested by the SOAP 1.2 Test Suite. The test suite defines higher level application semantics to enable testing and facilitate interoperable implementations. It is not necessary for a SOAP processor to support these higher level semantics to be SOAP 1.2 compliant.

Assertions are numbered with the section and subsection numbers of their source in the specification, suffixed with a unique number

Editor's note:
These are currently out of sync, but the hyperlinks are correct

To improve the reviewing experience, assertions are cross-referenced to the original specification text using hyperlinks. Traversing an assertion hyperlink in a browser will navigate to the subsection of the specification that contains the original text of the assertion.

SOAPBuilders interoperability tests have been referenced in this document. They are numbered as follows: SBRng, meaning SOAPBuilders round n, group g. Some tests are listed as testing two assertions (e.g. arrays and structs). Obviously, structs and arrays can use simple types, but this is not listed as such to avoid making the document too complex.

It is important to note that the presence of references to the SOAPBuilders interoperability tests is intended to serve only as a guideline for the development of SOAP 1.2 tests. The SOAPBuilders tests are explicitly designed to test SOAP 1.1 and SOAP 1.1 features. The core functionality in such tests may have been superceded by the development of new specification text in the SOAP 1.2 working drafts.

All the tests follow the following rules:

SOAP 1.2 Conformance Assertions

Assertion 1

Location of the assertion

SOAP 1.2 Part 1, Section 1.2

Text from the specification

Schema documents for these namespaces can be found by dereferencing the namespace identifiers. These schemas are normative.

Comments

the schema for the SOAP namespaces is the 'gold standard' against which all envelopes will be applied. It should be correct!

attempt to access the schema document

apply schema document to an envelope instance

Assertion 2

Location of the assertion

SOAP 1.2 Part 1, Section 1.2

Text from the specification

SOAP does not require any XML schema processing (assessment or validation) in order to establish the values or correctness of element and attribute information items defined by this specification.

Comments

This assertion will not be tested.

Assertion 3

Location of the assertion

SOAP 1.2 Part 1, Section 1.2

Text from the specification

SOAP attribute information items have types described by XML Schema: Datatypes [5]. Unless otherwise stated, all lexical forms are supported for each such attribute, and lexical forms representing the same value in the XML Schema value space are considered equivalent for purposes of SOAP processing.

Comments

This assertion will not be tested.

Assertion 4

Location of the assertion

SOAP 1.2 Part 1, Section 1.4.3

Text from the specification

An ultimate SOAP receiver cannot also be a SOAP intermediary for the same SOAP message (see 2. SOAP Processing Model).

Comments

This assertion will not be tested.

Assertion 5

Location of the assertion

SOAP 1.2 Part 1, Section 2.1

Text from the specification

A SOAP node receiving a SOAP message MUST perform processing according to the SOAP processing model as described in this section and in the remainder of this specification.

Comments

The implementation of this assertion is tested by the entire test suite.

Assertion 6

Location of the assertion

SOAP 1.2 Part 1, Section 2.1

Text from the specification

A SOAP node MUST be identified by a URI.

Comments

This assertion will not be tested

Assertion 7

Location of the assertion

SOAP 1.2 Part 1, Section 2.2

Text from the specification

The roles assumed by a node MUST be invariant during the processing of an individual SOAP message.

Comments

This assertion cannot be tested, as a SOAP node is allowed to process and remove SOAP headers, reinsert them and send them upstream. But a interop test can be created, consisting of two headers with different QNames but same role and MU=1.

Tests

T1.2.23

Assertion 8

Location of the assertion

SOAP 1.2 Part 1, Section 2.2

Text from the specification

"http://www.w3.org/2001/12/soap-envelope/role/next"

Each SOAP intermediary and ultimate SOAP receiver MUST act in this role and MAY additionally assume zero or more other SOAP roles.

Comments

Other header blocks with unrecognized values for the role attribute must be ignored.

SB tests do not cover the case of the URI of the node, they only cover the .../next URI case.

SBR2C tests: SBR2 echoMeStringRequest which uses mustUnderstand="0"; SBR2 echoMeStructRequest which uses mustUnderstand="1"; SBR2 unknown header entry which uses a combination of both.

Tests

ultimate-role-next, T1.2.18

Assertion 9

Location of the assertion

SOAP 1.2 Part 1, Section 2.2

Text from the specification

"http://www.w3.org/2001/12/soap-envelope/role/none"

SOAP nodes MUST NOT act in this role.

Tests

role-none-1, role-none-2, T1.2.8

Assertion 10

Location of the assertion

SOAP 1.2 Part 1, Section 2.2

Text from the specification

"http://www.w3.org/2001/12/soap-envelope/role/ultimateReceiver" To establish itself as an ultimate SOAP receiver a SOAP node MUST act in this role. SOAP intermediaries MUST NOT act in this role.

Comments

Design a test that contains the above role and involves an intermediary.

Check the tests below if they still make sense

Tests

T1.2.3, T1.2.4, T1.2.8 - T1.2.13

Assertion 11

Location of the assertion

SOAP 1.2 Part 1, Section 2.2

Text from the specification

While the purpose of a SOAP role name is to identify a SOAP node, there are no routing or message exchange semantics associated with the SOAP role name.

Tests

role-none-1, role-none-2, T1.2.8

Assertion 12

Location of the assertion

SOAP 1.2 Part 1, Section 2.3

Text from the specification

SOAP header blocks carry optional role attribute information items (see 4.1.2.2 SOAP role Attribute) that are used to target them to the appropriate SOAP node(s). This specification refers to the (implicit or explicit) value of the SOAP role attribute as the SOAP role for the corresponding SOAP header block.

Comments

Ensure that the tests still make sense

Tests

T1.2.6, T1.2.10, T1.2.16

Assertion 13

Location of the assertion

SOAP 1.2 Part 1, Section 2.3

Text from the specification

A SOAP header block is said to be targeted to a SOAP node if the SOAP role for the header block is the name of a role played by the SOAP node.

Ensure that the tests still make sense

Tests

T1.2.3 , T1.2.4

Assertion 14

Location of the assertion

SOAP 1.2 Part 1, Section 2.3

Text from the specification

Header blocks targeted to the special role "http://www.w3.org/2001/12/soap-envelope/role/none" are carried with the message to the ultimate SOAP receiver(s), but are never formally processed. Such blocks MAY carry data that is required for processing of other blocks.

This assertion is similar to an assertion above. Create two headers, one header with role none and another targetted to the ultimate reciever. Have the header refer to data in another.

Assertion 15

Location of the assertion

SOAP 1.2 Part 1, Section 2.4

Text from the specification

A SOAP header block is said to be understood by a SOAP node if the software at that SOAP node has been written to fully conform to and implement the semantics conveyed by the combination of local name and namespace name of the outer-most element information item of that block.

Comments

All tests that uses headers cover this.

Assertion 16

Location of the assertion

SOAP 1.2 Part 1, Section 2.4

Text from the specification

SOAP header blocks carry optional mustUnderstand attribute information items (see 5.2.3 SOAP mustUnderstand Attribute). When the value of such an attribute information item is "true", the SOAP block is said to be mandatory.

Mandatory blocks MUST be presumed to somehow modify the semantics of other headers or body elements. Therefore, for every mandatory SOAP header block targeted to a node, that node MUST either process the block or not process the SOAP message at all, and instead generate a fault (see 2.6 Processing SOAP Messages and 5.4 SOAP Fault).

Comments

Check how A4, A5 and A6 are related (in the spec, and for the tests).

Probably should be deleted in favor of next set of assertions - JM

Tests

Send an understandable mustUnderstand block.

Send an ununderstandable (??) mustUnderstand block.

SB tests: check A5 and A6.

T1.2.11 - T1.2.15 T1.2.24

Assertion 17

Location of the assertion

SOAP 1.2 Part 1, Section 2.4

Text from the specification

This specification therefore does not require any fault to be generated based on the presence or value of this attribute on a SOAP header block not targeted at the current processing node, for example when it is suspected that such a block has survived erronously due to a routing or targeting error at a preceeding intermediairy. In particular, it is not an error for an ultimate SOAP receiver to receive a message containing a mandatory header block that is targeted to a role other than the ones assumed by the ultimate SOAP receiver.

Comments

Ensure that the tests still make sense. Create a test where a MU header will survive till the Node C and Node C does not act in the role.

Tests

T1.2.11 - T1.2.15

Assertion 18

Location of the assertion

SOAP 1.2 Part 1, Section 2.5

Text from the specification

An ultimate SOAP receiver MUST correctly process the immediate children of the SOAP body (see 5.3 SOAP Body).

Comments

All test that have a body and do not generate fault will test this.

Tests

T1.2.24

Assertion 19

Location of the assertion

SOAP 1.2 Part 1, Section 2.6

Text from the specification

Unless otherwise stated, processing MUST be semantically equivalent to performing the following steps separately, and in the order given. Note however that nothing in this specification prevents the use of optimistic concurrency, roll back, or other techniques that might provide increased flexibility in processing order as long as all generated SOAP messages, SOAP faults and application-level side effects are equivalent to those that would be obtained by direct implementation of the following rules in the order shown below.

  1. Determine the set of roles in which the node is to act. The contents of the SOAP envelope, including any header blocks and the body, MAY be inspected in making such determination.
  2. Identify all header blocks targeted at the node that are mandatory.
  3. If one or more of the header blocks identified in the preceding step are not understood by the node then generate a single SOAP fault with a value of "env:MustUnderstand" for faultcode (see 5.4.8 Must Understand Faults). If such a fault is generated, any further processing MUST NOT be done. Faults relating to the contents of the body MUST NOT be generated in this step.
  4. Process all header blocks targeted at the node and, in the case of an ultimate SOAP receiver, the SOAP body. A SOAP node MUST process all SOAP header blocks targeted at it. A SOAP node MAY choose to ignore the processing implied by non-mandatory SOAP header blocks targeted at it.
  5. In the case of a SOAP intermediary, and where the message is to be forwarded further along the message path, remove all SOAP header blocks targeted at the node, and possibly insert new SOAP header blocks.

Comments

All tests will follow the above rules

Send one mustUnderstand block.

Send several mustUnderstand blocks.

Send one not understandable mustUnderstand block.

Send several not understandable mustUnderstand block.

Check processing and the fault returned.

Have a node A send a msg with MU header to Node B that Node B does not understand. In addition, there should be a problem with the body. The fault should be MU fault.

Send a combination of blocks and check that the SOAP node does the right thing (needs details; see the example from the Dinard face-to-face).

SBR2C tests: SBR2 unknown header entry element unknown header sent with mustUnderstand="0"/"1" targetted to the/another SOAP node

SBR2C tests: SBR2 echoMeStructRequest sends an understandable header with mustUnderstand="1".

Tests

T1.2.12, T1.2.16, T1.2.17, T1.2.24, T1.2.23 T1.2.25

Assertion 20

Location of the assertion

SOAP 1.2 Part 1, Section 2.6

Text from the specification

In all cases where a SOAP header block is processed, the SOAP node MUST understand the SOAP block and MUST do such processing in a manner fully conformant with the specification for that block.

Comments

All tests that process a soap header without generating a fault.

Assertion 21

Location of the assertion

SOAP 1.2 Part 1, Section 2.6

Text from the specification

An ultimate SOAP receiver MUST process the SOAP body, in a manner consistent with 2.5 Structure and Interpretation of SOAP Bodies.

Tests

T1.2.24

Assertion 22

Location of the assertion

SOAP 1.2 Part 1, Section 2.6

Text from the specification

Failure is indicated by the generation of a fault (see 5.4 SOAP Fault). SOAP message processing MAY result in the generation of at-most one fault.

Tests

T1.2.25

Assertion 23

Location of the assertion

SOAP 1.2 Part 1, Section 2.6

Text from the specification

Header-related faults other than than those related to understanding header blocks (see 2.4 Understanding SOAP Headers) MUST conform to the specification for the corresponding SOAP header block.

Comments

Should we construct a test here? I suppose a test which generates a non-MU fault for a header would do the trick.

Tests

T1.2.11

Assertion 24

Location of the assertion

SOAP 1.2 Part 1, Section 2.7.2

Text from the specification

Forwarding intermediaries MUST process the message according to the SOAP processing model defined in 2.6 Processing SOAP Messages.

Comments

Any test that uses a forwarding intermediary.

Assertion 25

Location of the assertion

SOAP 1.2 Part 1, Section 2.7.2

Text from the specification

They MUST also remove from the message all SOAP header blocks targeted to them, prior to forwarding, regardless of whether these blocks were processed or ignored.

Comments

A test that has a header targeted to the intemediary.

Tests

T1.2.8

Assertion 26

Location of the assertion

SOAP 1.2 Part 1, Section 2.7.2

Text from the specification

In addition, forwarding intermediaries MUST also obey the specification for the SOAP forwarding feature being used. The specification for such a feature MUST describe the required semantics, including the rules describing how the forwarded message is constructed.

Comments

A test that uses intermediaries.

Assertion 27

Location of the assertion

SOAP 1.2 Part 1, Section 2.8

Text from the specification

A SOAP node must determine whether it supports the version of a SOAP message on a per message basis.

Comments

This assertion may be tested by a SOAP node alternately sending version 1.1 and 1.2 SOAP messages to another SOAP node, in a contrived conversation. The sending SOAP node should then replay the conversation using version 1.2 messages only. The receiving SOAP node should process the conversations in an identical manner.

Tests

Mark82

Assertion 28

Location of the assertion

SOAP 1.2 Part 1, Section 2.8

Text from the specification

However, when processing a message, a SOAP node MUST use the semantics defined by the version of that message.

Comments

Construct a test which uses SOAP 1.2 env and SOAP 1.1 MU for a header which is then ignored.

Tests

rdm2.8.27

Assertion 29

Location of the assertion

SOAP 1.2 Part 1, Section 2.8

Text from the specification

If a SOAP node receives a message whose version is not supported it MUST generate a fault (see 5.4 SOAP Fault) with a value of "env:VersionMismatch" for faultcode . Any other malformation of the message construct MUST result in the generation of a fault with a value of "env:Sender" for faultcode .

Comments

Construct a test which uses SOAP 1.1 env which is not supported (results in a fault). Construct a test which uses the correct env version, but does not have a body, this should generate a env:Sender faultcode.

Tests

T1.2.14, T1.2.22 T1.3.1

Assertion 30

Location of the assertion

SOAP 1.2 Part 1, Section 3.1.1

Text from the specification

The specification of a feature MUST include the following:

  1. The information (state) required at each node to implement the feature.
  2. The processing required at each node in order to fulfill the obligations of the feature including any handling of communication failures that might occur in the underlying protocol (see also 4.2 Binding Framework).
  3. The information to be transmitted from node to node.
  4. In the case of MEPs: Any requirements to generate additional messages (such as responses to requests in a request/response MEP). Rules for the delivery or other disposition of SOAP faults generated during the operation of the MEP.

Comments

The use of HTTP binding is a good test.

Assertion 31

Location of the assertion

SOAP 1.2 Part 1, Section 4

Text from the specification

A SOAP binding specification:

  1. Declares the features provided by a binding.
  2. Describes how the services of the underlying protocol are used to honor the contract formed by the declaration of features supported by that binding.
  3. Describes the handling of all potential failures that may be anticipated within the binding.
  4. Defines the requirements for building a conformant implementation of the binding being specified.

Comments

No test for this will be constucted.

Assertion 32

Location of the assertion

SOAP 1.2 Part 1, Section 4

Text from the specification

A binding does not provide a separate processing model and does not constitute a SOAP node by itself.

Comments

No test for this will be constucted.

Assertion 33

Location of the assertion

SOAP 1.2 Part 1, Section 4.2

Text from the specification

A binding specification MUST enable one or more message exchange pattern.

Comments

HTTP binding does that. No test for this will be constucted.

Assertion 34

Location of the assertion

SOAP 1.2 Part 1, Section 4.2

Text from the specification

In cases where multiple features are supported by a binding specification the specifications for those features MUST provide any information necessary for their successful use in combination; this binding framework does not provide any explicit mechanism for ensuring such compatibility of multiple features.

Comments

HTTP binding does that. No test for this will be constucted.

Assertion 35

Location of the assertion

SOAP 1.2 Part 1, Section 4.2

Text from the specification

As described in 5. SOAP Message Construct, each SOAP message is modeled as an XML Infoset that consists of a document information item with exactly one child: the envelope element information item.

Comments

Point to the tests for the corresponding assertion in section 5.

Assertion 36

Location of the assertion

SOAP 1.2 Part 1, Section 4.2

Text from the specification

Therefore, the minimum responsibility of a binding in transmitting a message is to specify the means by which the SOAP XML Infoset is transferred to and reconstituted by the binding at the receiving SOAP node and to specify the manner in which the transmission of the envelope is effected using the facilities of the underlying protocol.

Comments

HTTP binding does that. No test for this will be constucted.

Assertion 37

Location of the assertion

SOAP 1.2 Part 1, Section 4.2

Text from the specification

The binding framework does NOT require that every binding use the XML 1.0 [8] serialization as the "on the wire" representation of the Infoset; compressed, encrypted, fragmented representations and so on can be used if appropriate.

Comments

This negative assertion is not testable in the context of only the default HTTP binding, which mandates XML serialization. Should an implementation provide a means to 'plug-in' new bindings, this assertion may be tested by ensuring that the processing of a SOAP message does not vary even if it is delivered over two separate bindings.

No test for this will be constucted.

Assertion 38

Location of the assertion

SOAP 1.2 Part 1, Section 4.2

Text from the specification

Section 5. SOAP Message Construct provides that the XML Infoset of a SOAP message MUST NOT include a DTD. Accordingly, a binding that uses the XML 1.0 serialization MUST NOT transmit a DTD; a binding that accepts XML 1.0 serializations MUST fault in a binding specific manner if an XML 1.0 serialization corresponding to a DTD for the SOAP message is received.

Comments

A test which sends DTD and gets a fault back.

Assertion 39

Location of the assertion

SOAP 1.2 Part 1, Section 5

Text from the specification

A SOAP message is specified as an XML Infoset that consists of a document information item with exactly one member in its [children] property, which MUST be the SOAP Envelope element information item (see 5.1 SOAP Envelope). This element information item is also the value of the [document element] property.

Comments

Construct a test which sends a XML message which does not have env as its root.

Tests

No test designed for this assertion yet!

Assertion 40

Location of the assertion

SOAP 1.2 Part 1, Section 5

Text from the specification

The [notations] and [unparsed entities] properties are both empty. The [base URI], [character encoding scheme] and [version] properties may have any legal value. The [standalone] property either has a value of "true" or has no value.

Comments

Construct a test which sends a XML message with dtd containing entities and notation. Construct a test which sends a XML message with standalong property as false.

Assertion 41

Location of the assertion

SOAP 1.2 Part 1, Section 5

Text from the specification

The XML infoset of a SOAP message MUST NOT contain a document type declaration information item.

Comments

A test which sends DTD and gets a fault back.

Tests

T1.3.2

Assertion 42

Location of the assertion

SOAP 1.2 Part 1, Section 5

Text from the specification

A SOAP message SHOULD NOT contain processing instruction information items. A SOAP receiver MUST ignore processing instruction information items in SOAP messages that it receives.

Comments

Construct a test which sends a PI. The sender should get back the expected response (assuming PI is ignored).

Tests

T1.3.3

Assertion 43

Location of the assertion

SOAP 1.2 Part 1, Section 5

Text from the specification

Element information items defined by this specification may have zero or more character information item children whose character code is amongst the whitespace characters as defined by [8]. Unless otherwise indicated, such character information items are considered insignificant. A SOAP receiver MUST ignore such insignificant character information items.

Comments

Construct a test which sends 2 msgs. The only diff between the 2 msg is whitespace. Expect the same response back.

Assertion 44

Location of the assertion

SOAP 1.2 Part 1, Section 5.1

Text from the specification

The Envelope element information item has:

  • A [local name] of Envelope .
  • A [namespace name] of "http://www.w3.org/2001/12/soap-envelope".
  • Zero or more namespace qualified attribute information items amongst its [attributes] property.
  • One or two element information items in its [children] property in order as follows:
    1. An optional Header element information item (see 5.2 SOAP Header).
    2. A mandatory Body element information item (see 5.3 SOAP Body).

Comments

Generate a test that sends a bad env. This test will test more than one assertion (eg. version mismatch etc).

Assertion 45

Location of the assertion

SOAP 1.2 Part 1, Section 5.1.1

Text from the specification

The encodingStyle attribute information item has:

  • A [local name] of encodingStyle .
  • A [namespace name] of "http://www.w3.org/2001/12/soap-envelope".

Comments

Will be tested anytime soapencoding is tested.

Assertion 46

Location of the assertion

SOAP 1.2 Part 1, Section 5.1.1

Text from the specification

The encodingStyle attribute information item MAY appear on any element information item in the SOAP message except the Envelope element information item.

Comments

Construct a test which sets the encodingStyle attr on the Env. Expect a fault.

Assertion 47

Location of the assertion

SOAP 1.2 Part 1, Section 5.1.1

Text from the specification

Its scope is that of its owner element information item and that element information item's descendants, unless a descendant itself carries such an attribute information item.

Comments

Create a test which uses soap enc, with an unknow encodingStyle on the Body and soap enc on the body block (for rpc) and expect to get the correct response.

Assertion 48

Location of the assertion

SOAP 1.2 Part 1, Section 5.1.1

Text from the specification

If no encodingStyle attribute information item is in scope for a particular element information item or the value of such an attribute information item is the zero-length URI ("") then no claims are made regarding the encoding style of that element infomation item and its descendants.

Comments

does this means that the 'claims' can be turned off forever or for just the scope of the element on which the encodingStyle attribute is attached

Tests

No test designed for this assertion yet!

check that the "" URI is accepted>

check that the "" URI switches off a previous encoding style

check the scope of this 'switch off'

Test 1: Test for acceptance of empty encoding style attribute. Send a message with encoding style attribute set to empty string. No fault should be returned. Expect empty encoding style to be echoed back. Test 2: Check scoping rules work correctly for encoding style. Send a message with 3 nested elements with only the top element defining a encoding style. Ask for the encoding style of the middle element. It should be the same as set for the top element. Send a message with 3 nested elements each with different encoding style. Outer one in SOAP encoding style, the middle one with empty value for encoding style and the last one SOAP again. Ask for the encoding style value of the middle element. It should be empty. Send a message with 3 nested elements each with different encoding style. Outer one in SOAP encoding style, the middle one with empty value for encoding style and the last one SOAP again. Ask for the encoding style value of the inner most element. It should be the same as the one specified for inner-most element.

Assertion 49

Location of the assertion

SOAP 1.2 Part 1, Section 5.1.1

Text from the specification

The encodingStyle attribute information item is of type anyURI in the namespace http://www.w3.org/2001/XMLSchema.

Comments

This is changed to a single value now as per the recent decisions.

Tests

if an encoding style is present, check the namespace, the schema type and the structure of the list (ie whitespace delimited, using all different types of whitespace)

Goal is to test whether the server understands the presence of encodingStyle attribute in SOAP namespace. Send a simple SOAP message with an encodingStyle attribute in SOAP namespace. Expect the service to echo the namespace and the value of the encoding style sent. Success is indicated by a clean match with the values sent. Send another message with a local name of encodingStyle in a different namespace other than the SOAP namespace. Expect to get back empty values for namespace and empty value for the encoding style. rdm5.1.1.48

Assertion 50

Location of the assertion

SOAP 1.2 Part 1, Section 5.2

Text from the specification

The Header element information item has:

  • A local name of Header
  • A namespace name of http://www.w3.org/2001/12/soap-envelope
  • Zero or more namespace qualified attribute information item children.
  • Zero or more namespace qualified element information item children.

Comments

As for DA9, the syntax should be checked at every test.

Tests

No test designed for this assertion yet!

tests are pretty much specified in the quote above!

Tests o, Send a message with a proper header element and with one header block whose element name is not namespace qualified. Expect a fault back. What is the fault code ( check the spec ) o, Send a message with header element defined under different namespace other than the SOAP namespace. Expect a fault back. (what is the fault code? to expect) o, Send a message with a proper header element with attributes for header. If the request succeeds without any fault, then it indicates that the node can live with the attributes on header element. Other variation of this test case be, write a echo service that echoes back the attributes. Testing mustUnderstand/role and other SOAP defined attributes. The handling of these attributes by the SOAP server is probably going to be tested through process/behavioral testing and in the case of encoding through part II testing. So, what ever we do here as part of this assertion will probably end up as overlaps at the least. Forgetting that, we can define some unit tests to check whether the server provides special treatment or understands them as soap defined attributes. o, Expect a echo service that echoes back all SOAP defined attributes in a message with the Qname of the attribute sent, the namespace the attribute is associated with and the value specified in the message for that attribute. Send many messages each containing all or nothing or some combinations of SOAP defined attributes. Expect the response message to contain the SOAP defined attributes sent in the request.

Assertion 51

Location of the assertion

SOAP 1.2 Part 1, Section 5.2.1

Text from the specification

Each SOAP header block element information item:

  • MUST be namespace qualified;
  • MAY have an encodingStyle attribute information item
  • MAY have an role attribute information item
  • MAY have a mustUnderstand attribute information item

Comments

As for DA9, the syntax should be checked at every test.

Tests

No test designed for this assertion yet!

tests are pretty much specified in the quote above!

Tests o, Send a message with a proper header element and with one header block whose element name is not namespace qualified. Expect a fault back. What is the fault code ( check the spec ) o, Send a message with header element defined under different namespace other than the SOAP namespace. Expect a fault back. (what is the fault code? to expect) o, Send a message with a proper header element with attributes for header. If the request succeeds without any fault, then it indicates that the node can live with the attributes on header element. Other variation of this test case be, write a echo service that echoes back the attributes. Testing mustUnderstand/role and other SOAP defined attributes. The handling of these attributes by the SOAP server is probably going to be tested through process/behavioral testing and in the case of encoding through part II testing. So, what ever we do here as part of this assertion will probably end up as overlaps at the least. Forgetting that, we can define some unit tests to check whether the server provides special treatment or understands them as soap defined attributes. o, Expect a echo service that echoes back all SOAP defined attributes in a message with the Qname of the attribute sent, the namespace the attribute is associated with and the value specified in the message for that attribute. Send many messages each containing all or nothing or some combinations of SOAP defined attributes. Expect the response message to contain the SOAP defined attributes sent in the request.

Assertion 52

Location of the assertion

SOAP 1.2 Part 1, Section 5.2.1

Text from the specification

A SOAP receiver MUST ignore all such attribute information items on descendant of a SOAP header block.

Tests

No test designed for this assertion yet!

no tests

Assertion 53

Location of the assertion

SOAP 1.2 Part 1, Section 5.2.2

Text from the specification

The role attribute information item has the following Infoset properties:

  • A [local name] of role .
  • A [namespace name] of "http://www.w3.org/2001/12/soap-envelope".
  • A [specified] property with a value of "true".
The type of the role attribute information item is anyURI in the namespace named "http://www.w3.org/2001/XMLSchema". The value of the role attribute information item is a URI that names a role that a SOAP node may assume.

Comments

All tests that use roles will test this assertion.

Tests

No test designed for this assertion yet!

no tests

Assertion 54

Location of the assertion

SOAP 1.2 Part 1, Section 5.2.2

Text from the specification

Omitting the SOAP role attribute information item is equivalent to supplying that attribute with a value of "http://www.w3.org/2001/12/soap-envelope/role/ultimatereceiver".

Comments

Create a test that uses an intemediary with a header with MU=1 and no role attr. Expect the ultimate receiver to process the header.

Assertion 55

Location of the assertion

SOAP 1.2 Part 1, Section 5.2.2

Text from the specification

An empty value for this attribute is equivalent to omitting the attribute completely, i.e. targeting the block at an ultimate SOAP receiver.

Comments

Create a test that uses an intemediary with a header with MU=1 and no role attr. Expect the ultimate receiver to process the header.

Tests

rdm5.2.2.54

Assertion 56

Location of the assertion

SOAP 1.2 Part 1, Section 5.2.2

Text from the specification

SOAP senders SHOULD NOT generate, but SOAP receivers MUST accept the SOAP role attribute information item for SOAP header blocks targeted at an ultimate SOAP receiver (see section 1.2.2 Robustness Principle).

Comments

Create a test that uses an intemediary with a header with MU=1 and with role attr as "http://www.w3.org/2001/12/soap-envelope/role/ultimatereceiver" Expect the ultimate receiver to process the header.

Tests

rdm5.2.2.55

Assertion 57

Location of the assertion

SOAP 1.2 Part 1, Section 5.2.3

Text from the specification

The mustUnderstand attribute information item has the following Infoset properties:

  • A [local name] of mustUnderstand .
  • A [namespace name] of "http://www.w3.org/2001/12/soap-envelope".
  • A [specified] property with a value of "true".
The type of the mustUnderstand attribute information item is boolean in the namespace "http://www.w3.org/2001/XMLSchema".

Comments

All tests that use MU will test this assertion.

Assertion 58

Location of the assertion

SOAP 1.2 Part 1, Section 5.2.3

Text from the specification

Omitting this attribute information item is defined as being semantically equivalent to including it with a value of "false" or "0".

Comments

Construct a test with a header that is not relevant and does not have a MU attr. Expect the server to return a valid reply.

Tests

rdm5.2.3.57

Assertion 59

Location of the assertion

SOAP 1.2 Part 1, Section 5.2.3

Text from the specification

SOAP senders SHOULD NOT generate, but SOAP receivers MUST accept the SOAP mustUnderstand attribute information item with a value of "false" or "0" (see section 1.2.2 Robustness Principle).

Comments

Construct a test with a header that is not relevant and has a MU=0/false. Expect the server to return a valid reply.

Assertion 60

Location of the assertion

SOAP 1.2 Part 1, Section 5.2.3

Text from the specification

A SOAP receiver MUST accept any valid lexical representation of the attribute value.

Comments

Construct a test with a header that is not relevant and has a MU=0/false. Expect the server to return a valid reply. Construct a test with a header that is relevant and has a MU=1/true. Expect the server to return a valid reply. Construct a test with a header that is relevant and has a MU=1/true. Expect the server to return a MU fault.
rdm5.2.3.59

Assertion 61

Location of the assertion

SOAP 1.2 Part 1, Section 5.3

Text from the specification

The Body element information item has:

  • A [local name] of Body .
  • A [namespace name] of "http://www.w3.org/2001/12/soap-envelope".
  • Zero or more namespace qualified attribute information items in its [attributes] property. These MAY include an encodingStyle attribute information item.
  • Zero or more namespace qualified element information items in its [children] property.

Tests

T1.4.2, T1.2.8

Assertion 62

Location of the assertion

SOAP 1.2 Part 1, Section 5.3.1

Text from the specification

All child element information items of the SOAP Body element information item:

  • MUST have a [namespace name] property which has a value, that is, be namespace qualified.
  • MAY have an encodingStyle attribute information item in their [attributes] property.

Comments

Almost all test that do not result in a fault test this assertion. A separate test for this assertion will not be constructed.

Assertion 63

Location of the assertion

SOAP 1.2 Part 1, Section 5.4

Text from the specification

The Fault element information item has:

  • A [local name] of Fault .
  • A [namespace name] of "http://www.w3.org/2001/12/soap-envelope".
  • Two or more child element information items in its [children] property in order as follows:
    1. A mandatory faultcode element information item (see 5.4.1 SOAP faultcode Element).
    2. A mandatory faultstring element information item (see 5.4.2 SOAP faultstring Element).
    3. An optional faultnode element information item (see 5.4.3 SOAP faultnode Element).
    4. An optional faultrole element information item (see 5.4.4 SOAP faultrole Element).
    5. An optional detail element information item (see 5.4.5 SOAP detail Element).

Comments

All tests that generate faults will test this assertion.

Assertion 64

Location of the assertion

SOAP 1.2 Part 1, Section 5.4

Text from the specification

To be recognized as carrying SOAP error information, a SOAP message MUST contain exactly one SOAP Fault as the only child element of the SOAP body.

Comments

This should be tested in every scenario in which a fault is expected.

Assertion 65

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.1

Text from the specification

The faultcode element information item has:

  • A [local name] of faultcode .
  • A [namespace name] which has no value.
  • One or two child element information items in its [children] property, in order, as follows:
    1. A mandatory value element information item as described below (see 5.4.1.1 SOAP value element (with faultcode parent))
    2. An optional subcode element information item as described below (see 5.4.1.2 SOAP subcode element).

Comments

This should be tested in every scenario in which a fault is expected.

Assertion 66

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.1.1

Text from the specification

The value element information item has;

  • A [local name] of value .
  • A [namespace name] which has no value.
The type of the value element information item is faultCodeEnum in the "http://www.w3.org/2001/12/soap-envelope" namespace.

Comments

This should be tested in every scenario in which a fault is expected.

Assertion 67

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.1.2

Text from the specification

The subcode element information item has:

  • A [local name] of subcode .
  • A [namespace name] which has no value.
  • One or two child element information items in its [children] property, in order, as follows:
    1. A mandatory value element information item as described below (see 5.4.1.3 SOAP value element (with subcode parent)).
    2. An optional subcode element information item (see 5.4.1.2 SOAP subcode element).

Comments

Constuct a test that returns a fault subcode.

Assertion 68

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.1.3

Text from the specification

The value element information item has:

  • A [local name] of value .
  • A [namespace name] which has no value.
The type of the value element information item is QName in the "http://www.w3.org/2001/XMLSchema" namespace.

Comments

Constuct a test that returns a fault subcode.

Assertion 69

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.2

Text from the specification

The faultstring element information item has:

  • A [local name] of faultstring .
  • A [namespace name] which has no value.

Comments

All tests that return fault will test this assertion.

Assertion 70

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.2

Text from the specification

The type of the faultstring element information item is string in the "http://www.w3.org/2001/XMLSchema" namespace.

Comments

All tests that return fault will test this assertion.

Assertion 71

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.3

Text from the specification

The faultnode element information item has:

  • A [local name] of faultnode .
  • A [namespace name] which has no value.

Comments

Constuct a test that returns a faultnode.

Assertion 72

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.3

Text from the specification

SOAP nodes that do not act as the ultimate SOAP receiver MUST include this element information item.

Comments

Constuct a test where the intermediary returns a faultnode.

Assertion 73

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.4

Text from the specification

The faultrole element information item has:

  • A [local name] of faultrole .
  • A [namespace name] which has no value.
The type of the faultrole element information item is anyURI in the "http://www.w3.org/2001/XMLSchema" namespace.

Comments

Construct a test which generates a fault which includes faultrole element.

Assertion 74

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.5

Text from the specification

The detail element information item has:

  • A [local name] of detail .
  • A [namespace name] which has no value.
  • Zero or more attribute information items in its [attributes] property.
  • Zero or more child element information items in its [children] property.

Comments

Construct a test which generates a fault which includes a detail element.

Tests

T1.4.3

Assertion 75

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.5

Text from the specification

The detail element information item MUST present when the contents of the SOAP Body could not be processed successfully.

Comments

Construct a test which generates a fault because of the problem with the body.

Assertion 76

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.5

Text from the specification

It MUST NOT be used to carry error information about any SOAP header blocks.

Comments

This negative test will not be tested.

Assertion 77

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.5

Text from the specification

Detailed error information for SOAP header blocks MUST be carried within the SOAP header blocks themselves.

Comments

Construct a test which generates a fault because of the problem with the header, have the server return the details in the header.

Tests

rdm5.4.5.76

Assertion 78

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.6

Text from the specification

The values of the value child element information item of the faultcode element are restricted to those in the table below. Specifications that wish to implement their own fault codes MUST do so by sub-categorizing an existing fault code via the subcode element.

Comments

A lot of test in the test suite will be testing this assertion. Do we need a soap validator to validate a soap message?

Assertion 79

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.7

Text from the specification

The Upgrade element information item has:

  • A [local name] of Upgrade .
  • A [namespace name] of "http://www.w3.org/2001/12/soap-upgrade".
  • One or more envelope element information items in its [children] property as described below:
The envelope element information item has:
  • A [local name] of envelope .
  • A [namespace name] which has no value.
  • An unqualified attribute information item with a local name of qname and a type of QName in the "http://www.w3.org/2001/XMLSchema" namespace.

Comments

Construct a test which results in generation of upgrade element.

Tests

Mark85, Mark86

Assertion 80

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.8

Text from the specification

Each such header block element information item has:

  • A [local name] of Misunderstood .
  • A [namespace name] of "http://www.w3.org/2001/12/soap-faults".
  • A qname attribute information item in its [attributes] property as described below.
The qname attribute information item has the following Infoset properties:
  • A [local name] of qname .
  • A [namespace name] which has no value.
  • A [specified] property with a value of "true".
The type of the qname attribute information item is QName in the "http://www.w3.org/2001/XMLSchema" namespace. Its value is the QName of a header block which the faulting node failed to understand.

Comments

Construct a test with a header that is relevant and has a MU=1/true. Expect the server to return a MU fault.

Assertion 81

Location of the assertion

SOAP 1.2 Part 1, Section 6

Text from the specification

SOAP does not define a base URI but relies on the mechanisms defined in XML Base[11] and RFC 2396[6] for establishing a base URI against which relative URIs can be made absolute.

Comments

A test for this assertion should build a SOAP message that makes extensive use of the features of XML Base. The processing of this message should be identical to the processing of a message with similar content that does not use XML Base and instead provides absolute URIs.

Tests

No test designed for this assertion yet!

Assertion 82

Location of the assertion

SOAP 1.2 Part 1, Section 6

Text from the specification

The use of IP addresses in URIs SHOULD be avoided whenever possible (see RFC 1900 [18]. However, when used, the literal format for IPv6 addresses in URIs as described by RFC 2732 [12] SHOULD be supported.

Comments

Use of IP address in URIs is to be avoided, but this assertion suggests that SOAP Processors should accept and support the literal syntax of IPv6 in URIs. This can be tested by transmitting a SOAP message that contains a sample of the IPv6 syntax in a URI and ensuring that processing occurs correctly, i.e. the same as for a substantively similar SOAP message that does not contain this syntax.

Tests

rdm6.81

Assertion 83

Location of the assertion

SOAP 1.2 Part 1, Section 6

Text from the specification

SOAP does not place any a priori limit on the length of a URI. Any SOAP node MUST be able to handle the length of any URI that it publishes and both SOAP senders and SOAP receivers SHOULD be able to deal with URIs of at least 2048 characters in length.

Comments

The 8k limitation is easily tested with a simple SOAP sender and receiver node transmitting and receiving a SOAP message with a contrived URI of greater than this length. Ensuring that a SOAP node will handle the length of all URIs that it publishes difficult to test explicitly as there is no way to tell a priori what URIs a SOAP node will generate during its lifetime.

Tests

Mark81

Assertion 84

Location of the assertion

SOAP 1.2 Part 1, Appendix A

Text from the specification

A SOAP/1.1 node receiving a SOAP Version 1.2 message will according to SOAP/1.1 generate a version mismatch SOAP fault based on a SOAP/1.1 message construct. That is, the envelope will have a local name of Envelope and a namespace name of "http://schemas.xmlsoap.org/soap/envelope/".

Comments

Since this assertion talk about what a SOAP 1.1 node does it should not be tested -ASK.

This assertion is easily tested: a SOAP node will send a 1.2 message to a node that only supports 1.1 and will ensure that

  • a VersionMismatch fault is returned
  • the envelope containing the fault uses the correct namespace identifier

Tests

Mark84

Assertion 85

Location of the assertion

SOAP 1.2 Part 1, Appendix A

Text from the specification

2. A SOAP Version 1.2 node receiving a SOAP/1.1 message either:

  • MAY process the message as a SOAP/1.1 message (if supported), or
  • MUST generate a version mismatch SOAP fault based on a SOAP/1.1 message construct following SOAP/1.1 semantics. The SOAP fault SHOULD include an Upgrade header block as defined in this specification (see 5.4.7 VersionMismatch Faults) indicating support for SOAP Version 1.2. This allows a receiving SOAP/1.1 node to correctly interpret the SOAP fault generated by the SOAP Version 1.2 node.

Comments

Construct a test where a sender sends a soap 1.1 message and the receiver returns a version mismatch fault with an upgrade header block.

If a SOAP 1.1 sender transmits a 1.1 message to a SOAP 1.2 node, the receiving node will either

  • return a VersionMismatch fault using the namespace identifier above or
  • indicate that the message has been correctly processed
This is ambiguous. If the message is actually in error, then the latter case above is unprovable.

In the case where the 1.A.4 test returns a VersionMismatch fault, the fault should contain a list of supported versions - at this time only 1.2 will be included in that list. If the fault does not contain this information, then there should be a warning issued that the implementation has performed a minor transgression of the specification.

Tests

Mark85, Mark85
Assertions in part 2, section 2 are not listed - as this section describes/defined the data model. Any assertions in this section will not be tested.

Assertion 86

Location of the assertion

SOAP 1.2 Part 2, Section 3.1

Text from the specification

When serializing a graph for transmission inside a SOAP message any representation that deserializes to the identical graph MAY be used; when receiving an encoded SOAP message, all representations MUST be accepted.

Comments

Construct a test which consists of sending 2 request messages representing the same data, but different serializations. Expect the same response back.

Tests

No test designed for this assertion yet!

Assertion 87

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.1

Text from the specification

Each graph edge is encoded as an element information item and each element information item represents a graph edge.

Comments

All tests that use soap encoding will test this assertion.

Test for this should be covered in ASK2

Tests

No test designed for this assertion yet!

Assertion 88

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.1

Text from the specification

The graph node at which an edge terminates is determined as follows:

  1. If the element information item representing the edge does not have a ref attribute information item (see 3.1.5.2 ref Attribute Information Item) amongst its attributes then that element information item is said to represent a node in the graph and the edge terminates at that node.
  2. If the element information item representing the edge does have a ref attribute information item (see 3.1.5.2 ref Attribute Information Item), then the value of that attribute information item MUST be identical to the value of exactly one id attribute information item ( see 3.1.5.1 id Attribute Information Item ) in the same envelope. In this case the edge terminates at the graph node represented by the element information item on which the id attribute information item appears. That element information item MUST be in the scope of an encodingStyle attribute with a value of "http://www.w3.org/2001/12/soap-encoding".
All nodes in the graph are encoded as described in 1 above. Additional inbound edges for multi reference graph nodes are encoded as described in 2 above.

Comments

Implementations should be tested to ensure that they understand multi-reference values.

Construct two tests to have a multiref simple (int?) and a multiref compound value echoed back by a soap node using the RPC convention

Tests

No test designed for this assertion yet!

Assertion 89

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.2

Text from the specification

The "lexical value" of a terminal graph node is the sequence of Unicode characters identified by the character information item children of the element information item representing that node.

Comments

Implementations should be tested to ensure that they understand simple values.

A variety of types should be used.

SB tests are pretty extensive.

Do we want a test for every simple type in the XML Schema specification?

SB (soapbuilder) tests are pretty extensive.

Tests

No test designed for this assertion yet!

SBR1 tests: SBR1 echoString; SBR1 echoInteger; SBR1 echoFloat; SBR1 echoBase64; SBR1 echoDate

SBR2A tests: SBR2 echoString; SBR2 echoInteger; SBR2 echoFloat; SBR2 echoBase64; SBR2 echoDate; SBR2 echoDecimal; SBR2 echoBoolean

SBR2B tests: SBR2 echoStructAsSimpleTypes; SBR2 echoSimpleTypesAsStruct

Assertion 90

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.2

Tests

No test designed for this assertion yet!

Assertion 91

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.3

Text from the specification

An outbound edge of a graph node is encoded as an element information item child of the element information item that represents the node (see 3.1.1 Encoding graph edges and nodes).

Comments

All tests that that test compound types will test this assertion.

Construct a test for a compound value (structure) with unqualified and qualified names. SB tests are pretty extensive. Array changes of course need to be added to the SB tests.

Tests

No test designed for this assertion yet!

SBR1 tests:SBR1 echoStruct; SBR1 echoStructArray SBR2A tests: SBR2 echoStruct; SBR2 echoStructArray SBR2B tests: SBR2 echoStructAsSimpleTypes; SBR2 echoSimpleTypesAsStruct; SBR2 echoNestedStruct; SBR2 echoNestedArray

Assertion 92

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.3

Text from the specification

For a graph edge which is distinguised by label ( "struct" or "generic" ), the namespace name property of the element information item determines whether the edge label is globally or locally scoped:

  • If the namespace name is empty then the edge label is locally scoped.
  • If the namespace name is not empty then the edge label is globally scoped. The namespace name is the URI part of the edge label.
The intepretation of the local name property of the element information item with respect to the edge label is as follows:
  • If the edge label is locally scoped, the edge label is the same as the local name. (see A. Mapping Application Defined Names to XML Names).
  • If the edge label is globally scoped, the non-URI part of the edge label is the local name. (see A. Mapping Application Defined Names to XML Names).

Comments

SB tests pretty extensive.

Tests

No test designed for this assertion yet!

SBR1 tests:SBR1 echoStruct; SBR1 echoStructArray

SBR2A tests: SBR2 echoStruct; SBR2 echoStructArray

SBR2B tests: SBR2 echoStructAsSimpleTypes; SBR2 echoSimpleTypesAsStruct; SBR2 echoNestedStruct; SBR2 echoNestedArray

Assertion 93

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.3

Text from the specification

For a graph edge which is distinguished by position ( "array" or "generic" ):

  • The ordinal position of the graph edge corresponds to the position of the element information item relative to its siblings
  • If outbound edges are distinguished only by position ("array") then the local name and namespace name properties of the element information item are not significant.

Comments

Implementations should be tested to ensure that they understand arrays.

SB tests pretty extensive.

Construct a test which has an encoded array (say of int) with elements of the array having accessors with different names: such as "itemA" "itemB". Have a SOAP node echo the same array back.

Tests

No test designed for this assertion yet!

SBR1 tests: SBR1 echoStringArray; SBR1 echoIntegerArray; SBR1 echoFloatArray; SBR1 echoStructArray

SBR2A tests: SBR2 echoStringArray; SBR2 echoIntegerArray; SBR2 echoFloatArray; SBR2 echoStructArray

SBR2B tests: SBR2 echo2DStringArray; SBR2 echoNestedArray

Assertion 94

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.3

Text from the specification

The following rules apply to the encoding of a graph node that represents an "array":

  • The element information item representing an array node MAY have amongst its attributes an itemType attribute information item (see 3.1.4.1 itemType Attribute Information Item).
  • The element information item representing an array node MAY have amongst its attributes an arraySize attribute information item (see 3.1.6 arraySize Attribute Information Item).

Comments

Identify which tests test this assertion.

Test for assertion ASK10 should cover this. A negative test can be constructed to have an array without the arrayType attribute and have the SOAP node return a fault (rpc:BadArguments?)

Tests

No test designed for this assertion yet!

Assertion 95

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.3

Text from the specification

If a graph edge does not terminate in a graph node then it can either be omitted from the serialization or it can be encoded as an element information item with an xsi:nilattribute information item.

Comments

Construct 2 tests: 1) one consists of omitted accessor element and 2) another consisting of an accessor element with xsi:nil='1'. Have the SOAP node return a predefined default value for the accessor element.

Tests

No test designed for this assertion yet!

Assertion 96

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.4

Text from the specification

The type name property of a graph node is a {namespace name, local name} pair computed as follows:

  1. If the element information item representing the graph node has an xsi:type attribute information item amongst its attributes then the type name property of the graph node is the value of the xsi:type attribute information item.
  2. Otherwise if the parent element information item of the element information item representing the graph node has a soap:itemType attribute information item (see 3.1.4.1 itemType Attribute Information Item) amongst its attributes then the type name property of the graph node is the value of the soap:itemType attribute information item
  3. Otherwise the value of the type name property of the graph node is unspecified.

Comments

Should be tested every time a response is received from the SOAP node tested.

Construct 2 tests one which uses xsi:type for a serialized type and one which does not but with a corresponding XML Schema. The first test that uses xsi:type should create serialized data using element names that have no relation to the type of the element (expressed by the value of the attribute xsi:type).

This assertion allows elements to have names which are not identical to the type of the contained value. Case (1) and (3) are covered by ASK2. Case (2) is covered by ASK12 and ASK13

Tests

No test designed for this assertion yet!

Assertion 97

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.4.1

Text from the specification

The itemType attribute information item has the following Infoset properties:

  • A local name of itemType ;
  • A namespace name of "http://www.w3.org/2001/12/soap-encoding".
  • A specified property with a value of true.
The type of the itemType attribute information item is QName in the namespace named "http://www.w3.org/2001/XMLSchema". The value of the itemType attribute information item is used to compute the type name property (see 3.1.4 Computing the Type Name property) of members of an array.

Comments

Tests

No test designed for this assertion yet!

Assertion 98

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.5.1

Text from the specification

The id attribute information item has the following Infoset properties:

  • A local name of id ;
  • A namespace name which is empty
  • A specified property with a value of "true".
The type of the id attribute information item is ID in the namespace named "http://www.w3.org/2001/XMLSchema". The value of the id attribute information item is a unique identifier that can be refered to by a ref attribute information item (see 3.1.5.2 ref Attribute Information Item).

Comments

Tests

No test designed for this assertion yet!

Assertion 99

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.5.2

Text from the specification

The ref attribute information item has the following Infoset properties:

  • A local name of ref ;
  • A namespace name which is empty
  • A specified property with a value of true.
The type of the ref attribute information item is IDREF in the namespace named "http://www.w3.org/2001/XMLSchema". The value of the ref attribute information item is a reference to a unique identifier defined by an id attribute information item (see 3.1.5.1 id Attribute Information Item).

Comments

Tests

No test designed for this assertion yet!

Assertion 100

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.5.3

Text from the specification

The value of a ref attribute information item MUST also be the value of exactly one id attribute information item.

Comments

Two tests can be constructed for this assertion (positive and negative)

Tests

No test designed for this assertion yet!

Assertion 101

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.5.3

Text from the specification

A ref attribute information item and an id attribute information item MUST NOT appear on the same element information item.

Comments

Tests

No test designed for this assertion yet!

Assertion 102

Location of the assertion

SOAP 1.2 Part 2, Section 3.1.6

Text from the specification

The arraySize attribute information item has the following Infoset properties:

  • A local name of arraySize ;
  • A namespace name of "http://www.w3.org/2001/12/soap-encoding".
  • A default value of "*"
The type of the arraySize attribute information item is arraySize in the namespace named "http://www.w3.org/2001/12/soap-encoding". Value of enc:arraySize [1] arraySizeValue ::= ("*" | concreteSize) nextConcreteSize* [2] nextConcreteSize ::= " " concreteSize [3] concreteSize ::= non negative integer Each item in the list of sizes represents the size of each of the array's dimensions (unspecified size in case of the asterisk). The number of items in the list represents the number of dimensions in the array. The asterisk, if present, MUST only appear in the first position in the list.

Comments

Test for ASK11 should cover part of this assertion. In addition, construct a test which sends an array with 'asize' unspecified and have the SOAP node return the size of the array.

Tests

No test designed for this assertion yet!

Assertion 103

Location of the assertion

SOAP 1.2 Part 2, Section 3.2

Text from the specification

During deserialization a SOAP receiver:

  • SHOULD generate an env:Sender SOAP fault with a subcode of enc:MissingID if the message violates the constraints on id and ref attribute information items (see 3.1.5.3 Constraints on id and ref attribute information items).
  • MAY generate an env:Sender SOAP fault with a subcode of enc:UntypedValue if the type name property of an encoded graph node is unspecified.

Comments

Tests

No test designed for this assertion yet!

Assertion 104

Location of the assertion

SOAP 1.2 Part 2, Section 4

Text from the specification

Although it is anticipated that this representation is likely to be used in combination with the encoding style defined in 3. SOAP Encoding, other representations are possible. The SOAP encodingStyle attribute information item (see [1]SOAP Encoding Attribute) can be used to indicate the encoding style of the RPC invocation and/or the response using the representation described in this section. The encoding specified must support the "struct" and/or "array compound" value constructions from the SOAP data model 2. The SOAP Data Model.

Comments

Difficult to test since it allows any encoding to be used. A test would have to utilize a specific alternate encoding, which a given implementation might not support. A reference implementation could test the validity of the concept by supporting an alternate encoding.

Construct a test for literal encoding.

Tests

No test designed for this assertion yet!

Assertion 105

Location of the assertion

SOAP 1.2 Part 2, Section 4

Text from the specification

However, use of the SOAP RPC Representation is not limited to the SOAP HTTP Binding (see 7. SOAP HTTP Binding).

Comments

Not testable in terms of conformance verification in that it does not place a restriction on a conforming implementation. However, the assertion does require any conformance test suite to allow the SOAP RPC Representation to use bindings other than the SOAP HTTP Binding. If a reference implementation is developed, this could be demonstrated by making it capable of implementing RPC through some other binding.

Tests

No test designed for this assertion yet!

Assertion 106

Location of the assertion

SOAP 1.2 Part 2, Section 4.1

Text from the specification

RPC invocations and responses are both carried in the SOAP Body element (see [1] section SOAP Body) using the following representation:
  • An RPC invocation is modeled as a struct where parameter access is by name or as an array where parameter access is by position
  • The invocation is represented by a single struct or array containing an outbound edge for each [in] or [in/out] parameter. The struct is named identically to the procedure or method name (see A. Mapping Application Defined Names to XML Names).
  • Each outbound edge has a label corresponding to the name of the parameter (see A. Mapping Application Defined Names to XML Names) or a position corresponding to the position of the parameter.
  • An RPC response is modeled as a struct where parameter access is by name or as an array where parameter access is by position
  • The response is represented by a single struct or array containing an outbound edge for the return value and each [out] or [in/out] parameter. The return value outbound edge SHOULD be the first outbound edge.
  • Each outbound edge has a label corresponding to the name of the parameter (see A. Mapping Application Defined Names to XML Names) or a position corresponding to the position of the parameter. The label of the return value outbound edge is "result" and it is namespace-qualified with the namespace name "http://www.w3.org/2001/12/soap-rpc". The return value outbound edge MUST be present if the return value of the procedure is non-void. The return value outbound edge MUST NOT be present if the return value of the procedure is void.

Comments

This series of assertions could be tested using RPC invocations that exercise various alternatives such as names vs positional parameter access. Almost all test (since the tests use SOAP RPC convention) will cover the first case in this assertion. Construct a test for the SOAP node to return a void. SB tests test the void case.

Tests

SBR1 tests; a particular case is tested by SBR1 echoVoid (no arguments in nor out). SBR2 tests; a particular case is tested by SBR2 echoVoid (no arguments in nor out). Mark138

Assertion 107

Location of the assertion

SOAP 1.2 Part 2, Section 4.1

Text from the specification

Invocation faults are handled according to the rules in 4.3 RPC Faults. If a protocol binding adds additional rules for fault expression, those MUST also be followed.

Comments

HTTP binding requires SOAP fault to be returned as 500 status code. This is an additional rule for fault expression. Test for ASK56 will cover this assertion when used with HTTP binding.

Tests

No test designed for this assertion yet!

Assertion 108

Location of the assertion

SOAP 1.2 Part 2, Section 4.1

Text from the specification

Applications MAY process invocations with missing parameters but also MAY RPC response to contain both a result and a fault.

Comments

Not testable since it does not define a restriction on a conforming implementation

Assertion 109

Location of the assertion

SOAP 1.2 Part 2, Section 4.1

Text from the specification

Because a result indicates success and a fault indicates failure, it is an error for an RPC response to contain both a result and a fault.

Comments

Does not allow for a specific test because there are no specific conditions under which the described error may occur. Testing of this assertion would have to be done by checking each RPC response message in a conformance suite to ensure that a result and a fault were never present at the same time. No test will be contructed for this assertion.

Assertion 110

Location of the assertion

SOAP 1.2 Part 2, Section 4.2

Text from the specification

Additional information relevant to the encoding of an RPC invocation but not part of the formal procedure or method signature MAY be expressed in a SOAP envelope carrying an RPC invocation or response. Such additional information MUST be expressed as SOAP header blocks.

Comments

Could be tested using a method that makes use of additional information. Moving the information from a header to the body should elicit a fault response. Or, send an RPC with some extra information in the header block.

Tests

Mark141

Assertion 111

Location of the assertion

SOAP 1.2 Part 2, Section 4.3

Text from the specification

Errors arising during RPC invocations are reported according to the following rules (in decreasing order of precedence): 1. A fault with a Value of "env:Receiver" for Code SHOULD be generated when the receiver cannot handle the message because of some temporary condition, e.g. when it is out of memory. 2. A fault with a Value of "env:DataEncodingUnknown" for Code SHOULD be generated when the arguments are encoded in a data encoding unknown to the receiver. 3. A fault with a Value of "env:Sender" for Code and a Value of "rpc:ProcedureNotPresent" for Subcode MUST be generated when the receiver does not support the procedure or method specified. (used to be Assertion 4.3.140) 4. A fault with a Value of "env:Sender" for Code and a Value of "rpc:BadArguments" for Subcode MUST be generated when the receiver cannot parse the arguments or when there is a mismatch between what the receiver expects and what the sender has sent. (used to be Assertion 4.3.141) 5. Other faults arising in an extension or from the application SHOULD be generated as described in Part 1 [1] section SOAP Faults.

Comments

If the requisite conditions could be simulated on the receiver, the assertion could be tested by invoking methods and checking the resulting fault codes. For item 3, construct a test where non-existant procedure/method/function is called. For item 4, construct a test where an arg of incorrect type is send to the soap node. For this test, a preceding test can be used but with an incorrect request.

Tests

Will require more tests. Mark142

Testing MEP Metadata

Section 5 of Part 2 of the SOAP 1.2 specification provides an introduction to the concepts of features and properties as used by the transport binding framework. Sections 6 and 7 follow this introduction by describing a normative message exchange pattern (mep) for a simple request-response scenario and an instance of a protocol binding, respectively. Viewed from a testing standpoint, the subject matter treated in these sections varies considerably from that which has gone before. Tests for the content of sections 5-7 examine the metadata that is associated with an exchange, rather than the messages themselves. This means that cataloguing sample message content is not relevant for testing sections 5-7.

Exchange Metadata Testing

Section 5 describes two forms of message exchange metadata

  1. Transport Message Exchange Content and
  2. Environment.
In either case, metadata elements are described as properties: a property is a uniquely identified typed value.

The specification sets the properties defined by the environment to be out of scope for normative description, with the caveat that those properties must conform to correct property form.

Testing the Transport Message Exchange Context

There are two prerequisites to make the transport message exchange context (the container of the exchange metadata) testable. Firstly, the context must be *publicly accessible* by api so that it may be inspected and altered to create suitable test conditions. Secondly, the SOAP 1.2 node state machines that are described in section 6 must also be publicly accessible by API so that they may be 'driven' by a suitable test harness.

The test assertions for sections 5-7 are constructed using a simplified notation that is intended to illustrate suitable provisions for assertions 3 and 4 above. The notation is not intended to prejudice any particular implementation of such APIs.

Pattern and Binding Assertions

Assertion 112

Location of the assertion

SOAP 1.2 Part 2, Section 5.1.1

Text from the specification

Properties are named with XML qualified names (QNames).

Comments

This is not coded as an explicit test: property definitions in specifications should take note of this requirement.

Assertion 113

Location of the assertion

SOAP 1.2 Part 2, Section 5.1.1

Text from the specification

Property values are typed, and the type of a property value is defined by an XML Schema simple datatype in the specification that introduces the property.

Comments

This is not coded as an explicit test: property definitions in specifications should take note of this requirement.

Assertion 114

Location of the assertion

SOAP 1.2 Part 2, Section 6

Text from the specification

No explicit text.

Comments

To be testable, a soap 1.2 implementation must provide public access to transport message exchange contexts in an interoperable manner.

Assertion 115

Location of the assertion

SOAP 1.2 Part 2, Section 6

Text from the specification

No explicit text.

Comments

To be testable, a soap 1.2 implementation must publish information about soap 1.2 node finite state machine transitions and states

Assertion 116

Location of the assertion

SOAP 1.2 Part 2, Section 6.1

Text from the specification

The reference is Table 1, section 6.1

Comments

The purpose of this test is to ensure that the properties described in p2.6.1 are available in a transport message exchange context. The form of the test is of a sample API function that will return a true value if a named property exists within the context. The API function is associated with a particular instance of a message exchange context.

Tests

T2.6.1

Assertion 117

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.1

Text from the specification

This message exchange pattern is named by the URI 'http://www.w3.org/2001/12/soap/mep/single-request-response/'

Comments

The purpose of this test is to check that the single request response message exchange pattern is in operation. This is a gating test. The form of the test is of a sample API function that will return a typed value of a named property. The API function is associated with a particular instance of a message exchange context.

Tests

T2.6.2

Assertion 118

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Instantiation of a Message Exchange Context for a Requesting SOAP Node.

Comments

This is a test formalization for Table 3

Tests

T2.6.30

Assertion 119

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Instantiation of a Message Exchange Context for an inbound Request Message.

Comments

This is a test formalization for Table 4

Tests

T2.6.31

Assertion 120

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Requesting SOAP Node State Transition Table

Comments

Requesting state failure check.

Tests

T2.6.32

Assertion 121

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Requesting Node State Transition Table

Comments

Waiting state failure check

Tests

T2.6.33

Assertion 122

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Requesting Node State Transition Table

Comments

Receiving state failure check.

Tests

T2.6.34

Assertion 123

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Requesting Node State Transition Table

Comments

Receiving state success check

Tests

T2.6.35

Assertion 124

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Responding SOAP Node State Transition Table

Comments

Receiving state failure check.

Tests

T2.6.36

Assertion 125

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Responding Node State Transition Table

Comments

Processing state failure check

Tests

T2.6.37

Assertion 126

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Responding Node State Transition Table

Comments

Responding state failure check.

Tests

T2.6.38

Section 7 covers the binding of SOAP to HTTP and associated state machine, state transitions, properties and their values, and status codes for successful and failed message exchanges. It covers SOAP and HTTP fault and status code mappings. There are certain features external to the SOAP message which should be tested. In particular, the client-side and server-side usage of the SOAPAction feature and properties.

There will be three main areas to be tested.

1. State Machine States and Transitions

2. Fault Handling - Testing of Fail Codes - SOAP Fault to HTTP Mapping

3. Features External to the Message Envelope - SOAPAction

Assertion 127

Location of the assertion

SOAP 1.2 Part 2, Section 7.1

Text from the specification

HTTP applications MUST use the media type "application/soap+xml" according to [12] when including SOAP 1.2 messages in HTTP exchanges. See [12] for parameters defined by this media type and their recommended use.

Comments

Test that text/xml SOAP data is processed for an HTTP request.

Check that HTTP response containing a SOAP message is using the correct media type.

Tests

No test designed for this assertion yet!

Assertion 128

Location of the assertion

SOAP 1.2 Part 2, Section 7.1

Text from the specification

Use of the SOAP HTTP Binding is optional; nothing precludes the specification of different bindings to other protocols or other bindings to HTTP. Because of the optionality of using the SOAP HTTP Binding, it is NOT a requirement to implement it as part of a SOAP node. A node that does correctly and completely implement the HTTP binding may to be said to "conform to the SOAP 1.2 HTTP binding."

Comments

Tests

No test designed for this assertion yet!

Assertion 129

Location of the assertion

SOAP 1.2 Part 2, Section 7.3

Text from the specification

An implementation of the SOAP HTTP Binding MUST support the following message exchange pattern:

"http://www.w3.org/2001/12/soap/mep/single-request-response/" (see 6.2 Single-Request-Response MEP)

Comments

If HTTP is the binding used for the tests, this will be verified at each tests. Maybe check that SOAP message is correctly embedded (Host header, Content-Length, etc). HTTP/1.1 validity?

Tests

No test designed for this assertion yet!

Assertion 130

Location of the assertion

SOAP 1.2 Part 2, Section 7.4.1

Text from the specification

State Description: Requesting

Comments

Tests successful or failed send request

Tests

No test designed for this assertion yet!

Assertion 131

Location of the assertion

SOAP 1.2 Part 2, Section 7.4.1

Text from the specification

State Description: Waiting

Comments

Tests

No test designed for this assertion yet!

Assertion 132

Location of the assertion

SOAP 1.2 Part 2, Section 7.4.1

Text from the specification

HTTP Status Codes Dependent Transitions

Comments

Test various fail codes

Tests

No test designed for this assertion yet!

Assertion 133

Location of the assertion

SOAP 1.2 Part 2, Section 7.4.1

Text from the specification

State Description: Receiving

Comments

Tests

No test designed for this assertion yet!

Assertion 134

Location of the assertion

SOAP 1.2 Part 2, Section 7.4.1

Text from the specification

State Description: Responding

Comments

Tests

No test designed for this assertion yet!

Assertion 135

Location of the assertion

SOAP 1.2 Part 2, Section 7.4.1

Text from the specification

State Description: Processing

Comments

Tests

No test designed for this assertion yet!

Assertion 136

Location of the assertion

SOAP 1.2 Part 2, Section 7.5

Text from the specification

This underlying protocol binding specification defines a binding specific expression for the following features:

"http://www.w3.org/2001/12/soap/bindings/HTTP/SOAPAction/"

Other features that are compatible with the message exchange patterns listed above are supported using their generic in-envelope expression defined in the relevant feature specification.

Comments

Tests

No test designed for this assertion yet!

Assertion 137

Location of the assertion

SOAP 1.2 Part 2, Section 7.5.1

Text from the specification

Use of the SOAP Action feature is OPTIONAL. SOAP Receivers MAY use it as a hint to optimise processing, but SHOULD NOT require its presence in order to operate. Support for SOAPAction is OPTIONAL in implementations. Implementations SHOULD NOT generate or require SOAPAction UNLESS they have a particular purpose for doing so (e.g., a SOAP Receiver specifies its use).

Comments

Not testable.

Assertion 138

Location of the assertion

SOAP 1.2 Part 2, Section 7.5.1

Text from the specification

The syntax for the SOAPAction and Required-SOAPAction HTTP headers fields is defined as follows: SOAP Action HTTP Header [4] soapaction ::= "SOAPAction" ":" URI-reference [5] URI-reference ::= as defined in RFC2396

Comments

Check syntax. A contrieved conversation is necessary that will cause a sending SOAP node to issue this header in a request message. The receieving soap node may then check the syntax of the HTTP header.

Tests

No test designed for this assertion yet!

No tests designed for this assertion yet!

Assertion 139

Location of the assertion

SOAP 1.2 Part 2, Section 7.5.1

Text from the specification

Required SOAP Action HTTP Header [6] req-soapaction ::= "required-SOAPAction" ":" " URI-reference "

Comments

Check syntax. A contrieved conversation is necessary that will cause a receiving SOAP node to issue this header in a response message. The sending soap node may then check the syntax of the HTTP header.

Tests

No test designed for this assertion yet!

No tests designed for this assertion yet!

Assertion 140

Location of the assertion

SOAP 1.2 Part 2, Appendix A

Text from the specification

Appendix A lists rules to convert a application defined name to an XML name

Comments

It is unclear to me as to what test can be written here. A test which takes tuple consisting of: string in unicode format and another string which is a valid NCNAME and the translation of the first string using the algorithm in appendix A; and return a boolean? OR something else?

Tests

No test designed for this assertion yet!

Assertion 141

Location of the assertion

SOAP 1.2 Part 2, Appendix B

Text from the specification

As noted in 3.1.4 Computing the Type Name property SOAP graph nodes are labeled with type names, but validation of encoded SOAP messages MUST NOT be required by conforming processors.

Comments

A test will not be created for this assertion.

Tests

No test designed for this assertion yet!

SOAP 1.2 Tests Collection

Tests

No test designed for this assertion yet!

The following tests use the 3 SOAP nodes. No other SOAP nodes must be used in communication between these 3 SOAP nodes.

NodeA, NodeB and NodeC implement some mechanizm for routing so that the following messaging scenarios are allowed:

NodeC message processing:

NodeB message processing:

Test:ultimate-role-next

Description:

Node A sends to node C message with echoOk header block having role equal to "http://www.w3.org/2001/12/soap-envelope/role/next". Node C returns back empty body with responseOK header.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="http://www.w3.org/2001/12/soap-envelope/role/next" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:responseOk xmlns:test="http://example.org/ts-tests"> foo </test:responseOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:ultimate-role

Description:

Node A sends to node C message with echoOk header block having role equal to "http://example.org/ts-tests/C". NodeC returns back empty body with responseOK header.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="http://example.org/ts-tests/C" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:responseOk xmlns:test="http://example.org/ts-tests"> foo </test:responseOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.3

Description:

Node A sends to node C message with echoOk header block having no role. NodeC returns back empty body with responseOK header.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:responseOk xmlns:test="http://example.org/ts-tests"> foo </test:responseOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.4

Description:

Node A sends to node C message with echoOk header block having role="". NodeC sends message back with responseOK header.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:responseOk xmlns:test="http://example.org/ts-tests"> foo </test:responseOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.5

Description:

Node A sends to node C message with echoOk header block having role="http://example.org/ts-tests/B". Node C sends response message with responseOK back with no header or empty env:Header element (header block was ignored).

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="http://example.org/ts-tests/B" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header/> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.6

Description:

Node A sends to node B message with echoOk header block having role="http://example.org/ts-tests/C". NodeB forwards message to NodeC without touching the header block.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="http://example.org/ts-tests/C" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node B

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="http://example.org/ts-tests/C" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:responseOk xmlns:test="http://example.org/ts-tests"> foo </test:responseOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.7

Description:

Node A sends to node B message with echoOk header block having role="http://example.org/ts-tests/B". NodeB forwards message to NodeC with no header (header was removed).

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="http://example.org/ts-tests/B" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node B

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.8

Description:

Node A sends to node B message with 3 headers: echoOk header block having no role, echoOk header block having role="http://example.org/ts-tests/B" and echoOk header block having role="http://www.w3.org/2001/12/soap-envelope/role/none". NodeB removes the second header block, that has role="http://example.org/ts-tests/B" and forwards message to NodeC with 2 other headers included in the same order as in the original message.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> <test:echoOk role="http://example.org/ts-tests/B" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> <test:echoOk role="http://www.w3.org/2001/12/soap-envelope/role/none" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node B

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> <test:echoOk role="http://www.w3.org/2001/12/soap-envelope/role/none" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:responseOk xmlns:test="http://example.org/ts-tests"> foo </test:responseOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.9

Description:

Node A sends to node B message with echoOk header block having role="". NodeB forwards message to NodeC with header included.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node B

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:responseOk xmlns:test="http://example.org/ts-tests"> foo </test:responseOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.10

Description:

Node A sends to node C message with Unknown header having role="". NodeC sends empty message back with no headers- header is ignored.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown env:role="" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.11

Description:

Node A sends to node C message with Unknown header with mustUnderstand="false" and having role="". NodeC sends empty message back with no headers- header is ignored.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown env:role="" env:mustUnderstand="false" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.12

Description:

Node A sends to node C message with Unknown header with mustUnderstand="1" and having role="". NodeC sends MustUnderstand fault back.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown env:role="" env:mustUnderstand="1" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:f="http://www.w3.org/2001/12/soap-faults"> <env:Header> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests"/> </env:Header> <env:Body> <env:Fault> <faultcode>env:MustUnderstand</faultcode> <faultstring>Header not understood</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:T1.2.13

Description:

Node A sends to node C message with Unknown header with mustUnderstand="true" and having role="". NodeC sends MustUnderstand fault back.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown env:role="" env:mustUnderstand="true" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:f="http://www.w3.org/2001/12/soap-faults"> <env:Header> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests"/> </env:Header> <env:Body> <env:Fault> <faultcode>env:MustUnderstand</faultcode> <faultstring>Header not understood</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:T1.2.14

Description:

Node A sends to node C message with Unknown header with mustUnderstand="wrong" and having role="". NodeC sends a fault back.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown env:role="" env:mustUnderstand="wrong" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:f="http://www.w3.org/2001/12/soap-faults"> <env:Header> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests"/> </env:Header> <env:Body> <env:Fault> <faultcode>env:MustUnderstand</faultcode> <faultstring>Header not understood</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:T1.2.15

Description:

Node A sends to node C message with Unknown header with mustUnderstand="1" and having role="http://example.org/ts-tests/B". NodeC sends empty message back with no headers- header is ignored.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown env:role="http://example.org/ts-tests/B" env:mustUnderstand="1" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.16

Description:

Node A sends to node C message with Unknown header with mustUnderstand="wrong" and having role="http://example.org/ts-tests/B". NodeC sends empty message back with no headers- header (even with invalid value for mustUnderstand) is ignored.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown env:role="http://example.org/ts-tests/B" env:mustUnderstand="wrong" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.17

Description:

Node A sends to node B message with Unknown header with mustUnderstand="1" and having role="http://example.org/ts-tests/C". NodeB forwards message to node C keeping header untouched.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown env:role="http://example.org/ts-tests/C" env:mustUnderstand="1" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:f="http://www.w3.org/2001/12/soap-faults"> <env:Header> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests"/> </env:Header> <env:Body> <env:Fault> <faultcode>env:MustUnderstand</faultcode> <faultstring>Header not understood</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:T1.2.18

Description:

Node A sends to node B message with Unknown header with mustUnderstand="1" and having role="http://www.w3.org/2001/12/soap-envelope/role/next". NodeB returns MustUnderstand fault to node A.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown env:role="http://www.w3.org/2001/12/soap-envelope/role/next" env:mustUnderstand="1" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node B

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:f="http://www.w3.org/2001/12/soap-faults"> <env:Header> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests"/> </env:Header> <env:Body> <env:Fault> <faultcode>env:MustUnderstand</faultcode> <faultstring>Header not understood</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:role-none-1

Description:

Node A sends to node B message with echoOk header having role="http://www.w3.org/2001/12/soap-envelope/role/none". NodeB forwards message to the node C, node C responds back to node A with empty message (no body/header blocks).

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="http://www.w3.org/2001/12/soap-envelope/role/none" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node B

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="http://www.w3.org/2001/12/soap-envelope/role/none" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> </env:Body> </env:Envelope>

Test:role-none-2

Description:

Node A sends to node C message with echoOk header having mustUnderstand = "true" and role="http://www.w3.org/2001/12/soap-envelope/role/none". Node C ignores this header block and returns empty message (no body/header blocks).

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="http://www.w3.org/2001/12/soap-envelope/role/none" env:mustUnderstand="true" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> </env:Body> </env:Envelope>

Test:T1.2.22

Description:

Node A sends to node C message with Body element that contains non-qualified children. Not clear from the spec what should Node C return, our interpretation is Fault.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <nonqualified>element</nonqualified> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <faultcode>env:Client</faultcode> <faultstring>Message with illegal Body content</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:T1.2.23

Description:

Node A sends to node B message with Unknown header that has mustUnderstand = "1" and role="http://example.org/ts-tests/B" and echoOk header that has role="http://example.org/ts-tests/C" role and mustUnderstand="1". Node B has to return MustUnderstand Fault message to NodeA and no message should be forwarded to NodeC.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown mustUnderstand="1" role="http://example.org/ts-tests/B" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> <test:echoOk mustUnderstand="1" role="http://example.org/ts-tests/C" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node B

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:f="http://www.w3.org/2001/12/soap-faults"> <env:Header> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests"/> </env:Header> <env:Body> <env:Fault> <faultcode>env:MustUnderstand</faultcode> <faultstring>Header not understood</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:T1.2.24

Description:

NodeA sends to NodeC message with echoOk header that has mustUnderstand="1" and echoOk Body element. NodeC should process the Header and the Body and return to NodeA message with responseOk header and responseOk Body element.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk mustUnderstand="1" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> <test:echoOk xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:responseOk xmlns:test="http://example.org/ts-tests"> foo </test:responseOk> </env:Header> <env:Body> <test:responseOk xmlns:test="http://example.org/ts-tests"> foo </test:responseOk> </env:Body> </env:Envelope>

Test:T1.2.25

Description:

NodeA sends to NodeC message with echoOk header that has mustUnderstand="wrong" and Unknown header that has mustUnderstand="1". NodeC should return exactly one MustUnderstand Fault.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown mustUnderstand="1" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> <test:echoOk mustUnderstand="wrong" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body/> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:responseOk xmlns:test="http://example.org/ts-tests"> foo </test:responseOk> </env:Header> <env:Body> <test:responseOk xmlns:test="http://example.org/ts-tests"> foo </test:responseOk> </env:Body> </env:Envelope>

Tests

No test designed for this assertion yet!

The following tests use the 2 SOAP nodes. No other SOAP nodes must be used in communication between these 2 SOAP nodes.

NodeC processing model is similar to the one in section 2,

Test:T1.3.1

Description:

Node A sends to node C message with incorrect namespace of the Envelope element. Node C returns back VersionMismatch Fault.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://wrong-version/"> <env:Body> <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:f="http://www.w3.org/2001/12/soap-faults"> <env:Body> <env:Fault> <faultcode>env:VersionMismatch</faultcode> <faultstring>Wrong Version</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:T1.3.2

Description:

Node A sends to node C message with reference to external DTD. Node C returns back DTDNotSupported Fault.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <faultcode>env:DTDNotSupported</faultcode> <faultstring>DTD are not supported by SOAP 1.2</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:T1.3.3

Description:

Node A sends to node C message with Processing Instruction node. Node C ignores PI and returns back Body with test:responseOk element.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <?xml-stylesheet href="http://example.org/ts-tests/sub.xsl" type = "text/xsl"> <env:Body> <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:responseOk xmlns:test="http://example.org/ts-tests">foo</test:responseOk> </env:Body> </env:Envelope>

Tests

No test designed for this assertion yet!

The following tests use the 2 SOAP nodes. No other SOAP nodes must be used in communication between these 2 SOAP nodes.

NodeC processing model is similar to the one in section 2,

Test:T1.4.1

Description:

Node A sends to node C message with test:echoEncArray that has encodingStyle attibute that has a value "http://www.w3.org/2001/12/soap-encoding/strict/", contains an element with attribute enc:arrayType="xs:int[3]" (array of integers), but with the child element of a complex type. Node C returns a Fault indicating that message didn't follow SOAP encoding rules (encoded array content didn't correspond to the type declared in the enc:arrayType).

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoEncArray encodingStyle="http://www.w3.org/2001/12/soap-encoding/strict/" xmlns:test="http://example.org/ts-tests"> <test:array enc:arrayType="xs:int[1]" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <a><b>1</b></a> </test:array> </test:echoEncArray> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:f="http://www.w3.org/2001/12/soap-faults"> <env:Body> <env:Fault> <faultcode>env:Sender</faultcode> <faultstring>Violation of encoding rules</faultstring> <detail> <test:error xmlns:test="http://example.org/ts-tests"> Array element declared as array of integers contains elements with wrong content. </test:error> </detail> </env:Fault> </env:Body> </env:Envelope>

Test:T1.4.2

Description:

Node A sends to node C message with Body element that has encodingStyle attribute. Node C returns Fault message, because Body element must not contain attributes.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <test:echoOk xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <faultcode>env:Sender</faultcode> <faultstring>Incorrect SOAP Body element serialization</faultstring> <detail> <test:error xmlns:test="http://example.org/ts-tests"> SOAP Body must not have attribute information items children. </test:error> </detail> </env:Fault> </env:Body> </env:Envelope>

Test:T1.4.3

Description:

Node A sends to node C message with Body element that has encodingStyle attribute. Node C returns Fault message, because Body element must not contain attributes, but erroneously puts text error information as a direct text child of detail element. Node A reports an error (as an abstract Fault message) to the user.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <test:echoOk xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <faultcode>env:Sender</faultcode> <faultstring>Incorrect SOAP Body element serialization</faultstring> <detail> SOAP Body must not have attribute information items children. </detail> </env:Fault> </env:Body> </env:Envelope>

Test:Mark81

Description:

Node A sends to node C message with Header having extremely long (greater than 8k) role URI. Node C returns back empty body with responseOK header.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk env:role="http://example.org/ts-tests/Czzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:responseOk xmlns:test="http://example.org/ts-tests"> foo </test:responseOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:Mark82

Description:

Node A sends version 1.1 and version 1.2 messages to node C. Node A then sends two copies of the version 1.2 message to node C. The processing by C should be identical for both sets of messages.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope"> <env:Body> <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:responseOk xmlns:test="http://example.org/ts-tests">foo</test:responseOk> </env:Body> </env:Envelope>

Message sent from Node

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk> </env:Body> </env:Envelope>

Message sent from Node

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:responseOk xmlns:test="http://example.org/ts-tests">foo</test:responseOk> </env:Body> </env:Envelope>

Message sent from Node

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk> </env:Body> </env:Envelope>

Message sent from Node

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:responseOk xmlns:test="http://example.org/ts-tests">foo</test:responseOk> </env:Body> </env:Envelope>

Message sent from Node

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk> </env:Body> </env:Envelope>

Message sent from Node

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:responseOk xmlns:test="http://example.org/ts-tests">foo</test:responseOk> </env:Body> </env:Envelope>

Test:Mark84

Description:

Node A sends a SOAP Version 1.2 message to a compliant SOAP/1.1 node C. Node C returns back a VersionMismatch fault.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope"> <env:Body> <env:Fault> <faultcode>env:VersionMismatch</faultcode> <faultstring>Wrong Version</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:Mark85

Description:

A SOAP 1.1 sender, Node A, sends a 1.1 message to a SOAP Version 1.2 node C. Node C may return back a VersionMismatch fault (tested here) or process the message.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope"> <env:Body> <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope"> <env:Header> <V:Upgrade xmlns:V="http://www.w3.org/2001/12/soap-upgrade"> <envelope qname="ns:Envelope" xmlns:ns="http://www.w3.org/2001/12/soap-envelope"></envelope> </V:Upgrade> </env:Header> <env:Body> <env:Fault> <faultcode>env:VersionMismatch</faultcode> <faultstring>Wrong Version</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:Mark86

Description:

Node A sends a non-1.2 message to a SOAP Version 1.2 node C. Node C returns back a 1.2 message with a VersionMismatch fault and the Upgrade header.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope"> <env:Body> <test:echoOk xmlns:test="http://example.org/ts-tests">foo</test:echoOk> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <V:Upgrade xmlns:V="http://www.w3.org/2001/12/soap-upgrade"> <envelope qname="ns1:Envelope" xmlns:ns1="http://www.w3.org/2001/12/soap-envelope"></envelope> <envelope qname="ns2:Envelope" xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/"></envelope> </V:Upgrade> </env:Header> <env:Body> <env:Fault> <faultcode>env:VersionMismatch</faultcode> <faultstring>Wrong Version</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:Mark138

Description:

Node A sends to node C an RPC message. Node C returns a void return value. Note that the return value accessor MUST NOT be present.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:returnVoid xmlns:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:test="http://example.org/ts-tests"> </test:returnVoid> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:returnVoidResponse xmlns:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:test="http://example.org/ts-tests"> </test:returnVoidResponse> </env:Body> </env:Envelope>

Test:Mark141

Description:

Node A sends to node C an RPC message with a required header. Node C returns the value supplied in the header.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:requiredHeader env:mustUnderstand="true" xmlns:test="http://example.org/ts-tests">foo</test:requiredHeader> </env:Header> <env:Body> <test:echoHeader xmlns:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:test="http://example.org/ts-tests"> </test:echoHeader> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoHeaderResponse xmlns:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:test="http://example.org/ts-tests"> <echo>foo</echo> </test:echoHeaderResponse> </env:Body> </env:Envelope>

Test:Mark142

Description:

Node A sends to node C an RPC message with a procedure it cannot find. Node C returns an rpc:ProcedureNotPresent fault.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:doesNotExist xmlns:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:test="http://example.org/ts-tests"> </test:doesNotExist> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <faultcode> <value>env:Sender</value> <subcode> <value>rpc:ProcedureNotPresent</value> </subcode> </faultcode> <faultstring>Procedure Not Present</faultstring> </env:Fault> </env:Body> </env:Envelope>

Test:rdm2.8.27

Description:

This test consists of Node A sending a msg with a header that has MU=1 using the SOAP 1.1 NS. Node C, ignores this header.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown env1:mustUnderstand="true" xmlns:test="http://example.org/ts-tests" xmlns:env1="http://schemas.xmlsoap.org/soap/envelope/"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> </env:Body> </env:Envelope>

Test:rdm5.1.1.48

Description:

This test consists of Node A sending a msg with a header that has an encoding style. Node C echos this encoding style.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:unknown env:encodingStyle="foo" xmlns:test="http://www.w3.org/2001/XMLSchema"> </test:unknown> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoOK xmlns:test="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</test:echoOK> <test:echoOK xmlns:test="http://www.w3.org/2001/XMLSchema">foo</test:echoOK> xmlns:test="http://www.w3.org/2001/XMLSchema" </env:Body> </env:Envelope>

Test:rdm5.2.2.54

Description:

This test consists of Node A sending a msg with a header that a header with MU=1 and role not specified. Node C returns a reply.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown mustUnderstand="1" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:f="http://www.w3.org/2001/12/soap-faults"> <env:Header> <test:Unknown mustUnderstand="1" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:rdm5.2.2.55

Description:

This test consists of Node A sending a msg with a header that is targeted to the ultimate receiver and has the role attribute set to http://www.w3.org/2001/12/soap-envelope/role/ultimatereceive

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown mustUnderstand="1" role="http://www.w3.org/2001/12/soap-envelope/role/ultimatereceiver" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:f="http://www.w3.org/2001/12/soap-faults"> <env:Header> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:rdm5.2.3.57

Description:

This test consists of Node A sending a msg with a header that does not have MU attr defined. Node C returns a valid reply.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown role="http://www.w3.org/2001/12/soap-envelope/role/ultimatereceiver" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:f="http://www.w3.org/2001/12/soap-faults"> <env:Header> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:rdm5.2.3.59

Description:

This test consists of Node A sending a msg with a header that has MU attr with all possible lexical values.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown mustUnderstand="false" role="http://example.org/ts-tests/B" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> <test:echoOk mustUnderstand="0" role="http://example.org/ts-tests/C" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown mustUnderstand="true" role="http://example.org/ts-tests/B" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> <test:echoOk mustUnderstand="1" role="http://example.org/ts-tests/C" xmlns:test="http://example.org/ts-tests"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoHeaderResponse xmlns:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:test="http://example.org/ts-tests"> <echo>foo</echo> </test:echoHeaderResponse> <test:echoHeaderResponse xmlns:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:test="http://example.org/ts-tests"> <echo>foo</echo> </test:echoHeaderResponse> </env:Body> </env:Envelope>

Test:rdm5.4.5.76

Description:

This test consists of Node A sending a msg with an incorrect header. Node C returns a header with the error info.

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown env:mustUnderstand="9" xmlns:test="http://example.org/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:f="http://www.w3.org/2001/12/soap-faults"> <env:Header> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests"/> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:rdm6.81

Description:

Messages:

Message sent from Node A

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown env:role="" env:mustUnderstand="false" xmlns:test="http://10.1.1.127/ts-tests"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> </env:Body> </env:Envelope>

Test:T2.6.1

Description:

Context API assertions for this test are:

Properties:

<apitests> some_context.propertyExists ("context:ExchangePatternName") == true some_context.propertyExists ("single:Role") == true some_context.propertyExists ("single:State") == true some_context.propertyExists ("context:FailureReason") == true some_context.propertyExists ("context:CurrentMessage") == true some_context.propertyExists ("context:ImmediateDestination") == true some_context.propertyExists ("context:ImmediateSender") == true </apitests>

Test:T2.6.2

Description:

Context API assertions for this test are:

Properties:

<apitests> some_context.getPropertyValue ("context:ExchangePatternName") == 'http://www.w3.org/2001/12/soap/mep/single-request-response/' </apitests>

Test:T2.6.30

Description:

Context API assertions for this test are:

Properties:

<apitests> some_context.getPropertyValue ("context:ExchangePatternName") == http//www.w3.org/2001/12/soap/mep/single-request-response/ some_context.getPropertyValue ("single:Role") == RequestingSOAPNode some_context.getPropertyValue ("single:State") == Requesting some_context.getPropertyValue ("context:FailureReason") == null some_context.propertyExists ("context:ImmediateDestination") == true </apitests>

Test:T2.6.31

Description:

Context API assertions for this test are:

Properties:

<apitests> some_context.getPropertyValue ("context:ExchangePatternName") == http//www.w3.org/2001/12/soap/mep/single-request-response/ some_context.getPropertyValue ("single:Role") == RespondingSOAPNode some_context.getPropertyValue ("single:State") == Receiving some_context.getPropertyValue ("context:FailureReason") == null some_context.getPropertyValue ("context:CurrentMessage") == null some_context.propertyExists ("context:ImmediateSource") == true </apitests>

Test:T2.6.32

Description:

Properties:

<apitests> some_context.getPropertyValue ("context:FailureReason") == 'transmissionFailure' </apitests>

Test:T2.6.33

Description:

Properties:

<apitests> some_context.getPropertyValue ("context:FailureReason") == 'NoResponse' </apitests>

Test:T2.6.34

Description:

Properties:

<apitests> some_context.getPropertyValue ("context:FailureReason") == 'ReceptionFailure' </apitests>

Test:T2.6.35

Description:

Properties:

<apitests> some_context.getPropertyValue ("context:ImmediateSender") != null </apitests>

Test:T2.6.36

Description:

Properties:

<apitests> some_context.getPropertyValue ("context:FailureReason") == ReceptionFailure </apitests>

Test:T2.6.37

Description:

Properties:

<apitests> some_context.getPropertyValue ("context:FailureReason") == 'NoResponse' </apitests>

Test:T2.6.38

Description:

Properties:

<apitests> some_context.getPropertyValue ("context:FailureReason") == 'transmissionFailure' </apitests>

Changelog

05 May 2002 - ASK

Synched up assertions from Part 2, section 4 and 7 to April 11 2002 version of the spec. Changes were sent by Lynne
New assertion numbering added.

04 May 2002 - ASK

Synched up tests generated by Richard for Part 1.

30 April 2002 - ASK

Synched up assertions from Part 2 Section 1-3, Appendex A-B to April 11 2002 version of the spec
Added Mark Jones' tests
Added Lynne's 3 new assertions from Part 1
Added Oisin's assertions from Part 2 section 5-6 along with the apitests
Changes to the doc, so that the text description of the test will correctly show up in the HTML version of the doc

25 April 2002 - ASK

Synched up assertion from Part 1 to April 11 2002 version of the spec
Added Introduction section as per discussion on dist-app wrt issue 36
'actor' has been replace with 'role' in all the assertions (part1 and part 2) as well as all the test message envelopes
Namespaces have be corrected to reflect the one in april 11th doc
Changed the test NS from http://www.w3.org/2000/xp/Group/1/09/ts to http://www.w3.org/2000/xp/Group/1/12/ts
Title has been changed
Severl misc. changes

24 April 2002 - ASK

Synched up assertion #81-110 to March 23 2002 version of the spec

25 March 2002

Incorporated comments and editorial from Microsoft

15 March 2002

Updated assertions titles with section numbers Small changes in the style sheet

10 March 2002

All specification text is now in blockquote style
Changed color styles that affected hardcopy legibility
Editorial changes to remove some errors
Add Acknowledgments section

6 March 2002

Adopted tests styling from Microsoft tests contribution
Reordered document to separate tests and assertions for effective re-use

4 March 2002

Stylesheet tuning to clean up html output
Removed specref elements with hard-coded spec references
Assertion number headers are now hyperlinked to specification documents
Assertions are auto-counted in the stylesheet
Elided assertions that are not part of specification
Added entities to DTD to parameterize specification location

26 February 2002 - JM

First pass at incorporating new MS assertions.
Transform to xml tags used in main doc.
Note: possible inconsistent sections #s: new asssertions partially written against editor doc, not Dec 17 WD
Start of transition to new testspec format.
Needs to be reviewed against editor doc for accuracy and missing assertions.

20 February 2002

Large re-edit to incorporate new assertions from the 17 December 2001 specification draft, work done at the face to face meeting in Burlington and assertions generated from new material around the transport binding framework.
Changed the style of grouping to parallel that of the specification for the purposes of simplifying cross-referencing of the assertions with the specification text.

24 September 2001

Finished conversion to XML.
Grouped tests in categories.
Rewrote the boilerplate and intro to reflect face-to-face decision to develop this document.
Wrote some tests.

31 July 2001

Removed DA/A distinction.
Evaluation of the SB tests.
Added a references section for the As.

25 July 2001

First version of the draft. Very rough.

Acknowledgements

This document is the work of the W3C XML Protocol Working Group. As such, all members of that group are acknowledged for their joint and several contributions to this work.

The editors would like to acknowledge Kirill Gavrylyuk (Microsoft) for the gladly-received contribution of test messages and assertions for SOAP 1.2 Part 1.

The people who have contributed to discussions on xml-dist-app@w3.org are also gratefully acknowledged.