Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify @httpPayload on string shape protocol tests #2331

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 1 addition & 117 deletions smithy-aws-protocol-tests/model/restJson1/http-payload.smithy
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// This file defines test cases that test HTTP payload bindings.
// Note that string payloads are tested in `http-string-payload.smithy`.
// See: https://smithy.io/2.0/spec/http-bindings.html#httppayload-trait

$version: "2.0"
Expand Down Expand Up @@ -374,120 +375,3 @@ structure HttpPayloadWithUnionInputOutput {
union UnionPayload {
greeting: String
}

/// This example serializes a string shape in the payload.
///
/// In this example, no JSON document is synthesized because the payload is
/// not a structure or a union type.
@http(uri: "/HttpPayloadTraitOnString", method: "POST")
operation HttpPayloadTraitOnString {
input: HttpPayloadTraitOnStringInputOutput,
output: HttpPayloadTraitOnStringInputOutput
}

structure HttpPayloadTraitOnStringInputOutput {
@httpPayload
foo: String,
}

apply HttpPayloadTraitOnString @httpRequestTests([
{
id: "RestJsonHttpPayloadTraitOnString",
documentation: "Serializes a string in the HTTP payload",
protocol: restJson1,
method: "POST",
uri: "/HttpPayloadTraitOnString",
body: "Foo",
bodyMediaType: "text/plain",
headers: {
"Content-Type": "text/plain",
},
requireHeaders: [
"Content-Length"
],
params: {
foo: "Foo",
}
},
])

apply HttpPayloadTraitOnString @httpResponseTests([
{
id: "RestJsonHttpPayloadTraitOnString",
documentation: "Serializes a string in the HTTP payload",
protocol: restJson1,
code: 200,
body: "Foo",
bodyMediaType: "text/plain",
headers: {
"Content-Type": "text/plain",
},
params: {
foo: "Foo",
}
},
])

apply HttpPayloadTraitOnString @httpMalformedRequestTests([
{
id: "RestJsonHttpPayloadTraitOnStringNoContentType",
documentation: "Serializes a string in the HTTP payload without a content-type header",
protocol: restJson1,
request: {
method: "POST",
uri: "/HttpPayloadTraitOnString",
body: "Foo",
// We expect a `Content-Type` header but none was provided.
},
response: {
code: 415,
headers: {
"x-amzn-errortype": "UnsupportedMediaTypeException"
}
},
tags: [ "content-type" ]
},
{
id: "RestJsonHttpPayloadTraitOnStringWrongContentType",
documentation: "Serializes a string in the HTTP payload without the expected content-type header",
protocol: restJson1,
request: {
method: "POST",
uri: "/HttpPayloadTraitOnString",
body: "Foo",
headers: {
// We expect `text/plain`.
"Content-Type": "application/json",
},
},
response: {
code: 415,
headers: {
"x-amzn-errortype": "UnsupportedMediaTypeException"
}
},
tags: [ "content-type" ]
},
{
id: "RestJsonHttpPayloadTraitOnStringUnsatisfiableAccept",
documentation: "Serializes a string in the HTTP payload with an unstatisfiable accept header",
protocol: restJson1,
request: {
method: "POST",
uri: "/HttpPayloadTraitOnString",
body: "Foo",
headers: {
"Content-Type": "text/plain",
// We can't satisfy this requirement; the server will return `text/plain`.
"Accept": "application/json",
},
},
response: {
code: 406,
headers: {
"x-amzn-errortype": "NotAcceptableException"
}
},
tags: [ "accept" ]
},
])
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ namespace aws.protocoltests.restjson

use smithy.test#httpRequestTests
use smithy.test#httpResponseTests
use smithy.test#httpMalformedRequestTests

@http(uri: "/EnumPayload", method: "POST")
@httpRequestTests([
Expand Down Expand Up @@ -46,8 +47,14 @@ enum StringEnum {
{
id: "RestJsonStringPayloadRequest",
uri: "/StringPayload",
headers: { "Content-Type": "text/plain" },
body: "rawstring",
bodyMediaType: "text/plain",
headers: {
"Content-Type": "text/plain",
},
requireHeaders: [
"Content-Length"
],
params: { payload: "rawstring" },
method: "POST",
protocol: "aws.protocols#restJson1"
Expand All @@ -58,11 +65,75 @@ enum StringEnum {
id: "RestJsonStringPayloadResponse",
headers: { "Content-Type": "text/plain" },
body: "rawstring",
bodyMediaType: "text/plain",
params: { payload: "rawstring" },
protocol: "aws.protocols#restJson1",
code: 200
}
])
@httpMalformedRequestTests([
{
id: "RestJsonStringPayloadNoContentType",
documentation: "Serializes a string in the HTTP payload without a content-type header",
protocol: "aws.protocols#restJson1",
request: {
method: "POST",
uri: "/StringPayload",
body: "rawstring",
// We expect a `Content-Type` header but none was provided.
},
response: {
code: 415,
headers: {
"x-amzn-errortype": "UnsupportedMediaTypeException"
}
},
tags: [ "content-type" ]
},
{
id: "RestJsonStringPayloadWrongContentType",
documentation: "Serializes a string in the HTTP payload without the expected content-type header",
protocol: "aws.protocols#restJson1",
request: {
method: "POST",
uri: "/StringPayload",
body: "rawstring",
headers: {
// We expect `text/plain`.
"Content-Type": "application/json",
},
},
response: {
code: 415,
headers: {
"x-amzn-errortype": "UnsupportedMediaTypeException"
}
},
tags: [ "content-type" ]
},
{
id: "RestJsonStringPayloadUnsatisfiableAccept",
documentation: "Serializes a string in the HTTP payload with an unstatisfiable accept header",
protocol: "aws.protocols#restJson1",
request: {
method: "POST",
uri: "/StringPayload",
body: "rawstring",
headers: {
"Content-Type": "text/plain",
// We can't satisfy this requirement; the server will return `text/plain`.
"Accept": "application/json",
},
},
response: {
code: 406,
headers: {
"x-amzn-errortype": "NotAcceptableException"
}
},
tags: [ "accept" ]
},
])
operation HttpStringPayload {
input: StringPayloadInput,
output: StringPayloadInput
Expand All @@ -72,4 +143,3 @@ structure StringPayloadInput {
@httpPayload
payload: String
}

1 change: 0 additions & 1 deletion smithy-aws-protocol-tests/model/restJson1/main.smithy
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ service RestJson {
HttpEnumPayload,
HttpStringPayload,
HttpPayloadWithUnion,
HttpPayloadTraitOnString,

// @httpResponseCode tests
HttpResponseCode,
Expand Down
Loading