|
1 | 1 | # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. |
2 | 2 | # SPDX-License-Identifier: Apache-2.0 |
3 | 3 |
|
| 4 | +import copy |
4 | 5 | import re |
5 | 6 | import typing |
6 | 7 | from datetime import UTC, datetime |
@@ -76,6 +77,23 @@ def test_sign( |
76 | 77 | authorization_field = signed_request.fields["authorization"] |
77 | 78 | assert SIGV4_RE.match(authorization_field.as_string()) |
78 | 79 |
|
| 80 | + def test_sign_doesnt_modify_original_request( |
| 81 | + self, |
| 82 | + aws_identity: AWSCredentialIdentity, |
| 83 | + aws_request: AWSRequest, |
| 84 | + signing_properties: SigV4SigningProperties, |
| 85 | + ) -> None: |
| 86 | + original_request = copy.deepcopy(aws_request) |
| 87 | + signed_request = self.SIGV4_SYNC_SIGNER.sign( |
| 88 | + signing_properties=signing_properties, |
| 89 | + http_request=aws_request, |
| 90 | + identity=aws_identity, |
| 91 | + ) |
| 92 | + assert isinstance(signed_request, AWSRequest) |
| 93 | + assert signed_request is not aws_request |
| 94 | + assert aws_request.fields == original_request.fields |
| 95 | + assert signed_request.fields != aws_request.fields |
| 96 | + |
79 | 97 | @typing.no_type_check |
80 | 98 | def test_sign_with_invalid_identity( |
81 | 99 | self, aws_request: AWSRequest, signing_properties: SigV4SigningProperties |
@@ -127,6 +145,23 @@ async def test_sign( |
127 | 145 | authorization_field = signed_request.fields["authorization"] |
128 | 146 | assert SIGV4_RE.match(authorization_field.as_string()) |
129 | 147 |
|
| 148 | + async def test_sign_doesnt_modify_original_request( |
| 149 | + self, |
| 150 | + aws_identity: AWSCredentialIdentity, |
| 151 | + aws_request: AWSRequest, |
| 152 | + signing_properties: SigV4SigningProperties, |
| 153 | + ) -> None: |
| 154 | + original_request = copy.deepcopy(aws_request) |
| 155 | + signed_request = await self.SIGV4_ASYNC_SIGNER.sign( |
| 156 | + signing_properties=signing_properties, |
| 157 | + http_request=aws_request, |
| 158 | + identity=aws_identity, |
| 159 | + ) |
| 160 | + assert isinstance(signed_request, AWSRequest) |
| 161 | + assert signed_request is not aws_request |
| 162 | + assert aws_request.fields == original_request.fields |
| 163 | + assert signed_request.fields != aws_request.fields |
| 164 | + |
130 | 165 | @typing.no_type_check |
131 | 166 | async def test_sign_with_invalid_identity( |
132 | 167 | self, aws_request: AWSRequest, signing_properties: SigV4SigningProperties |
|
0 commit comments