smithy.test

package smithy.test

Members list

Type members

Classlikes

sealed abstract class AppliesTo(_value: String, _name: String, _intValue: Int, _hints: Hints) extends Value

Value parameters

CLIENT

The test only applies to client implementations.

SERVER

The test only applies to server implementations.

Attributes

Companion
object
Supertypes
class Value
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Known subtypes
object CLIENT.type
object SERVER.type
object AppliesTo extends Enumeration[AppliesTo], Companion[AppliesTo]

Attributes

Companion
class
Supertypes
trait Sum
trait Mirror
trait Enumeration[AppliesTo]
trait Companion[AppliesTo]
trait Has[AppliesTo]
trait ShapeTag[AppliesTo]
trait HasId
class Object
trait Matchable
class Any
Show all
Self type
AppliesTo.type
final case class HttpMalformedRequestDefinition(method: String, uri: String, host: Option[String], queryParams: Option[List[String]], headers: Option[Map[String, String]], body: Option[String])

Value parameters

body

The HTTP message body to include in the request

headers

Defines a map of HTTP headers to include in the request

host

The host / endpoint provided to the client, not including the path or scheme (for example, "example.com").

method

The HTTP request method.

queryParams

A list of the serialized query string parameters to include in the request. Each element in the list is a query string key value pair that starts with the query string parameter name optionally followed by "=", optionally followed by the query string parameter value. For example, "foo=bar", "foo=", and "foo" are all valid values. The query string parameter name and the value MUST appear in the format in which it is expected to be sent over the wire; if a key or value needs to be percent-encoded, then it MUST appear percent-encoded in this list.

uri

The request-target of the HTTP request, not including the query string (for example, "/foo/bar").

Attributes

Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Companion
class
Supertypes
trait Product
trait Mirror
trait HasId
class Object
trait Matchable
class Any
Show all
Self type
final case class HttpMalformedRequestTestCase(id: String, protocol: ShapeId, request: HttpMalformedRequestDefinition, response: HttpMalformedResponseDefinition, documentation: Option[String], tags: Option[List[NonEmptyString]], testParameters: Option[Map[String, List[String]]])

Value parameters

documentation

A description of the test and what is being asserted.

id

The identifier of the test case. This identifier can be used by protocol test implementations to filter out unsupported test cases by ID, to generate test case names, etc. The provided id MUST match Smithy's identifier ABNF. No two httpMalformedRequestTests test cases can share the same ID.

protocol

The name of the protocol to test.

request

The malformed request to send.

response

The expected response.

tags

Applies a list of tags to the test.

testParameters

An optional set of test parameters for parameterized testing.

Attributes

Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Companion
class
Supertypes
trait Product
trait Mirror
trait Companion[HttpMalformedRequestTestCase]
trait HasId
class Object
trait Matchable
class Any
Show all
Self type
object HttpMalformedRequestTestParametersDefinition extends Newtype[Map[String, List[String]]]

Attributes

Supertypes
class Newtype[Map[String, List[String]]]
trait HasId
class Object
trait Matchable
class Any
Self type

Define how a malformed HTTP request is rejected by a server given a specific protocol

Define how a malformed HTTP request is rejected by a server given a specific protocol

Attributes

Supertypes
class Newtype[List[HttpMalformedRequestTestCase]]
trait HasId
class Object
trait Matchable
class Any
Self type
sealed trait HttpMalformedResponseBodyAssertion extends Product, Serializable

Attributes

Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Known subtypes
Self type

Attributes

Companion
trait
Supertypes
trait Sum
trait Mirror
trait HasId
class Object
trait Matchable
class Any
Show all
Self type
final case class HttpMalformedResponseBodyDefinition(assertion: HttpMalformedResponseBodyAssertion, mediaType: String)

Value parameters

assertion

The assertion to execute against the response body.

mediaType

The media type of the response body. This is used to help test runners to parse and evaluate contents' andmessageRegex` in the assertion

Attributes

Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Companion
class
Supertypes
trait Product
trait Mirror
trait HasId
class Object
trait Matchable
class Any
Show all
Self type
final case class HttpMalformedResponseDefinition(code: Int, headers: Option[Map[String, String]], body: Option[HttpMalformedResponseBodyDefinition])

Value parameters

body

The expected response body.

code

Defines the HTTP response code.

headers

Defines a map of expected HTTP headers. Headers that are not listed in this map are ignored.

Attributes

Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Attributes

Companion
class
Supertypes
trait Product
trait Mirror
trait HasId
class Object
trait Matchable
class Any
Show all
Self type
final case class HttpRequestTestCase(id: String, protocol: ShapeId, method: String, uri: String, host: Option[String], resolvedHost: Option[String], authScheme: Option[ShapeId], queryParams: Option[List[String]], forbidQueryParams: Option[List[String]], requireQueryParams: Option[List[String]], headers: Option[Map[String, String]], forbidHeaders: Option[List[String]], requireHeaders: Option[List[String]], body: Option[String], bodyMediaType: Option[String], params: Option[Document], vendorParams: Option[Document], vendorParamsShape: Option[ShapeId], documentation: Option[String], tags: Option[List[NonEmptyString]], appliesTo: Option[AppliesTo])

Value parameters

appliesTo

Indicates that the test case is only to be implemented by "client" or "server" implementations. This property is useful for identifying and testing edge cases of clients and servers that are impossible or undesirable to test in both client and server implementations.

authScheme

The optional authentication scheme shape ID to assume. It's possible that specific authentication schemes might influence the serialization logic of an HTTP request.

body

The expected HTTP message body. If no request body is defined, then no assertions are made about the body of the message.

bodyMediaType

The media type of the body. This is used to help test runners to parse and validate the expected data against generated data.

documentation

A description of the test and what is being asserted.

forbidHeaders

A list of header field names that must not appear in the serialized HTTP request.

forbidQueryParams

A list of query string parameter names that must not appear in the serialized HTTP request. Each value MUST appear in the format in which it is sent over the wire; if a key needs to be percent-encoded, then it MUST appear percent-encoded in this list.

headers

Defines a map of expected HTTP headers. Headers that are not listed in this map are ignored unless they are explicitly forbidden through forbidHeaders.

host

The host / endpoint provided to the client, not including the path or scheme (for example, "example.com").

id

The identifier of the test case. This identifier can be used by protocol test implementations to filter out unsupported test cases by ID, to generate test case names, etc. The provided id MUST match Smithy's identifier ABNF. No two httpRequestTests test cases can share the same ID.

method

The expected serialized HTTP request method.

params

Defines the input parameters used to generated the HTTP request. These parameters MUST be compatible with the input of the operation.

protocol

The name of the protocol to test.

queryParams

A list of the expected serialized query string parameters. Each element in the list is a query string key value pair that starts with the query string parameter name optionally followed by "=", optionally followed by the query string parameter value. For example, "foo=bar", "foo=", and "foo" are all valid values. The query string parameter name and the value MUST appear in the format in which it is expected to be sent over the wire; if a key or value needs to be percent-encoded, then it MUST appear percent-encoded in this list. A serialized HTTP request is not in compliance with the protocol if any query string parameter defined in queryParams is not defined in the request or if the value of a query string parameter in the request differs from the expected value. queryParams applies no constraints on additional query parameters.

requireHeaders

A list of header field names that must appear in the serialized HTTP message, but no assertion is made on the value. Headers listed in headers do not need to appear in this list.

requireQueryParams

A list of query string parameter names that MUST appear in the serialized request URI, but no assertion is made on the value. Each value MUST appear in the format in which it is sent over the wire; if a key needs to be percent-encoded, then it MUST appear percent-encoded in this list.

resolvedHost

The host / endpoint that the client should send to, not including the path or scheme (for example, "prefix.example.com"). This can differ from the host provided to the client if the hostPrefix member of the endpoint trait is set, for instance.

tags

Applies a list of tags to the test.

uri

The request-target of the HTTP request, not including the query string (for example, "/foo/bar").

vendorParams

Defines vendor-specific parameters that are used to influence the request. For example, some vendors might utilize environment variables, configuration files on disk, or other means to influence the serialization formats used by clients or servers. If a vendorParamsShape is set, these parameters MUST be compatible with that shape's definition.

vendorParamsShape

A shape to be used to validate the vendorParams member contents. If set, the parameters in vendorParams MUST be compatible with this shape's definition.

Attributes

Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
object HttpRequestTestCase extends Companion[HttpRequestTestCase]

Attributes

Companion
class
Supertypes
trait Product
trait Mirror
trait Companion[HttpRequestTestCase]
trait Has[HttpRequestTestCase]
trait ShapeTag[HttpRequestTestCase]
trait HasId
class Object
trait Matchable
class Any
Show all
Self type
object HttpRequestTests extends Newtype[List[HttpRequestTestCase]]

Define how an HTTP request is serialized given a specific protocol, authentication scheme, and set of input parameters.

Define how an HTTP request is serialized given a specific protocol, authentication scheme, and set of input parameters.

Attributes

Supertypes
class Newtype[List[HttpRequestTestCase]]
trait HasId
class Object
trait Matchable
class Any
Self type
final case class HttpResponseTestCase(id: String, protocol: ShapeId, code: Int, authScheme: Option[ShapeId], headers: Option[Map[String, String]], forbidHeaders: Option[List[String]], requireHeaders: Option[List[String]], body: Option[String], bodyMediaType: Option[String], params: Option[Document], vendorParams: Option[Document], vendorParamsShape: Option[ShapeId], documentation: Option[String], tags: Option[List[NonEmptyString]], appliesTo: Option[AppliesTo])

Value parameters

appliesTo

Indicates that the test case is only to be implemented by "client" or "server" implementations. This property is useful for identifying and testing edge cases of clients and servers that are impossible or undesirable to test in both client and server implementations.

authScheme

The optional authentication scheme shape ID to assume. It's possible that specific authentication schemes might influence the serialization logic of an HTTP response.

body

Defines the HTTP message body. If no response body is defined, then no assertions are made about the body of the message.

bodyMediaType

The media type of the body. This is used to help test runners to parse and validate the expected data against generated data. Binary media type formats require that the contents of body are base64 encoded.

code

Defines the HTTP response code.

documentation

A description of the test and what is being asserted.

forbidHeaders

A list of header field names that must not appear.

headers

A map of expected HTTP headers. Each key represents a header field name and each value represents the expected header value. An HTTP response is not in compliance with the protocol if any listed header is missing from the serialized response or if the expected header value differs from the serialized response value. headers applies no constraints on additional headers.

id

The identifier of the test case. This identifier can be used by protocol test implementations to filter out unsupported test cases by ID, to generate test case names, etc. The provided id MUST match Smithy's identifier ABNF. No two httpResponseTests test cases can share the same ID.

params

Defines the output parameters deserialized from the HTTP response. These parameters MUST be compatible with the output of the operation.

protocol

The shape ID of the protocol to test.

requireHeaders

A list of header field names that must appear in the serialized HTTP message, but no assertion is made on the value. Headers listed in headers map do not need to appear in this list.

tags

Applies a list of tags to the test.

vendorParams

Defines vendor-specific parameters that are used to influence the response. For example, some vendors might utilize environment variables, configuration files on disk, or other means to influence the serialization formats used by clients or servers. If a vendorParamsShape is set, these parameters MUST be compatible with that shape's definition.

vendorParamsShape

A shape to be used to validate the vendorParams member contents. If set, the parameters in vendorParams MUST be compatible with this shape's definition.

Attributes

Companion
object
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
object HttpResponseTestCase extends Companion[HttpResponseTestCase]

Attributes

Companion
class
Supertypes
trait Product
trait Mirror
trait Companion[HttpResponseTestCase]
trait ShapeTag[HttpResponseTestCase]
trait HasId
class Object
trait Matchable
class Any
Show all
Self type
object HttpResponseTests extends Newtype[List[HttpResponseTestCase]]

Define how an HTTP response is serialized given a specific protocol, authentication scheme, and set of output or error parameters.

Define how an HTTP response is serialized given a specific protocol, authentication scheme, and set of output or error parameters.

Attributes

Supertypes
class Newtype[List[HttpResponseTestCase]]
trait HasId
class Object
trait Matchable
class Any
Self type
object NonEmptyString extends Newtype[String]

Attributes

Supertypes
class Newtype[String]
trait HasId
class Object
trait Matchable
class Any
Self type
object NonEmptyStringList extends Newtype[List[NonEmptyString]]

Attributes

Supertypes
class Newtype[List[NonEmptyString]]
trait HasId
class Object
trait Matchable
class Any
Self type
object StringList extends Newtype[List[String]]

Attributes

Supertypes
class Newtype[List[String]]
trait HasId
class Object
trait Matchable
class Any
Self type
StringList.type
object StringMap extends Newtype[Map[String, String]]

Attributes

Supertypes
class Newtype[Map[String, String]]
trait HasId
class Object
trait Matchable
class Any
Self type
StringMap.type

Types

Define how a malformed HTTP request is rejected by a server given a specific protocol

Define how a malformed HTTP request is rejected by a server given a specific protocol

Attributes

type HttpRequestTests = Type

Define how an HTTP request is serialized given a specific protocol, authentication scheme, and set of input parameters.

Define how an HTTP request is serialized given a specific protocol, authentication scheme, and set of input parameters.

Attributes

type HttpResponseTests = Type

Define how an HTTP response is serialized given a specific protocol, authentication scheme, and set of output or error parameters.

Define how an HTTP response is serialized given a specific protocol, authentication scheme, and set of output or error parameters.

Attributes

type NonEmptyString = Type
type NonEmptyStringList = Type
type StringList = Type
type StringMap = Type