MTOM CR Test Scenarios

Here are a set of test scenarios for MTOM. We will use these tests
during the Candidate Recommendation phase. As noted previously[1] the
tests will take the form of an echo test. These come in two forms;

1.	A client implementation sends an MTOM message and the server
implementation returns the corresponding XML 1.0 message
2.	A client implementation sends an XML 1.0 message and the server
implementation returns the corresponding MTOM message

In all cases elements with the namespace name
"http://example.org/mtom/data" and a local name of "Data" will be of a
type derived from xs:base64Binary. Such elements will have a xop:Include
element child in the MTOM messages and base64 text as children in the
XML case. A schema for the elements used is as follows:

<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' 
           targetNamespace='http://example.org/mtom/data'
           xmlns:x='http://example.org/mtom/data' >

  <xs:import namespace='http://www.w3.org/2004/06/xmlmime' />

  <xs:element name='Data' >
   <xs:complexType>
    <xs:simpleContent>
     <xs:extension base='xs:base64Binary' >
      <xs:attribute ref='xmime:contentType' />
     </xs:extension>
    </xs:simpleContent>
   </xs:complexType>
  </xs:element>

  <xs:element name='EchoTest' >
   <xs:complexType>
    <xs:sequence>
     <xs:element ref='x:Data' minOccurs='1' maxOccurs='unbounded' />
    </xs:sequence>
   </xs:complexType>
  </xs:element>

</xs:schema>

I've listed the various tests below, with example XML messages. Please
note that in all cases, despite the vagaries of mailers, the x:Data
element do not have any whitespace characters as children. The amount of
base64 text sent ( as either text or optimized binary ) is unimportant.
However, to avoid running into memory limitations during testing, it
would be best to send smaller rather than larger binary parts. If
someone wants to propose an upper limit, let me know. I think most of my
own test messages come in below 512Kb.



Test 1: Single binary part. Limit the number of x:Data elements in the
message to 1. An example XML version of the message will be as follows:

<soap:Envelope xmlns:soap='http://www.w3.org/2003/05/soap-envelope' >
 <soap:Body>
  <x:Data xmlns:x='http://example.org/mtom/data'
>IK44HhIvWXSX2NIeoJyjiUfI5+ynntOwSmsYyf29ks0NuVSwaHWQedq6kn/qDql6Rmnu5W2
a44HaiNSnF5B22g==</x:Data>
 </soap:Body>
</soap:Envelope>

Test 1a: Send XML, get back MTOM
Test 1b: Send MTOM, get back XML



Test 2: Multiple binary parts. Allow any number of x:Data elements in
the message. An example XML version of the message will be as follows:

<soap:Envelope xmlns:soap='http://www.w3.org/2003/05/soap-envelope' >
 <soap:Body>
  <x:Wrapper>
    <x:Data xmlns:x='http://example.org/mtom/data'
>IK44HhIvWXSX2NIeoJyjiUfI5+ynntOwSmsYyf29ks0NuVSwaHWQedq6kn/qDql6Rmnu5W2
a44HaiNSnF5B22g==</x:Data>
    <x:Data xmlns:x='http://example.org/mtom/data'
>3T4iLkRXu+K/QNlhEJqaIt8uE
ZHpS7kRdXBLNhiet+xYAUyTiNPFGBuc8EPti+vc9Fe3mMNxAlGFELkUDEXKA==</x:Data>
    <x:Data xmlns:x='http://example.org/mtom/data'
>g0txZNBHOf5ho5pv7NsXLm5m1
3dmG5MC2GCUW2bjRar55raIMPUvkiYFpsJ/dwbKtgtZUb07DWi3b4tvst6Xfg==</x:Data>
  </x:Wrapper>
 </soap:Body>
</soap:Envelope>

Test 2a: Send XML, get back MTOM
Test 2b: Send MTOM, get back XML



Test 3: Testing xmime:contentType attribute and MIME content-type
header. The xmime:contentType header is specified on x:Data elements in
an XML message. An MTOM message is returned with the MIME content-type
of the binary parts set to the appropriate value. An example XML version
of the message will be as follows:

<soap:Envelope xmlns:soap='http://www.w3.org/2003/05/soap-envelope' >
 <soap:Body>
  <x:Data xmlns:x='http://example.org/mtom/data'
          xmlns:xmime='http://www.w3.org/2004/06/xmlmime'
          xmime:contentType='image/jpeg'
>IK44HhIvWXSX2NIeoJyjiUfI5+ynntOwSmsYyf29ks0NuVSwaHWQedq6kn/qDql6Rmnu5W2
a44HaiNSnF5B22g==</x:Data>
 </soap:Body>
</soap:Envelope>

The corresponding MTOM message would set the content-type header of the
binary part for the x:Data element to 'image/jpeg'

Test 3a: Send XML, get back MTOM
Test 3b: Not applicable.



Test 4: Failure test: Missing MIME part. Send an MTOM message with a
xop:Include element that references a non-existent MIME part. A SOAP
fault should be returned indicating that the message was in error.

Test 5: Failure test: Use of content-location. Send an MTOM message that
references one or more MIME parts by content-location (rather than
content-id). A SOAP fault should be returned indicating that the message
was in error.

Test 6: Failure test: Use of startinfo parameter that does NOT specify
application/soap+xml. Send an MTOM message that uses a startinfo of
image/jpeg. A SOAP fault should be returned indicating that the message
was in error.

Test 7: Failure test: Use of type parameter on the root part that does
NOT specify application/soap+xml. Send an MTOM message that uses a type
parameter of image/jpeg for the root part. A SOAP fault should be
returned indicating that the message was in error.

Regards

Gudge

[1] http://lists.w3.org/Archives/Public/xml-dist-app/2004Jul/0025.html

Received on Wednesday, 18 August 2004 14:42:50 UTC