// This file defines test cases that serialize synthesized XML documents
// in the payload of HTTP requests and responses.
$version: "2.0"
namespace aws.protocoltests.restxml
use aws.protocols#restXml
use smithy.test#httpRequestTests
use smithy.test#httpResponseTests
// This example serializes simple scalar types in the top level XML document.
// Note that headers are not serialized in the payload.
@idempotent
@http(uri: "/XmlUnions", method: "PUT")
operation XmlUnions {
input: XmlUnionsInputOutput,
output: XmlUnionsInputOutput
}
apply XmlUnions @httpRequestTests([
{
id: "XmlUnionsWithStructMember",
documentation: "Serializes union struct member",
protocol: restXml,
method: "PUT",
uri: "/XmlUnions",
body: """
string
true
1
2
3
4
5.5
6.5
""",
bodyMediaType: "application/xml",
headers: {
"Content-Type": "application/xml",
},
params: {
unionValue: {
structValue: {
stringValue: "string",
booleanValue: true,
byteValue: 1,
shortValue: 2,
integerValue: 3,
longValue: 4,
floatValue: 5.5,
doubleValue: 6.5,
},
},
}
},
{
id: "XmlUnionsWithStringMember",
documentation: "serialize union string member",
protocol: restXml,
method: "PUT",
uri: "/XmlUnions",
body: """
some string
""",
bodyMediaType: "application/xml",
headers: {
"Content-Type": "application/xml",
},
params: {
unionValue: {
stringValue: "some string",
},
}
},
{
id: "XmlUnionsWithBooleanMember",
documentation: "Serializes union boolean member",
protocol: restXml,
method: "PUT",
uri: "/XmlUnions",
body: """
true
""",
bodyMediaType: "application/xml",
headers: {
"Content-Type": "application/xml",
},
params: {
unionValue: {
booleanValue: true,
},
}
},
{
id: "XmlUnionsWithUnionMember",
documentation: "Serializes union member",
protocol: restXml,
method: "PUT",
uri: "/XmlUnions",
body: """
true
""",
bodyMediaType: "application/xml",
headers: {
"Content-Type": "application/xml",
},
params: {
unionValue: {
unionValue: {
booleanValue: true,
},
},
}
},
])
apply XmlUnions @httpResponseTests([
{
id: "XmlUnionsWithStructMember",
documentation: "Serializes union struct member",
protocol: restXml,
code: 200,
body: """
string
true
1
2
3
4
5.5
6.5
""",
bodyMediaType: "application/xml",
headers: {
"Content-Type": "application/xml",
},
params: {
unionValue: {
structValue: {
stringValue: "string",
booleanValue: true,
byteValue: 1,
shortValue: 2,
integerValue: 3,
longValue: 4,
floatValue: 5.5,
doubleValue: 6.5,
},
},
}
},
{
id: "XmlUnionsWithStringMember",
documentation: "Serializes union string member",
protocol: restXml,
code: 200,
body: """
some string
""",
bodyMediaType: "application/xml",
headers: {
"Content-Type": "application/xml",
},
params: {
unionValue: {
stringValue: "some string",
},
}
},
{
id: "XmlUnionsWithBooleanMember",
documentation: "Serializes union boolean member",
protocol: restXml,
code: 200,
body: """
true
""",
bodyMediaType: "application/xml",
headers: {
"Content-Type": "application/xml",
},
params: {
unionValue: {
booleanValue: true,
},
}
},
{
id: "XmlUnionsWithUnionMember",
documentation: "Serializes union member",
protocol: restXml,
code: 200,
body: """
true
""",
bodyMediaType: "application/xml",
headers: {
"Content-Type": "application/xml",
},
params: {
unionValue: {
unionValue: {
booleanValue: true,
},
},
}
},
])
structure XmlUnionsInputOutput {
unionValue: XmlUnionShape,
}
union XmlUnionShape {
stringValue: String,
booleanValue: Boolean,
byteValue: Byte,
shortValue: Short,
integerValue: Integer,
longValue: Long,
floatValue: Float,
doubleValue: Double,
unionValue: XmlUnionShape,
structValue: XmlNestedUnionStruct,
}
structure XmlNestedUnionStruct {
stringValue: String,
booleanValue: Boolean,
byteValue: Byte,
shortValue: Short,
integerValue: Integer,
longValue: Long,
floatValue: Float,
doubleValue: Double,
}