mirror of https://github.com/smithy-lang/smithy-rs
Smithy rs release 0.57.x backport snapshot fix (#3176)
This commit is contained in:
commit
6cb0b4613c
|
@ -10,3 +10,9 @@
|
|||
# references = ["smithy-rs#920"]
|
||||
# meta = { "breaking" = false, "tada" = false, "bug" = false, "target" = "client | server | all"}
|
||||
# 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"
|
||||
|
|
|
@ -226,7 +226,7 @@ private class AuthOperationCustomization(private val codegenContext: ClientCodeg
|
|||
if (authSchemes.containsKey(SigV4Trait.ID)) {
|
||||
val unsignedPayload = section.operationShape.hasTrait<UnsignedPayloadTrait>()
|
||||
val doubleUriEncode = unsignedPayload || !disableDoubleEncode(codegenContext.serviceShape)
|
||||
val contentSha256Header = needsAmzSha256(codegenContext.serviceShape)
|
||||
val contentSha256Header = needsAmzSha256(codegenContext.serviceShape) || unsignedPayload
|
||||
val normalizeUrlPath = !disableUriPathNormalization(codegenContext.serviceShape)
|
||||
rustTemplate(
|
||||
"""
|
||||
|
|
|
@ -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) { _, _ -> }
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue