All Downloads are FREE. Search and download functionalities are using the official Maven repository.

META-INF.smithy.restJson1.validation.recursive-structures.smithy Maven / Gradle / Ivy

$version: "2.0"

namespace aws.protocoltests.restjson.validation

use aws.protocols#restJson1
use smithy.test#httpMalformedRequestTests
use smithy.test#httpRequestTests
use smithy.framework#ValidationException

@suppress(["UnstableTrait"])
@http(uri: "/RecursiveStructures", method: "POST")
operation RecursiveStructures {
    input: RecursiveStructuresInput,
    errors: [ValidationException]
}

apply RecursiveStructures @httpRequestTests([
    {
        id: "RestJsonRecursiveStructuresValidate",
        documentation: """
        Validation should work with recursive structures.""",
        protocol: restJson1,
        params: {
            "union" : {
                "union" : {
                    "union" : { "string" : "abc" }
                }
            }
        },
        method: "POST",
        uri: "/RecursiveStructures",
        headers: {
            "content-type": "application/json"
        },
        body: """
        { "union" : {
            "union" : {
                "union" : { "string" : "abc" }
            }
          }
        }""",
        bodyMediaType: "application/json"
    }
])

apply RecursiveStructures @httpMalformedRequestTests([
    {
        id: "RestJsonMalformedRecursiveStructures",
        documentation: """
        When a value deeply nested in a recursive structure does not meet constraints,
        a 400 ValidationException is returned.""",
        protocol: restJson1,
        request: {
            method: "POST",
            uri: "/RecursiveStructures",
            body: """
            { "union" : {
                "union" : {
                    "union" : { "string" : "XYZ" }
                 }
              }
            }""",
            headers: {
                "content-type": "application/json"
            }
        },
        response: {
            code: 400,
            headers: {
                "x-amzn-errortype": "ValidationException"
            },
            body: {
                mediaType: "application/json",
                assertion: {
                    contents: """
                    { "message" : "1 validation error detected. Value at '/union/union/union/string' failed to satisfy constraint: Member must satisfy enum value set: [abc, def]",
                      "fieldList" : [{"message": "Value at '/union/union/union/string' failed to satisfy constraint: Member must satisfy enum value set: [abc, def]", "path": "/union/union/union/string"}]}"""
                }
            }
        }
    },
])

structure RecursiveStructuresInput {
    union: RecursiveUnionOne
}

enum RecursiveEnumString {
    ABC = "abc"
    DEF = "def"
}

union RecursiveUnionOne {
    string: RecursiveEnumString,
    union: RecursiveUnionTwo
}

union RecursiveUnionTwo {
    string: RecursiveEnumString,
    union: RecursiveUnionOne
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy