Skip to content

Commit bb1539b

Browse files
authored
Remove extra question mark in s3 transfer manager (#2704)
1 parent 599b654 commit bb1539b

File tree

3 files changed

+47
-45
lines changed

3 files changed

+47
-45
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"category": "S3 Transfer Manager",
3+
"contributor": "",
4+
"type": "bugfix",
5+
"description": "Remove extra question mark when query parameters are provided in transfer manager"
6+
}

services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/S3CrtPojoConversion.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,6 @@ private static void addRequestCustomHeaders(List<HttpHeader> crtHeaders, Map<Str
278278

279279
private static String encodedQueryString(Map<String, List<String>> rawQueryParameters) {
280280
return SdkHttpUtils.encodeAndFlattenQueryParameters(rawQueryParameters)
281-
.map(value -> "?" + value)
282281
.orElse("");
283282
}
284283

services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/S3CrtPojoConversionTest.java

Lines changed: 41 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -66,15 +66,14 @@ public void fromCrtPutObjectOutputAllFields_shouldConvert() throws IllegalAccess
6666
PutObjectResponse sdkResponse = S3CrtPojoConversion.fromCrtPutObjectOutput(crtResponse, sdkHttpResponse);
6767

6868
// ignoring fields with different casings and enum fields.
69-
assertThat(sdkResponse).isEqualToIgnoringGivenFields(crtResponse,
70-
"sseCustomerAlgorithm",
71-
"sseCustomerKeyMD5",
72-
"ssekmsKeyId",
73-
"ssekmsEncryptionContext",
74-
"serverSideEncryption",
75-
"requestCharged",
76-
"responseMetadata",
77-
"sdkHttpResponse");
69+
assertThat(sdkResponse).usingRecursiveComparison().ignoringFields( "sseCustomerAlgorithm",
70+
"sseCustomerKeyMD5",
71+
"ssekmsKeyId",
72+
"ssekmsEncryptionContext",
73+
"serverSideEncryption",
74+
"requestCharged",
75+
"responseMetadata",
76+
"sdkHttpResponse").isEqualTo(crtResponse);
7877
assertThat(sdkResponse.serverSideEncryption().name()).isEqualTo(crtResponse.serverSideEncryption().name());
7978
assertThat(sdkResponse.sseCustomerAlgorithm()).isEqualTo(crtResponse.sSECustomerAlgorithm());
8079
assertThat(sdkResponse.ssekmsKeyId()).isEqualTo(crtResponse.sSEKMSKeyId());
@@ -120,11 +119,11 @@ public void fromCrtGetObjectOutput_shouldAddSdkHttpResponse() {
120119

121120

122121
GetObjectResponse getObjectResponse = S3CrtPojoConversion.fromCrtGetObjectOutput(output, response);
123-
assertThat(output).isEqualToIgnoringGivenFields(getObjectResponse, "body",
124-
"sSECustomerAlgorithm",
125-
"sSECustomerKeyMD5",
126-
"sSEKMSKeyId",
127-
"metadata");
122+
assertThat(output).usingRecursiveComparison().ignoringFields("body",
123+
"sSECustomerAlgorithm",
124+
"sSECustomerKeyMD5",
125+
"sSEKMSKeyId",
126+
"metadata").isEqualTo(getObjectResponse);
128127

129128
assertThat(getObjectResponse.sdkHttpResponse()).isEqualTo(response);
130129
assertThat(getObjectResponse.responseMetadata().requestId()).isEqualTo(expectedRequestId);
@@ -137,20 +136,19 @@ public void fromCrtGetObjectOutputAllFields_shouldConvert() throws IllegalAccess
137136
GetObjectResponse sdkResponse = S3CrtPojoConversion.fromCrtGetObjectOutput(crtResponse, SdkHttpResponse.builder().build());
138137

139138
// ignoring fields with different casings and enum fields.
140-
assertThat(sdkResponse).isEqualToIgnoringGivenFields(crtResponse,
141-
"sseCustomerAlgorithm",
142-
"body",
143-
"sseCustomerKeyMD5",
144-
"ssekmsKeyId",
145-
"ssekmsEncryptionContext",
146-
"serverSideEncryption",
147-
"responseMetadata",
148-
"sdkHttpResponse",
149-
"storageClass",
150-
"requestCharged",
151-
"replicationStatus",
152-
"objectLockMode",
153-
"objectLockLegalHoldStatus");
139+
assertThat(sdkResponse).usingRecursiveComparison().ignoringFields("sseCustomerAlgorithm",
140+
"body",
141+
"sseCustomerKeyMD5",
142+
"ssekmsKeyId",
143+
"ssekmsEncryptionContext",
144+
"serverSideEncryption",
145+
"responseMetadata",
146+
"sdkHttpResponse",
147+
"storageClass",
148+
"requestCharged",
149+
"replicationStatus",
150+
"objectLockMode",
151+
"objectLockLegalHoldStatus").isEqualTo(crtResponse);
154152
assertThat(sdkResponse.serverSideEncryption().name()).isEqualTo(crtResponse.serverSideEncryption().name());
155153
assertThat(sdkResponse.sseCustomerAlgorithm()).isEqualTo(crtResponse.sSECustomerAlgorithm());
156154
assertThat(sdkResponse.ssekmsKeyId()).isEqualTo(crtResponse.sSEKMSKeyId());
@@ -182,16 +180,15 @@ public void toCrtPutObjectRequestAllFields_shouldConvert() {
182180
com.amazonaws.s3.model.PutObjectRequest crtRequest = S3CrtPojoConversion.toCrtPutObjectRequest(sdkRequest);
183181

184182
// ignoring fields with different casings and enum fields.
185-
assertThat(crtRequest).isEqualToIgnoringGivenFields(sdkRequest,
186-
"aCL", "body", "sSECustomerAlgorithm",
187-
"sSECustomerKey", "sSECustomerKeyMD5",
188-
"sSEKMSKeyId", "sSEKMSEncryptionContext",
189-
"customHeaders", "customQueryParameters",
190-
"serverSideEncryption",
191-
"storageClass",
192-
"requestPayer",
193-
"objectLockMode",
194-
"objectLockLegalHoldStatus");
183+
assertThat(crtRequest).usingRecursiveComparison().ignoringFields("aCL", "body", "sSECustomerAlgorithm",
184+
"sSECustomerKey", "sSECustomerKeyMD5",
185+
"sSEKMSKeyId", "sSEKMSEncryptionContext",
186+
"customHeaders", "customQueryParameters",
187+
"serverSideEncryption",
188+
"storageClass",
189+
"requestPayer",
190+
"objectLockMode",
191+
"objectLockLegalHoldStatus").isEqualTo(sdkRequest);
195192
assertThat(crtRequest.aCL().name()).isEqualTo(sdkRequest.acl().name());
196193
assertThat(crtRequest.serverSideEncryption().name()).isEqualTo(sdkRequest.serverSideEncryption().name());
197194
assertThat(crtRequest.storageClass().name()).isEqualTo(sdkRequest.storageClass().name());
@@ -219,7 +216,7 @@ public void toCrtPutObjectRequest_withCustomHeaders_shouldAttach() {
219216
com.amazonaws.s3.model.PutObjectRequest crtRequest = S3CrtPojoConversion.toCrtPutObjectRequest(sdkRequest);
220217
HttpHeader[] headers = crtRequest.customHeaders();
221218
verifyHeaders(headers);
222-
assertThat(crtRequest.customQueryParameters()).isEqualTo("?hello1=world1&hello2=world2");
219+
assertThat(crtRequest.customQueryParameters()).isEqualTo("hello1=world1&hello2=world2");
223220
}
224221

225222
@Test
@@ -240,10 +237,10 @@ public void toCrtGetObjectRequestAllFields_shouldConvert() {
240237
com.amazonaws.s3.model.GetObjectRequest crtRequest = S3CrtPojoConversion.toCrtGetObjectRequest(sdkRequest);
241238

242239
// ignoring fields with different casings and enum fields.
243-
assertThat(crtRequest).isEqualToIgnoringGivenFields(sdkRequest, "body", "sSECustomerAlgorithm",
244-
"sSECustomerKey", "sSECustomerKeyMD5",
245-
"customHeaders", "customQueryParameters",
246-
"requestPayer");
240+
assertThat(crtRequest).usingRecursiveComparison().ignoringFields("body", "sSECustomerAlgorithm",
241+
"sSECustomerKey", "sSECustomerKeyMD5",
242+
"customHeaders", "customQueryParameters",
243+
"requestPayer").isEqualTo(sdkRequest);
247244
assertThat(crtRequest.requestPayer().name()).isEqualTo(sdkRequest.requestPayer().name());
248245
assertThat(crtRequest.sSECustomerAlgorithm()).isEqualTo(sdkRequest.sseCustomerAlgorithm());
249246
assertThat(crtRequest.sSECustomerKey()).isEqualTo(sdkRequest.sseCustomerKey());
@@ -263,7 +260,7 @@ public void toCrtGetObjectRequest_withCustomHeaders_shouldAttach() {
263260

264261
HttpHeader[] headers = crtRequest.customHeaders();
265262
verifyHeaders(headers);
266-
assertThat(crtRequest.customQueryParameters()).isEqualTo("?hello1=world1&hello2=world2");
263+
assertThat(crtRequest.customQueryParameters()).isEqualTo("hello1=world1&hello2=world2");
267264
}
268265

269266
@Test

0 commit comments

Comments
 (0)