Skip to content

Commit d121a82

Browse files
edited javadocs, added invalidurl test
1 parent 43e9f6d commit d121a82

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/presignedurl/DefaultPresignedUrlManager.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,7 @@ public DefaultPresignedUrlManager(SyncClientHandler clientHandler,
6767
this.clientConfiguration = clientConfiguration;
6868
this.protocolMetadata = protocolMetadata;
6969
}
70-
71-
/**
72-
* Downloads an S3 object using a presigned URL.
73-
*/
70+
7471
@Override
7572
public <ReturnT> ReturnT getObject(PresignedUrlGetObjectRequest presignedUrlGetObjectRequest,
7673
ResponseTransformer<GetObjectResponse, ReturnT> responseTransformer)

services/s3/src/test/java/software/amazon/awssdk/services/s3/internal/presignedurl/DefaultPresignedUrlManagerTest.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.junit.jupiter.params.provider.MethodSource;
3232
import org.mockito.ArgumentCaptor;
3333
import software.amazon.awssdk.awscore.retry.AwsRetryStrategy;
34+
import software.amazon.awssdk.core.exception.SdkClientException;
3435
import software.amazon.awssdk.metrics.MetricCollection;
3536
import software.amazon.awssdk.metrics.MetricPublisher;
3637
import software.amazon.awssdk.core.metrics.CoreMetric;
@@ -208,6 +209,23 @@ private static Stream<Arguments> additionalTestCases() {
208209
);
209210
}
210211

212+
private static Stream<Arguments> invalidUrlTestCases() {
213+
return Stream.of(
214+
Arguments.of(
215+
"URL with spaces in path",
216+
"https://test-bucket.s3.us-east-1.amazonaws.com/test key with spaces"
217+
),
218+
Arguments.of(
219+
"URL with invalid characters",
220+
"https://test-bucket.s3.us-east-1.amazonaws.com/test<>key"
221+
),
222+
Arguments.of(
223+
"Malformed URL",
224+
"not-a-valid-url"
225+
)
226+
);
227+
}
228+
211229
@ParameterizedTest(name = "{0}")
212230
@MethodSource("additionalTestCases")
213231
void given_PresignedUrlManager_when_ExecutingDifferentScenarios_then_ShouldBehaveCorrectly(String testName,
@@ -256,6 +274,21 @@ void given_PresignedUrlManager_when_ExecutingDifferentScenarios_then_ShouldBehav
256274
}
257275
}
258276

277+
@ParameterizedTest(name = "{0}")
278+
@MethodSource("invalidUrlTestCases")
279+
void given_PresignedUrlManager_when_GetObjectWithInvalidUrl_then_ShouldThrowException(String testName, String invalidUrlString) {
280+
assertThatThrownBy(() -> {
281+
URL invalidUrl = new URL(invalidUrlString);
282+
PresignedUrlGetObjectRequest invalidRequest = PresignedUrlGetObjectRequest.builder()
283+
.presignedUrl(invalidUrl)
284+
.build();
285+
presignedUrlManager.getObject(invalidRequest, ResponseTransformer.toInputStream());
286+
}).satisfiesAnyOf(
287+
ex -> assertThat(ex).isInstanceOf(java.net.MalformedURLException.class),
288+
ex -> assertThat(ex).isInstanceOf(SdkClientException.class)
289+
);
290+
}
291+
259292
private SdkClientConfiguration getDefaultSdkConfigs() {
260293
return SdkClientConfiguration.builder()
261294
.option(SdkClientOption.SYNC_HTTP_CLIENT, mockHttpClient)

0 commit comments

Comments
 (0)