SOAP Version 1.2 Specification Assertions and Test Collection

Editors' copy June 11 2002

Editors:
Hugo Haas, W3C
Oisin Hurley, IONA Technologies
Anish Karmarkar, Oracle Corp.
Jeff Mischkinsky, Oracle Corp.
Mark Jones, AT&T
Lynne Thompson, Unisys
Richard Martin, Active Data Exchange

Abstract

This document draws a list of assertions found in the SOAP Version 1.2 specifications, 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 specifications 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 specifications 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/06/12 15:13:35 $.

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 May 31 2002 snapshot of the SOAP Version 1.2 Part 1 and Part 2 specifications. Please refer to the latest SOAP Version 1.2 Working Draft for any current normative information.

References to the May 31 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.

Table of Contents

Introduction
SOAP 1.2 Assertions
SOAP 1.2 Tests Collection
Changelog

Introduction

This document draws a list of testable assertions found in the SOAP Version 1.2 specifications, 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 $Date 2002/06/11 $.

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 specifications; there are mandatory requirements of the specifications 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 specifications. 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 specifications even if it does not support all capabilities tested by the SOAP 1.2 Test Suite. SOAP 1.2 specifications 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 specifications 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 for SOAP Version 1.2 Part 1 and Part 2 are numbered sequentially (1..n). "Location of the assertion" points the source of the assertion (section or subsection number) in Part 1 or Part 2. Hyperlinks are used to cross-reference to the original specification section/subsection.

Some of the tests in this document use SOAPBuilders interoperability tests as a started point, but have been modified to conform to the SOAP 1.2 specifications.

SOAP 1.2 Assertions

Assertion 1

Location of the assertion

SOAP 1.2 Part 1, Section 1.2

Text from the specification

In particular, this document defines the following namespace names:
  • The SOAP envelope has the namespace name "http://www.w3.org/2001/12/soap-envelope" (see 5. SOAP Message Construct).
  • The SOAP Misunderstood element information item has the namespace name "http://www.w3.org/2001/12/soap-faults" (see 5.4.8 SOAP mustUnderstand Faults).
  • The SOAP Upgrade element information item has the namespace name "http://www.w3.org/2001/12/soap-upgrade" (see 5.4.7 VersionMismatch Faults).
Normative XML Schema [4], [5] documents for these namespace names can be found by dereferencing the namespace names above.

Comments

This assertion will not be tested.

Assertion 2

Location of the assertion

SOAP 1.2 Part 1, Section 1.2

Text from the specification

SOAP does not require that XML Schema processing (assessment or validation) be performed to establish the correctness or 'schema implied' values of element and attribute information items defined by this specification. The values associated with element and attribute information items defined in this specification MUST be carried explicitly in the transmitted SOAP message except where stated otherwise (see 5. SOAP Message Construct).

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

This assertion is tested by the entire test collection.

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 fully tested, as a SOAP node is allowed to process and remove SOAP headers, reinsert them and send them upstream.

Tests

role-invariance

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

Tests

ultimate-role-next, T1.2.18, encoding-test, standalone-test, whitespace-test, ignore-headerblock-child-attr, xml-base-test, http-500-MustUnderstand

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

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

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.

Tests

rdm5.2.2.55, rdm5.2.3.57, ultimate-receiver-1, ultimate-receiver-2

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.

Comments

This assertion will not be tested.

Assertion 12

Location of the assertion

SOAP 1.2 Part 1, Section 2.3

Text from the specification

A SOAP header block MAY carry a role attribute information item (see 5.2.2 SOAP role Attribute) that is used to target the header block at SOAP nodes operating in the specified role. This specification refers to the value of the SOAP role attribute as the SOAP role for the corresponding SOAP header block.

Comments

All tests in the test collection that use the role attribute test this assertion.

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.

Comments

All tests in the test collection that use the role attribute test this assertion.

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.

Comments

Tests

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

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 header block.

Comments

All tests in the test collection that uses headers test this assertion.

Assertion 16

Location of the assertion

SOAP 1.2 Part 1, Section 2.4

Text from the specification

SOAP header blocks MAY carry 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 SOAP header blocks are 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 header 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).

All tests in the test collection that use mustUnderstand attribute will test this assertion.

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 the mustUnderstand attribute information item on a SOAP header block not targeted at the current processing node. In particular, it is not an error for an ultimate SOAP receiver to receive a message containing a mandatory header block that is targeted at a role other than the ones assumed by the ultimate SOAP receiver.

Tests

T1.2.15, role-none-2

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 tests in the test collection that have body block(s) and do not generate a fault test this assertion.

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 the Value of Code set to "env:MustUnderstand" (see 5.4.8 SOAP mustUnderstand 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 application level processing specified 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 in the test collection test this assertion.

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 in the test collection that process a soap header without generating a fault, test this assertion.

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.

Comments

All tests in the test collection that have body block(s) test this assertion.

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.

Comments

All tests in the test collection that generate a fault test this assertion.

Assertion 23

Location of the assertion

SOAP 1.2 Part 1, Section 2.6

Text from the specification

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

Tests

header-fault

Assertion 24

Location of the assertion

SOAP 1.2 Part 1, Section 2.7.1

Text from the specification

Forwarding intermediaries MUST process the message according to the SOAP processing model defined in 2.6 Processing SOAP Messages. 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

All tests in the test collection that use Node B.

Assertion 25

Location of the assertion

SOAP 1.2 Part 1, Section 2.7.1

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

This assertion will not be tested.

Assertion 26

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 will not be tested.

Assertion 27

Location of the assertion

SOAP 1.2 Part 1, Section 2.8

Text from the specification

A SOAP node MAY support multiple envelope versions. However, when processing a message, a SOAP node MUST use the semantics defined by the version of that message.

Tests

rdm2.8.27

Assertion 28

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 Code set to "env:VersionMismatch". Any other malformation of the message construct MUST result in the generation of a fault with a Value of Code set to "env:Sender".

Tests

T1.3.1, Mark85, http-500-VersionMismatch, T1.2.14, T1.2.22, T1.4.2, no-body-test, trailer-test, non-nsqualified-attr-test, encodingStyle-on-env-test, http-400

Assertion 29

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

This assertion will not be tested. HTTP binding in SOAP 1.2 part 2 is a test for this assertion.

Assertion 30

Location of the assertion

SOAP 1.2 Part 1, Section 3.2

Text from the specification

A module specification follows the following rules. It:

  1. MUST identify itself with a URI. This enables the module to be unambiguously referenced in description languages or during negotiation.
  2. MUST clearly and completely specify the content and semantics of the header blocks used to implement the behavior in question, including if appropriate any modifications to the SOAP Processing model.
  3. MAY utilize the property conventions defined in Part 2 [1], section A Convention for Describing Features and Bindings, in describing the functionality that the module provides. If these conventions are followed, the module specification MUST clearly describe the relationship between the abstract properties and their representations in the SOAP envelope. Note that it is possible to write a feature specification purely in terms of abstract properties, and then write a separate module specification which implements that feature, mapping the properties defined in the feature specification to SOAP header blocks in the module.
  4. MUST clearly specify any known interactions with or changes to the interpretation of the SOAP body. Furthermore, it MUST clearly specify any known interactions with or changes to the interpretation of other SOAP features (whether or not those features are themselves modules).

Comments

This assertion will not be tested.

Assertion 31

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

This assertion will not be tested.

Assertion 32

Location of the assertion

SOAP 1.2 Part 1, Section 4.2

Text from the specification

A binding specification MUST enable one or more MEP.

Comments

HTTP binding specified in SOAP 1.2 part 2 enables an MEP. This assertion will not be tested.

Assertion 33

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 specified in SOAP 1.2 part 2 enables an MEP. This assertion will not be tested.

Assertion 34

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

All tests in the test collection test this assertion.

Assertion 35

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

This assertion will not be tested.

Assertion 36

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 assertion will not be tested.

Assertion 37

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.

Tests

T1.3.2

Assertion 38

Location of the assertion

SOAP 1.2 Part 1, Section 4.2

Text from the specification

Although streaming SOAP receivers will acquire such Infosets incrementally, SOAP processing MUST yield results identical to those that would have been achieved if the entire SOAP envelope were available prior to the start of processing.

Comments

This assertion will not be tested.

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

All tests in the test collection test this assertion.

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.

Tests

notation-test, T1.3.2, entity-test, encoding-test, standalone-test

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.

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.

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.

Tests

whitespace-test

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

All the tests in the test collection test this assertion.

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

All tests in the test collection that use encodingSytle attribute test this assertion.

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 only appear on:

  1. A SOAP header block (see 5.2.1 SOAP header block).
  2. A child element information item of the SOAP Body element information item (see 5.3.1 SOAP Body child Element).
  3. A child element information item of the SOAP Detail element information item (see 5.4.5.1 SOAP detail entry).
  4. Any descendent of 1, 2, and 3 above.

Comments

All tests in the test collection that use encodingSytle attribute test this assertion.

Assertion 47

Location of the assertion

SOAP 1.2 Part 1, Section 5.1.1

Text from the specification

The scope of the encodingStyle attribute information item 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.

Tests

scoped-encodingStyle

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

Tests

scoped-encodingStyle

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

All the tests in the test collection that use encodingStyle, test this assertion.

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

All the tests in the test collection that use headers, test this assertion.

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 have a [namespace name] property which has a value, that is, MUST be namespace qualified.
  • MAY have any number of character information item children. Child character information items whose character code is amongst the whitespace characters as defined by [8] are considered significant.
  • MAY have an encodingStyle attribute information item in its [attributes] property.
  • MAY have an role attribute information item in its [attributes] property.
  • MAY have a mustUnderstand attribute information item in its [attributes] property.

Comments

All tests in the test collection that use headers, test this assertion.

Assertion 52

Location of the assertion

SOAP 1.2 Part 1, Section 5.2.1

Text from the specification

The SOAP header block attribute information items defined later in 5.2.2 SOAP role Attribute and 5.2.3 SOAP mustUnderstand Attribute affect the processing of SOAP messages by SOAP receivers (see 2. SOAP Processing Model). A SOAP sender generating a SOAP message SHOULD use these attributes only on SOAP header block. A SOAP receiver MUST ignore these attribute information items if they appear on descendants of a SOAP header block or on a SOAP body child element information item (or its descendents).

Tests

ignore-headerblock-child-attr

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 in the test collection that use roles, will test this assertion.

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

Tests

T1.2.3, T1.2.24, Mark141, rdm2.8.27, rdm5.2.2.54, LRT103, LRT103A

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.

'this' in the specification text refers to the role attribute informantion item.

Tests

T1.2.4, T1.2.9, T1.2.10, T1.2.11, T1.2.12, T1.2.13, T1.2.14, rdm6.81, scoped-encodingStyle

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 with a value of "http://www.w3.org/2001/12/soap-envelope/role/ultimateReceiver" (see 1.2.2 Robustness Principle).

Tests

rdm5.2.2.55, rdm5.2.3.57

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 in the test collection that use mustUnderstand attribute, 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

'this' in the specification text refers to the mustUnderstand attribute information item.

Tests

ultimate-role-next, ultimate-role, T1.2.3, T1.2.4, T1.2.5, T1.2.6, T1.2.7, T1.2.9, T1.2.10, T1.2.10, role-none-1, Mark81, rdm5.2.3.57, LRT103, LRT103A, encoding-test, standalone-test, whitespace-test, ignore-headerblock-child-attr, alternate-ser-test

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

Tests

T1.2.11, rdm5.2.3.59, rdm6.81, rdm5.2.3.59

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

The attribute mentioned in the spec text refers to env:mustUnderstand.

Tests

T1.2.11, T1.2.12, T1.2.13, T1.2.15, T1.2.17, T1.2.18, role-none-2, T1.2.23, T1.2.24, Mark141, rdm5.2.2.54, rdm5.2.2.55, rdm5.2.3.59, rdm6.81, role-invariance, header-fault, ignore-headerblock-child-attr, xml-base-test, http-500-MustUnderstand

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.
  • Zero or more namespace qualified element information items in its [children] property.

Comments

All tests in the test collection that have the Body element, test this assertion.

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

All tests in the test collection that have the body blocks, test this

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 Code element information item (see 5.4.1 SOAP Code Element).
    2. A mandatory Reason element information item (see 5.4.2 SOAP Reason Element).
    3. An optional Node element information item (see 5.4.3 SOAP Node Element).
    4. An optional Role element information item (see 5.4.4 SOAP Role Element).
    5. An optional Detail element information item (see 5.4.5 SOAP Detail Element).

Comments

All tests in the test collection that generate fault, 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 a single SOAP Fault element information item as the only child of the SOAP Body .

Comments

All tests in the test collection that generate fault, test this assertion.

Assertion 65

Location of the assertion

SOAP 1.2 Part 1, Section 5.4

Text from the specification

When generating a fault, SOAP senders MUST NOT include additional element information items in the SOAP Body. A message whose Body contains a Fault plus additional element information items has no SOAP-defined semantics.

Comments

All tests in the test collection that generate fault, test this assertion.

Assertion 66

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.1

Text from the specification

The Code element information item has:

  • A [local name] of Code .
  • A [namespace name] of http://www.w3.org/2001/12/soap-envelope .
  • 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 Code parent))
    2. An optional Subcode element information item as described below (see 5.4.1.2 SOAP Subcode element).

Comments

All tests in the test collection that generate fault, test this assertion.

Assertion 67

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] of http://www.w3.org/2001/12/soap-envelope .
The type of the Value element information item is faultCodeEnum in the "http://www.w3.org/2001/12/soap-envelope" namespace.

Comments

All tests in the test collection that generate fault, test this assertion.

Assertion 68

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] of http://www.w3.org/2001/12/soap-envelope .
  • 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).

Tests

Mark142, omh-111-1

Assertion 69

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] of http://www.w3.org/2001/12/soap-envelope .
The type of the Value element information item is QName in the "http://www.w3.org/2001/XMLSchema" namespace.

Tests

Mark142, omh-111-1

Assertion 70

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.2

Text from the specification

The Reason element information item has:

  • A [local name] of Reason .
  • A [namespace name] of http://www.w3.org/2001/12/soap-envelope .
  • An optional attribute information item with a [local name] of lang and [namespace name] of "http://www.w3.org/XML/1998/namespace" (see [8], Language Identification).

Comments

All tests in the test collection that generate fault, test this assertion.

Assertion 71

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.2

Text from the specification

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

Comments

All tests in the test collection that generate fault, test this assertion.

Assertion 72

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.3

Text from the specification

The Node element information item has:

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

Tests

T1.2.23

Assertion 73

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.

The element information item in the specification text refers to the 'Node' element.

Tests

T1.2.23

Assertion 74

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.4

Text from the specification

The Role element information item has:

  • A [local name] of Role .
  • A [namespace name] of http://www.w3.org/2001/12/soap-envelope .
The type of the Role element information item is anyURI in the "http://www.w3.org/2001/XMLSchema" namespace.

Tests

T1.2.23, http-500-MustUnderstand

Assertion 75

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] of http://www.w3.org/2001/12/soap-envelope .
  • Zero or more attribute information items in its [attributes] property.
  • Zero or more child element information items in its [children] property.

Tests

T1.4.1, T1.4.2, LRT104

Assertion 76

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.5

Text from the specification

The Detail element information item MUST be present when the contents of the SOAP Body could not be processed successfully. It MUST NOT be used to carry error information about any SOAP header blocks.

Tests

T1.4.1, T1.4.2, LRT104

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.

Tests

T1.2.12, T1.2.13, T1.2.17, T1.2.18, T1.2.23, rdm5.2.2.54, rdm5.2.2.55, header-fault, http-500-MustUnderstand

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 Code element information item are restricted to those in Table 2. Additional fault subcodes MAY be created for use by applications or features. Such subcodes are carried in the Value child element information item of the Subcode element information item.

Comments

All tests in the test collection that generate fault, test this assertion.

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.

Tests

Mark85, http-500-VersionMismatch

Assertion 80

Location of the assertion

SOAP 1.2 Part 1, Section 5.4.8

Text from the specification

A SOAP node MAY generate a SOAP fault for any one or more SOAP header blocks that were not understood in a SOAP message. It is NOT a requirement that the fault contain the qualified names of ALL such header blocks. 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.

Tests

T1.2.12, T1.2.13, T1.2.17, T1.2.18, T1.2.23, rdm5.2.2.54, rdm5.2.2.55, http-500-MustUnderstand,

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.

Tests

xml-base-test

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.

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.

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 is about the behavior of SOAP 1.1 compliant SOAP node, the test collection does not test this assertion.

Assertion 85

Location of the assertion

SOAP 1.2 Part 1, Appendix A

Text from the specification

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.

Tests

Mark85

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.

Tests

alternate-ser-test

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 in the test collection that use soap encoding, will test this assertion.

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) among its attributes, 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.

All tests in the test collection that use soap encoding and do not return a fault, test this assertion.

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

Tests

LRT1, LRT2, LRT3, LRT4, LRT5, LRT6, LRT7, LRT8, echoStringArray-noItemType, LRT9, echoBase64, echoBoolean, echoDate, echoDecimal, echoFloat

Assertion 90

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

Tests

LRT1, LRT2, LRT3, LRT4, LRT5, LRT6

Assertion 91

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

Tests

LRT1, LRT2, LRT3, LRT4, LRT5, LRT6

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

Tests

LRT6, LRT7, LRT8, echoStringArray-noItemType, LRT9

Assertion 93

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

All tests in the test collection that use arrays, will test this assertion

Assertion 94

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.

Tests

isNil-test

Assertion 95

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

All encoding tests in the test collection, test this assertion.

Assertion 96

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.

Tests

T1.4.1, LRT2, LRT6, LRT7, LRT8, LRT9, LRT104, LRT105, LRT106, LRT106A

Assertion 97

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

Tests

LRT103, LRT103A, alternate-ser-test

Assertion 98

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

Tests

LRT103, LRT103A, alternate-ser-test

Assertion 99

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.

Tests

LRT103, LRT103A, alternate-ser-test

Assertion 100

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.

Tests

LRT105

Assertion 101

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.

Tests

LRT2, LRT6, LRT7, LRT8, echoStringArray-noItemType, LRT9, LRT104, LRT106, LRT106A

Assertion 102

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.

Add a new test for UntypedValue

Tests

LRT103, LRT105

Assertion 103

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

All encoding tests in the test collection, test this assertion.

Assertion 104

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

This assertion will not be tested.

Assertion 105

Location of the assertion

SOAP 1.2 Part 2, Section 4.1.1

Text from the specification

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

Comments

All tests in the test collection that use the RPC convention, test this assertion.

Assertion 106

Location of the assertion

SOAP 1.2 Part 2, Section 4.1.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

This assertion will not be tested.

Assertion 107

Location of the assertion

SOAP 1.2 Part 2, Section 4.1.2

Text from the specification

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.
  • If the response is represented by a struct, then each parameter is represented by an outbound edge with a label corresponding to the name of the parameter (see A. Mapping Application Defined Names to XML Names). A non-void return value is represented in the struct by an outbound edge that may be given any unique label. The QName of the label of the edge representing the return value is given by a separate outbound edge with a local name of result and the namespace name "http://www.w3.org/2001/12/soap-rpc". This result outbound edge MUST be present and hold the qname of the edge containing the return value within any struct response if the return value of the procedure is non-void. This result outbound edge MUST NOT be present if the return value of the procedure is void.
  • If the response is represented by an array, each outbound edge has a label corresponding to the position of the parameter. A return value MUST be present if the return value of the procedure is non-void. If present, the return value MUST be represented as the first edge of the array with parameters following. If no return value is present, then parameters begin with the first outbound edge of the array.
  • 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

All tests in the test collection that use the RPC convention and do not generate a fault, test this assertion. Test 'Mark138' tests the void return case.

Assertion 108

Location of the assertion

SOAP 1.2 Part 2, Section 4.1.2

Text from the specification

An RPC response MUST NOT contain both a result and a fault, because a result indicates success and a fault indicates failure.

Comments

This assertion will not be tested.

Assertion 109

Location of the assertion

SOAP 1.2 Part 2, Section 4.1.3

Text from the specification

When using SOAP encoding (see 3. SOAP Encoding) in conjunction with the RPC convention described here, the SOAP Body MUST contain only a single child element information item, that child being the serialized RPC invocation or response struct or array. I.e. when using the SOAP encoding for serializing RPC invocations and responses, the encoding is constrained to produce a single tree of element information items.

Comments

All tests in the test collection that use the RPC convention, test 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.

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 MAY be generated when the receiver does not support the procedure or method specified.
  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.
  5. Other faults arising in an extension or from the application SHOULD be generated as described in [1]SOAP Fault Codes.

Comments

env:Receiver will not be tested by the test collection.

TODO: test for rpc:BadArguments

Tests

encodingStyle-on-env-test no-body-test trailer-test Mark142 omh-111-1

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 assertion will not be tested.

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 which introduces the property.

Comments

This assertion will not be tested.

Assertion 114

Location of the assertion

SOAP 1.2 Part 2, Section 6.1

Text from the specification

Table 2: Property definitions supporting the description of MEPs

Comments

This assertion will not be tested.

Assertion 115

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.1

Text from the specification

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

Comments

This assertion will not be tested.

Assertion 116

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Table 4: Instantiation of a Message Exchange Context for a requesting SOAP node

Comments

This assertion will not be tested.

Assertion 117

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Table 5: Instantiation of Message Exchange Context for an inbound request message

Comments

This assertion will not be tested.

Assertion 118

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Table 6: Requesting SOAP Node State Transitions

Comments

This assertion will not be tested.

Assertion 119

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

Table 7: Responding SOAP Node State Transitions

Comments

This assertion will not be tested.

Assertion 120

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

All the rules in [1]Binding Framework regarding streaming of individual SOAP messages MUST be obeyed for both request and response SOAP messages.

Comments

This assertion will not be tested.

Assertion 121

Location of the assertion

SOAP 1.2 Part 2, Section 6.2.3

Text from the specification

When using streaming SOAP bindings, requesting SOAP nodes MUST avoid deadlock by accepting and if necessary processing SOAP response information while the SOAP request is being transmitted.

Comments

This assertion will not be tested.

Assertion 122

Location of the assertion

SOAP 1.2 Part 2, Section 7.1

Text from the specification

Conforming implementations of this binding:
  1. MUST be capable of sending and receiving messages serialized using media type "application/soap+xml" whose proper use and parameters are described in [12].
'this' in the specification text refer to the SOAP HTTP Binding.

Tests

http-200, http-400, http-500-VersionMismatch, http-500-MustUnderstand

Assertion 123

Location of the assertion

SOAP 1.2 Part 2, Section 7.1

Text from the specification

The SOAP HTTP Binding is optional and SOAP nodes are NOT required to implement it. The SOAP version 1.2 specification does not preclude specifications of other bindings to HTTP or bindings to other protocols. A SOAP node that correctly and completely implements the SOAP HTTP Binding may to be said to "conform to the SOAP 1.2 HTTP Binding."

Comments

This assertion will not be tested.

Assertion 124

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 (MEP):

  • "http://www.w3.org/2001/12/soap/mep/request-response/" (see 6.2 Request-Response Message Exchange Pattern)

Comments

This assertion will not be tested.

Assertion 125

Location of the assertion

SOAP 1.2 Part 2, Section 7.4.1

Text from the specification

This binding supports streaming and, as a result, requesting SOAP nodes MUST avoid deadlock by accepting and if necessary processing SOAP response information while the SOAP request is being transmitted (see 6.2.3 State Machine Description).

Comments

This assertion will not be tested.

Assertion 126

Location of the assertion

SOAP 1.2 Part 2, Section 7.4.1.2

Text from the specification

State Description: Requesting

Tests

http-200, http-400, http-500-VersionMismatch, http-500-MustUnderstand

Assertion 127

Location of the assertion

SOAP 1.2 Part 2, Section 7.4.1.2

Text from the specification

Table 11: HTTP Status Codes Dependent Transitions

Tests

http-200, http-400, http-500-VersionMismatch, http-500-MustUnderstand, http-415

Assertion 128

Location of the assertion

SOAP 1.2 Part 2, Section 7.4.2.2

Text from the specification

Table 15: State Description: Receiving

Tests

http-200, http-400, http-500-VersionMismatch, http-500-MustUnderstand

Assertion 129

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

This assertion will not be tested.

Assertion 130

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

This assertion will not be tested.

SOAP 1.2 Tests Collection

All the tests in this test collection follow the following rules:

Header blocks used by the test collection :

Unless otherwise specified the header blocks used by this test collection are in the namespace http://example.org/ts-tests. If a header block not listed below is targeted at a Node, that Node must generate a fault with the Value of the fault Code as env:mustUnderstand.

Body blocks used by the test collection :

Unless otherwise specified the body blocks used by this test collection are in the namespace http://example.org/ts-tests. If a body block not listed below is targeted at a Node, that Node must generate a fault.

RPC methods used by the test collection :

Unless otherwise specified the procedure/method names used by this test collection are in the namespace http://example.org/ts-tests. If a RPC procedure/method is not listed below is targeted at a Node, that Node must generate a fault. In addition to types defined in the namespace http://www.w3.org/2001/XMLSchema, the test collection uses the following schema types (defined below in the schema fragment):
<complexType name="SOAPStruct"> <all> <element name="varString" type="string"/> <element name="varInt" type="int"/> <element name="varFloat" type="float"/> </all> </complexType> <complexType name="SOAPStructStruct"> <all> <element name="varString" type="string"/> <element name="varInt" type="int"/> <element name="varFloat" type="float"/> <element name="varStruct" type="tns:SOAPStruct"/> </all> </complexType>

Where tns refers to http://example.org/ts-tests and 'complexType', 'all', and 'element' have the usual meaning as defined by XML schema.

SOAPArrayStruct consists of a structure with four outbound edges each of types string, int, float and array of string in the namespace http://www.w3.org/2001/XMLSchema.


The encoding represented by the URI http://example.com/PoisonEncoding is an encoding that is not recognized by any of the SOAP nodes.


Some of the tests in this test collection test SOAP 1.2 HTTP binding. The request and response messages for these tests contain HTTP start-line (request-line or status-line), HTTP headers required by the bindings and the XML payload. Additional HTTP headers can be generated in accordance with the rules for the binding specific expression of any optional features in use for this message exchange. In the tests, the value of the 'Content-Length' and 'Host' header should be replaced with an appropriate value.

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

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

Message sent from Node C

<?xml version='1.0' ?> <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

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

Message sent from Node C

<?xml version='1.0' ?> <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

<?xml version='1.0' ?> <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

<?xml version='1.0' ?> <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

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

Message sent from Node C

<?xml version='1.0' ?> <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 without a responseOK header and an empty body (header block was ignored).

Messages:

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <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

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

Message sent from Node B

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

Message sent from Node C

<?xml version='1.0' ?> <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 Unknown 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

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

Message sent from Node B

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

Message sent from Node C

<?xml version='1.0' ?> <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, Ignore 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

<?xml version='1.0' ?> <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:Ignore xmlns:test="http://example.org/ts-tests" env:role="http://example.org/ts-tests/B"> foo </test:echoOk> <test:echoOk xmlns:test="http://example.org/ts-tests" env:role="http://www.w3.org/2001/12/soap-envelope/role/none"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node B

<?xml version='1.0' ?> <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 xmlns:test="http://example.org/ts-tests" env:role="http://www.w3.org/2001/12/soap-envelope/role/none"> foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <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

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

Message sent from Node B

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

Message sent from Node C

<?xml version='1.0' ?> <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

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

Message sent from Node C

<?xml version='1.0' ?> <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

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

Message sent from Node C

<?xml version='1.0' ?> <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

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header xmlns:f="http://www.w3.org/2001/12/soap-faults"> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests" /> </env:Header> <env:Body> <env:Fault> <env:Code> <env:Value>env:MustUnderstand</env:Value> </env:Code> <env:Reason>Header not understood</env:Reason> </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

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header xmlns:f="http://www.w3.org/2001/12/soap-faults"> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests" /> </env:Header> <env:Body> <env:Fault> <env:Code> <env:Value>env:MustUnderstand</env:Value> </env:Code> <env:Reason>Header not understood</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:T1.2.14

Description:

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

Messages:

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>env:mustUnderstand value is not boolean</env:Reason> </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

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

Message sent from Node C

<?xml version='1.0' ?> <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

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header xmlns:f="http://www.w3.org/2001/12/soap-faults"> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests" /> </env:Header> <env:Body> <env:Fault> <env:Code> <env:Value>env:MustUnderstand</env:Value> </env:Code> <env:Reason>Header not understood</env:Reason> </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

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

Message sent from Node B

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header xmlns:f="http://www.w3.org/2001/12/soap-faults"> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests"/> </env:Header> <env:Body> <env:Fault> <env:Code> <env:Value>env:MustUnderstand</env:Value> </env:Code> <env:Reason>Header not understood</env:Reason> </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

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

Message sent from Node B

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

Message sent from Node C

<?xml version='1.0' ?> <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

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

Message sent from Node C

<?xml version='1.0' ?> <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 child. Node C return a Fault.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <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

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>Message with illegal Body content</env:Reason> </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 must return MustUnderstand Fault message to Node A and no message should be forwarded to Node C.

Messages:

Message sent from Node A

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

Message sent from Node B

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header xmlns:f="http://www.w3.org/2001/12/soap-faults"> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests" /> </env:Header> <env:Body> <env:Fault> <env:Code> <env:Value>env:MustUnderstand</env:Value> </env:Code> <env:Reason>Header not understood</env:Reason> <env:Node>http://example.org/ts-tests/B</env:Node> <env:Role>http://example.org/ts-tests/B</env:Role> </env:Fault> </env:Body> </env:Envelope>

Test:T1.2.24

Description:

Node A sends to Node C message with echoOk header that has mustUnderstand="1" and echoOk Body element. NodeC must process the Header and the Body and return to Node A message with responseOk header and responseOk Body element.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk xmlns:test="http://example.org/ts-tests" env:mustUnderstand = "1"> 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

<?xml version='1.0' ?> <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:

Node A sends to Node C message with echoOk header that has mustUnderstand="wrong" and Unknown header that has mustUnderstand="1". Node C should return exactly one fault.

Messages:

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>env:mustUnderstand value is not boolean</env:Reason> </env:Fault> </env:Body> </env:Envelope>

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

<?xml version='1.0' ?> <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

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:VersionMismatch</env:Value> </env:Code> <env:Reason>Wrong Version</env:Reason> </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

<?xml version='1.0' ?> <!DOCTYPE env:Envelope SYSTEM "env.dtd"[]> <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

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>DTD are not supported by SOAP 1.2</env:Reason> </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

<?xml version='1.0' ?> <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

<?xml version='1.0' ?> <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:T1.4.1

Description:

Node A sends to node C message with test:echoStringArray that has encodingStyle attibute with a value of "http://www.w3.org/2001/12/soap-encoding", contains an element with attribute enc:itemType="xsd:string" (array of string), 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:itemType).

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <env:Body> <test:echoStringArray xmlns:test="http://example.org/ts-tests" xmlns:enc="http://www.w3.org/2001/12/soap-encoding" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <test:array enc:itemType="xs:string" enc:arraySize="1"> <a> <b>1</b> </a> </test:array> </test:echoStringArray> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>Violation of encoding rules</env:Reason> <env:Detail> Array element declared as array of integers contains elements with wrong content. </env: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

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body env: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

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>Incorrect SOAP Body element serialization</env:Reason> <env:Detail> SOAP Body must not have encodingStyle attribute information item. </env:Detail> </env:Fault> </env:Body> </env:Envelope>

Test:Mark81

Description:

Node A sends to node C message with Header having a role attribute value (URI) of length 2K role. Node C returns back empty body.

Messages:

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> </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 (if it supports SOAP 1.1).

Messages:

Message sent from Node A

<?xml version='1.0' ?> <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

<?xml version='1.0' ?> <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="ns2:Envelope" xmlns:ns2="http://www.w3.org/2001/12/soap-envelope"/> </v:Upgrade> </env:Header> <env:Body> <env:Fault> <env:Code> <env:Value>env:VersionMismatch</env:Value> </env:Code> <env:Reason>Wrong Version</env:Reason> </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

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:returnVoid xmlns:test="http://example.org/ts-tests"> </test:returnVoid> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:returnVoidResponse 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

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoHeaderResponse xmlns:test="http://example.org/ts-tests"> foo </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 fault with env:Sender as the Value for the fault and rpc:ProcedureNotPresent as the Value for the SubCode. Please note that the Value of rpc:ProcedureNotPresent for the SubCode is not required by SOAP 1.2

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:DoesNotExist xmlns:test="http://example.org/ts-tests"> </test:doesNotExist> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> <env:Subcode> <env:Value>rpc:ProcedureNotPresent</env:Value> </env:Subcode> </env:Code> <env:Reason>Procedure Not Present</env:Reason> </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 in the SOAP 1.1 NS. Node C, ignores this header.

Messages:

Message sent from Node A

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

Message sent from Node C

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

Test:rdm5.2.2.54

Description:

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

Messages:

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header xmlns:f="http://www.w3.org/2001/12/soap-faults"> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests" /> </env:Header> <env:Body> <env:Fault> <env:Code> <env:Value>env:MustUnderstand</env:Value> </env:Code> <env:Reason>Header not understood</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:rdm5.2.2.55

Description:

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

Messages:

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header xmlns:f="http://www.w3.org/2001/12/soap-faults"> <f:Misunderstood qname="test:Unknown" xmlns:test="http://example.org/ts-tests" /> </env:Header> <env:Body> <env:Fault> <env:Code> <env:Value>env:MustUnderstand</env:Value> </env:Code> <env:Reason>Header not understood</env:Reason> </env:Fault> </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

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <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

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

Message sent from Node C

<?xml version='1.0' ?> <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>

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <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> <test:responseOk xmlns:test="http://example.org/ts-tests"> bar </test:responseOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:rdm5.4.5.76

Description:

This test consists of Node A sending a msg with an unknown header and an incorrect value for the mustUnderstand attribute. Node C returns a env:Sender fault.

Messages:

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>env:mustUnderstand is a xsd:boolean</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:rdm6.81

Description:

This test uses the literal format for IPv6 addresses in URIs.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown xmlns:test="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]/ts-tests" env:role="" env:mustUnderstand="false"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

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

Test:LRT1

Description:

Node A sends a message to Node C contained in echoStruct with datatype ns1:SOAPStruct (integers, string, and floating point). Node C returns the datatypes in echoStructResponse.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoStruct xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputStruct> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> </inputStruct> </test:echoStruct> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoStructResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> </return> </test:echoStructResponse> </env:Body> </env:Envelope>

Test:LRT2

Description:

Node A sends a message to Node C in echoStructArray containing an element with attribute enc:itemType="ns1:SOAPStruct". Node C responds with echoStructArrayResponse.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoStructArray xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputStructArray enc:itemType="ns1:SOAPStruct" enc:arraySize="2" xmlns:ns1="http://example.org/ts-tests/xsd" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <item> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> </item> <item> <varInt>43</varInt> <varFloat>0.123</varFloat> <varString>bye world</varString> </item> </inputStructArray> </test:echoStructArray> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoStructArrayResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return enc:itemType="ns1:SOAPStruct" enc:arraySize="2" xmlns:ns1="http://example.org/ts-tests/xsd" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <item> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> </item> <item> <varInt>43</varInt> <varFloat>0.123</varFloat> <varString>bye world</varString> </item> </return> </test:echoStructArrayResponse> </env:Body> </env:Envelope>

Test:LRT3

Description:

Node A sends a message to Node C in echoStructAsSimpleTypes containing datatypes ns1:SOAPStruct (integer, floating point, and string). Node C responds with echoStructAsSimpleTypesResponse.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoStructAsSimpleTypes xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputStruct> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> </inputStruct> </test:echoStructAsSimpleTypes> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoStructAsSimpleTypesResponse xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <outputInteger>42</outputInteger> <outputFloat>0.005</outputFloat> <outputString>hello world</outputString> </test:echoStructAsSimpleTypesResponse> </env:Body> </env:Envelope>

Test:LRT4

Description:

Node A sends a message to Node C in echoSimpleTypesAsStruct containing datatypes (integers, floating point, and string). Node C responds with echoSimpleTypesAsStructResponse.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoSimpleTypesAsStruct xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputString>hello world</inputString> <inputInteger>42</inputInteger> <inputFloat>0.005</inputFloat> </test:echoSimpleTypesAsStruct> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoSimpleTypesAsStructResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return<rpc:result> <return> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> </return> </test:echoSimpleTypesAsStructResponse> </env:Body> </env:Envelope>

Test:LRT5

Description:

Node A sends a message to Node C in echoNestedStruct containing datatypes (integers, floating point, and string). Node C responds with echoNestedStruct.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoNestedStruct xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputStruct> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> <varStruct> <varString>nested struct</varString> <varInt>99</varInt> <varFloat>4.0699e-12</varFloat> </varStruct> </inputStruct> </test:echoNestedStruct> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoNestedStruct xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> <varStruct> <varString>nested struct</varString> <varInt>99</varInt> <varFloat>4.0699e-12</varFloat> </varStruct> </return> </test:echoNestedStruct> </env:Body> </env:Envelope>

Test:LRT6

Description:

Node A sends a message to Node C in echoNestedArray containing an array with three elements. Node C responds with echoNestedArray.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <env:Body> <test:echoNestedArray xmlns:test="http://exaple.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputStruct> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> <varArray enc:itemType="xsd:string" enc:arraySize="3" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <item>red</item> <item>blue</item> <item>green</item> </varArray> </inputStruct> </test:echoNestedArray> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <env:Body> <test:echoNestedArrayResponse xmlns:test="http://exampel.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> <varArray enc:itemType="xsd:string" enc:arraySize="3" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <item>red</item> <item>blue</item> <item>green</item> </varArray> </return> </test:echoNestedArrayResponse> </env:Body> </env:Envelope>

Test:LRT7

Description:

Node A sends a message to Node C in echoFloatArray with enc:itemType="ns:float". Node C responds with echoFloatArray.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <env:Body> <test:echoFloatArray xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputFloatArray enc:itemType="xsd:float" enc:arraySize="2" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <item>0.00000555</item> <item>12999.9</item> </inputFloatArray> </test:echoFloatArray> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoFloatArrayResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return enc:itemType="ns:float" enc:arraySize="2" xmlns:ns="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <item>5.55E-06</item> <item>12999.9</item> </return> </test:echoFloatArrayResponse> </env:Body> </env:Envelope>

Test:LRT8

Description:

Node A sends a message to Node C in echoStringArray with enc:itemType="ns:string". Node C responds with echoStringArray.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoStringArray xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputStringArray enc:itemType="xsd:string" enc:arraySize="2" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <item>hello</item> <item>world</item> </inputStringArray> </test:echoStringArray> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoStringArrayResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return enc:itemType="xsd:string" enc:arraySize="2" xmlns:enc="http://www.w3.org/2001/12/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <item>hello</item> <item>world</item> </return> </test:echoStringArrayResponse> </env:Body> </env:Envelope>

Test:echoStringArray-noItemType

Description:

Node A sends a message to Node C in echoStringArray without a enc:itemType attribute. Node C responds with echoStringArray.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoStringArray xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputStringArray enc:arraySize="2" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <item xsi:type="xsd:string">hello</item> <item xsi:type="xsd:string">world</item> </inputStringArray> </test:echoStringArray> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoStringArrayResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return enc:itemType="xsd:string" enc:arraySize="2" xmlns:enc="http://www.w3.org/2001/12/soap-encoding" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <item>hello</item> <item>world</item> </return> </test:echoStringArrayResponse> </env:Body> </env:Envelope>

Test:LRT9

Description:

Node A sends a message to Node C in echoIntegerArray with enc:itemType="ns"integer". Node C responds with echoIntegerArray.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoIntegerArray xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputIntegerArray enc:itemType="xsd:int" enc:arraySize="2" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <item>100</item> <item>200</item> </inputIntegerArray> </test:echoIntegerArray> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoIntegerArrayResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return enc:itemType="xsd:int" enc:arraySize="2" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <item>100</item> <item>200</item> </return> </test:echoIntegerArrayResponse> </env:Body> </env:Envelope>

Test:echoBase64

Description:

Node A sends a message to Node C with Base64-encoded binary data. Node C responds with echoBase64.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <env:Body> <test:echoBase64 xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputBase64 xsi:type="xsd:base64Binary"> YUdWc2JHOGdkMjl5YkdRPQ== </inputBase64> </test:echoBase64> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <env:Body> <test:echoBase64Response xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return xsi:type="xsd:base64Binary"> YUdWc2JHOGdkMjl5YkdRPQ== </return> </test:echoBase64Response> </env:Body> </env:Envelope>

Test:echoBoolean

Description:

Node A sends a message to Node C containing a boolean datatype with value = 1 in echoBoolean. Note C responds with echoBoolean.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoBoolean xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding"> <inputBoolean xsi:type="xsd:boolean">1</inputBoolean> </test:echoBoolean> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoBooleanResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding"> <rpc:result>return</rpc:result> <return xsi:type="xsd:boolean">1</return> </test:echoBooleanResponse> </env:Body> </env:Envelope>

Test:echoDate

Description:

Node A sends a message to Node C in echoDate with date datatype. Node C responds with echoDate.

Messages:

Message sent from Node A

<?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoDate xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputDate xsi:type="xsd:date">1956-10-18T22:20:00-07:00</inputDate> </test:echoDate> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoDateResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return>1956-10-18T15:20:00Z</return> </test:echoDateResponse> </env:Body> </env:Envelope>

Test:echoDecimal

Description:

Node A sends a message to Node C in echoDecimal with decimal datatype. Node C responds with echoDecimal.

Messages:

Message sent from Node A

<?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoDecimal xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputDecimal xsi:type="xsd:decimal">123.45678901234567890</inputDecimal> </test:echoDecimal> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoDecimalResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return xsi:type="xsd:decimal">123.4567890123456789</return> </test:echoDecimalResponse> </env:Body> </env:Envelope>

Test:echoFloat

Description:

Node A sends a message to Node C in echoFloat with floating point datatype. Node C responds with echoFloat.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoFloat xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding/"> <rpc:result>return</rpc:result> <inputFloat xsi:type="xsd:float">0.005</inputFloat> </test:echoFloat> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoFloatResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return xsi:type="xsd:float">0.005</return> </test:echoFloatResponse> </env:Body> </env:Envelope>

Test:LRT103

Description:

Node A sends to Node C a message with body containing a ref attribute information item referencing a non-existent id attribute information item. Node C responds with a fault.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Header> <test:DataHolder xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <test:Data id="data-1" xsi:type="xsd:string"> hello world </test:Data> </test:DataHolder> </env:Header> <env:Body> <test:echoString xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputString ref="#data-2" xsi:type="xsd:string" /> </test:echoString> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> <env:Subcode> <env:Value>enc:MissingID</env:Value> </env:Subcode> </env:Code> <env:Reason>Unresolved reference</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:LRT103A

Description:

Node A sends to Node C a message with body containing a ref attribute information item referencing a unique indetifier defined by an id attribute information item. Node C responds by echoing the value of the element information item containing the referenced id attribute information item.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Header> <test:DataHolder xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <test:Data id="data" xsi:type="xsd:string"> hello world </test:Data> </test:DataHolder> </env:Header> <env:Body> <test:echoString xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <test:inputString ref="#data" xsi:type="xsd:string" /> </test:echoString> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoStringResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return xsi:type="xsd:string"> hello world <return> </test:echoStringResponse> </env:Body> </env:Envelope>

Test:LRT104

Description:

Node A sends a message to Node C invoking the rpc echoIntegerArray. The inputIntegerArray element contains the attribute enc:itemType="xsd:int" but the children of this element are not of type xsd:int. Node C returns a fault.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoIntegerArray xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputIntegerArray enc:itemType="xsd:int" enc:arraySize="1" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <a><b>1</b></a> </test:array> </test:echoIntegerArray> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>Violation of encoding rules</env:Reason> <env:Detail> Array element declared as array of integers contains elements with wrong content. </env:Detail> </env:Fault> </env:Body> </env:Envelope>

Test:LRT105

Description:

Node A sends a message to Node C with a body containing a ref attribute information item and an id information item on the same element information item. Node C returns a fault.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoStringArray xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputStringArray enc:itemType="xsd:string" xmlns:enc="http://www.w3.org/2001/12/soap-encoding/" enc:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <item id="data" xsi:type"xsd:string" ref="#data">hello</item> <item>world</item> </inputStringArray> </test:echoStringArray> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:enc="http://www.w3.org/2001/12/soap-encoding"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> <env:Subcode> <env:Value>enc:MissingID</env:Value> </env:Subcode> </env:Code> <env:Reason>Violation of id and ref information items</env:Reason> <env:detail> A ref attribute information item and an id attribute information item MUST NOT appear on the same element information item. </env:detail> </env:Fault> </env:Body> </env:Envelope>

Test:LRT106

Description:

Node A sends to Node C a message specifying an array with bound specified by an asterisk. Node C responds with the count of items that appeared in the input array.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:countItems xmlns:test="http://example.org/ts-tests" xmlns:enc="http://www.w3.org/2001/12/soap-encoding" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputStringArray enc:itemType="xsd:string" enc:arraySize="*"> <item>hello</item> <item>world</item> </inputStringArray> </test:countItems> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:countItemsResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return xsi:type="xsd:int"> 2 </return> </test:countItemsResponse> </env:Body> </env:Envelope>

Test:LRT106A

Description:

Node A sends to Node C a message specifying an array with bound specified by an asterisk. Node C responds with the count of items that appeared in the input array.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:countItems xmlns:test="http://example.org/ts-tests" xmlns:enc="http://www.w3.org/2001/12/soap-encoding" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputStringArray enc:itemType="xsd:string" enc:arraySize="2 *"> <item>hello</item> <item>world</item> </inputStringArray> </test:countItems> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>* may only be first arraySize value in list</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:role-invariance

Description:

Node A sends a msg to node B with three headers in it with MU=1 and targeted at Node B. The semantics of processing the header test:concatAndForwardEchoOK requires Node B to take the contents of test:concatAndForwardEchoOkArg1 and test:concatAndForwardEchoOkArg2, concatanate them and forward the result to Node C using the test:echoOk header. Node C then receives the concatanated data in the test:echoOk header and responds using the test:responsOk header.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:concatAndForwardEchoOk xmlns:test="http://example.org/ts-tests" env:role="http://example.org/ts-tests/B" env:mustUnderstand="1"/> <test:concatAndForwardEchoOkArg1 xmlns:test="http://example.org/ts-tests" env:role="http://example.org/ts-tests/B" env:mustUnderstand="1"> StringA </test:concatAndForwardEchoOkArg1> <test:concatAndForwardEchoOkArg2 xmlns:test="http://example.org/ts-tests" env:role="http://example.org/ts-tests/B" env:mustUnderstand="1"> StringB </test:concatAndForwardEchoOkArg2> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node B

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoOk xmlns:test="http://example.org/ts-tests" env:role="http://example.org/ts-tests/C" env:mustUnderstand="1"> StringAStringB </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:responseOk xmlns:test="http://example.org/ts-tests"> StringAStringB </test:responseOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:header-fault

Description:

Node A sends a message to node C with one headers in it with MU=1 and targeted at Node C. The semantics of processing the header test:validateCountryCode requires Node C to take the contents of test:validateCountryCode and validate that it consists of 2 letters. If the code sent is not 2 letters then a fault is sent back. The details of the fault are sent in the header test:validateCountryCodeFault

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:validateCountryCode xmlns:test="http://example.org/ts-tests" env:role="http://example.org/ts-tests/C" env:mustUnderstand="1"> ABCD </test:validateCountryCode> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:validateCountryCodeFault xmlns:test="http://example.org/ts-tests"> Country code must be 2 letters. </test:validateCountryCodeFault> </env:Header> <env:Body> <env:Fault> <env:Code>env:Sender</env:Code> <env:Reason>Not a valid country code</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:notation-test

Description:

Node A sends a message to node C with non-empty [notation] property. Node C responds by sending back a fault.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <!NOTATION application_xml SYSTEM 'http://www.isi.edu/in-notes/iana/assignments/media-types/application/xml'> <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

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>DTD are not supported by SOAP 1.2</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:entity-test

Description:

Node A sends a message to node C with non-empty [unparsed entity] property. Node C responds by sending back a fault.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <!ELEMENT Envelope (Body) > <!ELEMENT Body (echoOk) > <!ELEMENT echoOk (#PCDATA) > <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

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>DTD are not supported by SOAP 1.2</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:encoding-test

Description:

Node A sends a message to node C with non-empty [encoding] property. Node C responds by sending the appropriate 'responseOk'.

Messages:

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <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:standalone-test

Description:

Node A sends a message to node C with [standalone] property as 'true'. Node C responds by sending the appropriate 'responseOk'.

Messages:

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <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:whitespace-test

Description:

Node A sends a message to node C with a soap message which is semantically eqivalent to the request message in test ultimate-role-next test (the only difference being additional whitespace character information item). Node C responds by sending the appropriate 'responseOk'.

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" env:role="http://www.w3.org/2001/12/soap-envelope/role/next" > foo </test:echoOk> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <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:no-body-test

Description:

Node A sends a message to node C which does not contain a Body element. Node C responds by sending an appropriate fault

Messages:

Message sent from Node A

<?xml version='1.0' ?> <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:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>env:Body must be present in a SOAP 1.2 envelope</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:trailer-test

Description:

Node A sends a message to node C which contains Header, Body and a Trailer element Node C responds by sending an appropriate fault

Messages:

Message sent from Node A

<?xml version='1.0' ?> <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> <Trailer> </Trailer> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>A SOAP 1.2 envelope can contain only Header and Body</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:non-nsqualified-attr-test

Description:

Node A sends a message to node C with a non-namespace qualified attribute on the Envelope Node C responds by sending an appropriate fault

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" attr1="a-value"> <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

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>A SOAP 1.2 Envelope element cannot have non Namespace qualified attributes</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:encodingStyle-on-env-test

Description:

Node A sends a message to node C with the encodingStyle set on the Envelope element. Node C responds by sending an appropriate fault

Messages:

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason> env:encodingStyle cannot be specified on the env:Envelope </env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:scoped-encodingStyle

Description:

Node A sends a message to node C, using the SOAP RPC convention. The RCP asks for node C to echo back the string. The message sent by A has encodingStyle set on the Body block as well as the RPC input parameter. Node C responds by echoing the parameter.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoString xmlns:test="http://example.org/ts-tests" env:encodingStyle=""> <test:inputString env:encodingStyle="http://www.w3.org/2001/12/soap-encoding">hello world </test:inputString> </test:echoString> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoStringResponse xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <test:return>hello world </test:return> </test:echoString> </env:Body> </env:Envelope>

Test:ignore-headerblock-child-attr

Description:

Node A sends a message to Node C with 2 headers echoOk and Unknown. The Unknown header does not have a mustUnderstand or role attribute set, but the child of the header block does. Node C does not understand the Unknown header but can safely ignore it, and responds to the echoOk header.

Messages:

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <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:xml-base-test

Description:

Node A sends a message to Node C with header echoResolvedRef containing a relative reference defined by xlink:href and xml:base. Node C responds by echoing the resolved reference.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:echoResolvedRef xmlns:test="http://example.org/ts-tests" env:role="http://www.w3.org/2001/12/soap-envelope/role/next" env:mustUnderstand="1"> <test:RelativeReference xml:base="http://example.org/today/" xlink:href="new.xml" xmlns:xlink="http://www.w3.org/1999/xlink" /> </test:echoResolvedRef> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:responseResolvedRef xmlns:test="http://example.org/ts-tests"> http://example.org/today/new.xml </test:resonseResolvedRef> </env:Header> <env:Body> </env:Body> </env:Envelope>

Test:alternate-ser-test

Description:

Node A sends 2 different serialization for echoString test and gets the same response back from Node C

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoString xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputString xsi:type="xsd:string"> hello world </inputString> </test:echoString> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoStringResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return xsi:type="xsd:string"> hello world </return> </test:echoString> </env:Body> </env:Envelope>

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Header> <test:DataHolder xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <test:Data id="data" xsi:type="xsd:string"> hello world </test:Data> </test:DataHolder> </env:Header> <env:Body> <test:echoString xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputString ref="data" xsi:type="xsd:string" /> </test:echoString> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoStringResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return xsi:type="xsd:string"> hello world </return> </test:echoString> </env:Body> </env:Envelope>

Test:isNil-test

Description:

This test consists of an RPC called 'isNil'. This RPC has one parameter of any type. The return value is of type boolean. If the request message has a parameter that was absent or had xsi:nil='1', the returned value is true, else it is false. Node A is the requesting node and Node C is the responding node. This test consists of 3 requests and responses send by Node A and Node C respectively.

Messages:

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:isNil xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputString xsi:nil="1" /> </test:isNil> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:isNilResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return xsi:type="xsd:boolean"> 1 </return> </test:isNilResponse> </env:Body> </env:Envelope>

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:isNil xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> </test:isNil> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:isNilResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return xsi:type="xsd:boolean"> 1 </return> </test:isNilResponse> </env:Body> </env:Envelope>

Message sent from Node A

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:isNil xmlns:test="http://example.org/ts-tests" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <inputString xsi:type="xsd:string"> This is a string <inputString> </test:isNil> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:isNilResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc" env:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <rpc:result>return</rpc:result> <return xsi:type="xsd:boolean"> 0 <return> </test:isNilResponse> </env:Body> </env:Envelope>

Test:ultimate-receiver-1

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/ultimateReceiver". NodeC returns back empty body with responseOK header.

Messages:

Message sent from Node A

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

Message sent from Node C

<?xml version='1.0' ?> <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-receiver-2

Description:

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

Messages:

Message sent from Node A

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

Message sent from Node B

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

Message sent from Node C

<?xml version='1.0' ?> <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:omh-111-1

Description:

This tests assumes the existence of a conventionally non-existant encoding to test a failure condition. It is the intention that no receiving SOAP 1.2 node will support this encoding and that on receiving this encoding style declaration in a SOAP message, will return the DataEncodingUnknown fault.

Node A sends a simple SOAP 1.2 message to Node C containing the poison encoding style declaration. Node C responds with a fault.

Messages:

Message sent from Node A

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <test:echoOk encodingStyle="http://example.com/PoisonEncoding"> foo </test:echoOk> </env:Body> </env:Envelope>

Message sent from Node C

<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:DataEncodingUnknown<env:/value> </env:Code> <env:Reason>Unknown Data Encoding Style</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:http-200

Description:

This tests consists of testing SOAP 1.2 HTTP bindings. Node A sends a valid SOAP request message over HTTP 1.1 to Node C. Node C responds with a HTTP status 200 and a SOAP response message.

Messages:

Message sent from Node A

POST /soap1.2/interop HTTP/1.1 Host: www.w3c.org Content-Type: application/soap+xml; charset="utf-8" Content-Length: nnn <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoString xmlns:test="http://example.org/ts-tests"> <inputString xsi:type="xsd:string">hello world</inputString> </test:echoString> </env:Body> </env:Envelope>

Message sent from Node C

HTTP/1.1 200 OK Content-Type: application/soap+xml; charset="utf-8" Content-Length: nnn <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoStringResponse xmlns:test="http://example.org/ts-tests" xmlns:rpc="http://www.w3.org/2001/12/soap-rpc"> <rpc:result>return</rpc:result> <return xsi:type="xsd:int">hello world</return> </test:echoStringResponse> </env:Body> </env:Envelope>

Test:http-400

Description:

This tests consists of testing SOAP 1.2 HTTP bindings. Node A sends an invalid SOAP (with a missing 'Body' element) request message over HTTP 1.1 to Node C. Node C responds with a HTTP status 400 and a SOAP message containing a 'env:Sender' SOAP fault.

Messages:

Message sent from Node A

POST /soap1.2/interop HTTP/1.1 Host: www.w3c.org Content-Type: application/soap+xml; charset="utf-8" Content-Length: nnn <?xml version="1.0" encoding="UTF-8"?> <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:Envelope>

Message sent from Node C

HTTP/1.1 400 Bad Request Content-Type: application/soap+xml; charset="utf-8" Content-Length: nnn <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Body> <env:Fault> <env:Code> <env:Value>env:Sender</env:Value> </env:Code> <env:Reason>env:Body must be present in a SOAP 1.2 envelope</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:http-500-VersionMismatch

Description:

This tests consists of testing SOAP 1.2 HTTP bindings. Node A sends a valid SOAP 1.1 request message over HTTP 1.1 to Node C. Node C responds with a HTTP status 500 and a SOAP message containing a 'env:VersionMismatch' SOAP fault.

Messages:

Message sent from Node A

POST /soap1.2/interop HTTP/1.1 Host: www.w3c.org Content-Type: application/soap+xml; charset="utf-8" Content-Length: nnn <?xml version="1.0" encoding="UTF-8"?> <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

HTTP/1.1 500 Internal Server Error Content-Type: application/soap+xml; charset="utf-8" Content-Length: nnn <?xml version="1.0" encoding="UTF-8"?> <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"/> </V:Upgrade> </env:Header> <env:Body> <env:Fault> <env:Code> <env:Value>env:VersionMismatch</env:Value> </env:Code> <env:Reason>Wrong Version</env:Reason> </env:Fault> </env:Body> </env:Envelope>

Test:http-500-MustUnderstand

Description:

This tests consists of testing SOAP 1.2 HTTP bindings. Node A sends a SOAP request message over HTTP 1.1 to Node C. This request message contains a header with mustUnderstand="1", which Node C does not understand. Node C responds with a HTTP status 500 and a SOAP message containing a 'env:MustUnderstand' SOAP fault.

Messages:

Message sent from Node A

POST /soap1.2/interop HTTP/1.1 Host: www.w3c.org Content-Type: application/soap+xml; charset="utf-8" Content-Length: nnn <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope"> <env:Header> <test:Unknown xmlns:test="http://example.org/ts-tests" env:role="http://www.w3.org/2001/12/soap-envelope/role/next" env:mustUnderstand="1"> foo </test:Unknown> </env:Header> <env:Body> </env:Body> </env:Envelope>

Message sent from Node C

HTTP/1.1 500 Internal Server Error Content-Type: application/soap+xml; charset="utf-8" Content-Length: nnn <?xml version="1.0" encoding="UTF-8"?> <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> <env:Code> <env:Value>env:MustUnderstand</env:Value> </env:Code> <env:Reason>Header not understood</env:Reason> <env:Role>http://www.w3.org/2001/12/soap-envelope/role/next</env:Role> </env:Fault> </env:Body> </env:Envelope>

Test:http-415

Description:

This tests consists of testing SOAP 1.2 HTTP bindings. Node A sends an valid SOAP request message over HTTP 1.1 to Node C, using media type "audio/mpeg". Node C responds with a HTTP status 415.

Messages:

Message sent from Node A

POST /soap1.2/interop HTTP/1.1 Host: www.w3c.org Content-Type: audio/mpeg Content-Length: nnn <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <test:echoString xmlns:test="http://example.org/ts-tests"> <inputString xsi:type="xsd:string">hello world</inputString> </test:echoString> </env:Body> </env:Envelope>

Message sent from Node C

HTTP/1.1 415 Unsupported Media

Changelog

11 June 2002 - ASK

Added a list of headers, body blocks and RPCs used by the test collection along with a brief explanation of the associated semantics.

10 June 2002 - ASK

Cleaned/reformed tests (reused headers where possible)
fixed problems such as MU, role not being NS-qualified. Removed test T1.2.16
Removed test rdm5.1.148 - I do not understand what it does
Added a list of headers, body blocks and RPCs used by the test collection along with a brief explanation of the associated semantics.

9 June 2002 - ASK

Fixed test rdm5.4.5.76
Added http-415 test
Added echoStringArray-noItemType test

8 June 2002 - ASK

Removed test Mark84, Mark86 - they test SOAP 1.2
Removed T1.4.3 - dup of T1.4.2
Fixed T1.2.25 as per HFN's feedback
Fixed T1.3.1 as per HFN's feedback
Removed DTDNotSupported Exception as per HFN's feedback
Fixed T1.4.1 as per HFN's feedback
Fixed LRT102 as per HFN's feedback
Fixed LRT104 as per HFN's feedback
Fixed trailer-test, no-body-test, non-nsqualified-attr-test as per HFN's feedback

4 June 2002 - ASK

'dangling pronouns' are fixed by adding previous sentence from the spec, or combining two assertions, or adding an explanation in the comments section.

3 June 2002 - ASK

Synched up with May 31st version of SOAP 1.2 spec.

28 May 2002 - ASK

Added HTTP tests.

22 May 2002 - ASK

Change the subtitle from 'SOAP 1.2 Conformance Assertions' to 'SOAP 1.2 Assertions'
Fixed a few editorial issues and nits.

21 May 2002 - ASK

Updated to include Lynne's and Nick's comments. Synched up with May 14, 2002 version of the spec.

21 May 2002 - ASK

Added Lynne's new tests.

18 May 2002 - ASK

Added 10 more tests

15 May 2002 - ASK

Included Lynne's test for SBR2
Misc. corrections.

14 May 2002 - ASK

Included Oisin's test for 111

13 May 2002 - ASK

Update the author's list to include Mark, Lynne and Richard.
Removed API tests.

12 May 2002 - ASK

Incorporated feedback from JohnI regarding diffs between the May 3rd version of the spec and April 12th version of the spec.
Incorporated feedback from ChrisF regarding diffs between the May 3rd version of the spec and April 12th version of the spec.

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 editors would like to acknowledge John Ibbotson and Chris Ferris for generating the differences between various versions of the SOAP 1.2 specification.

The editors would like to acknowledge Nick Smilonich reviewing this document.

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