Smithy rs release 0.57.x backport snapshot fix (#3176)

This commit is contained in:
AWS SDK Rust Bot 2023-11-10 15:58:21 -05:00 committed by GitHub
commit 6cb0b4613c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 72 additions and 2 deletions

View File

@ -9,4 +9,10 @@
# message = "Fix typos in module documentation for generated crates" # message = "Fix typos in module documentation for generated crates"
# references = ["smithy-rs#920"] # references = ["smithy-rs#920"]
# meta = { "breaking" = false, "tada" = false, "bug" = false, "target" = "client | server | all"} # meta = { "breaking" = false, "tada" = false, "bug" = false, "target" = "client | server | all"}
# author = "rcoh" # author = "rcoh"
[[aws-sdk-rust]]
message = "Fix aws-sdk-rust#930 (PutSnapshotBlock)"
references = ["smithy-rs#3126", "aws-sdk-rust#930"]
meta = { "breaking" = false, "tada" = false, "bug" = true }
author = "rcoh"

View File

@ -226,7 +226,7 @@ private class AuthOperationCustomization(private val codegenContext: ClientCodeg
if (authSchemes.containsKey(SigV4Trait.ID)) { if (authSchemes.containsKey(SigV4Trait.ID)) {
val unsignedPayload = section.operationShape.hasTrait<UnsignedPayloadTrait>() val unsignedPayload = section.operationShape.hasTrait<UnsignedPayloadTrait>()
val doubleUriEncode = unsignedPayload || !disableDoubleEncode(codegenContext.serviceShape) val doubleUriEncode = unsignedPayload || !disableDoubleEncode(codegenContext.serviceShape)
val contentSha256Header = needsAmzSha256(codegenContext.serviceShape) val contentSha256Header = needsAmzSha256(codegenContext.serviceShape) || unsignedPayload
val normalizeUrlPath = !disableUriPathNormalization(codegenContext.serviceShape) val normalizeUrlPath = !disableUriPathNormalization(codegenContext.serviceShape)
rustTemplate( rustTemplate(
""" """

View File

@ -0,0 +1,64 @@
/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
package software.amazon.smithy.rustsdk
import org.junit.jupiter.api.Test
import software.amazon.smithy.rust.codegen.core.testutil.asSmithyModel
class SigV4AuthDecoratorTest {
private val modelWithSigV4AuthScheme = """
namespace test
use aws.auth#sigv4
use aws.api#service
use aws.protocols#restJson1
use smithy.rules#endpointRuleSet
use aws.auth#unsignedPayload
use smithy.test#httpRequestTests
@auth([sigv4])
@sigv4(name: "dontcare")
@restJson1
@endpointRuleSet({
"version": "1.0",
"rules": [{ "type": "endpoint", "conditions": [], "endpoint": { "url": "https://example.com" } }],
"parameters": {
"endpoint": { "required": true, "type": "string", "builtIn": "SDK::Endpoint" },
}
})
@service(sdkId: "dontcare")
service TestService { version: "2023-01-01", operations: [SomeOperation] }
structure SomeOutput { something: String }
structure SomeInput {
@httpPayload
something: Bytestream
}
@streaming
blob Bytestream
@httpRequestTests([{
id: "unsignedPayload",
protocol: restJson1,
method: "POST",
uri: "/",
params: {
something: "hello"
},
headers: {
"x-amz-content-sha256": "UNSIGNED-PAYLOAD",
},
}])
@unsignedPayload
@http(uri: "/", method: "POST")
operation SomeOperation { input: SomeInput, output: SomeOutput }
""".asSmithyModel()
@Test
fun unsignedPayloadSetsCorrectHeader() {
awsSdkIntegrationTest(modelWithSigV4AuthScheme) { _, _ -> }
}
}