Skip to content

Commit 9149cae

Browse files
committed
Add tests
1 parent 2a9e976 commit 9149cae

7 files changed

Lines changed: 56 additions & 10 deletions

File tree

codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/EndpointRulesSpecUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public ClassName endpointResolverUtilsName() {
100100
}
101101

102102
public ClassName sharedAwsEndpointProviderUtilsName() {
103-
return ClassName.get("software.amazon.awssdk.awscore.internal.endpoints", "AwsEndpointProviderUtils");
103+
return ClassName.get("software.amazon.awssdk.awscore.endpoints", "AwsEndpointProviderUtils");
104104
}
105105

106106
public ClassName requestModifierInterceptorName() {

core/aws-core/src/main/java/software/amazon/awssdk/awscore/internal/endpoints/AwsEndpointProviderUtils.java renamed to core/aws-core/src/main/java/software/amazon/awssdk/awscore/endpoints/AwsEndpointProviderUtils.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.awscore.internal.endpoints;
16+
package software.amazon.awssdk.awscore.endpoints;
1717

1818
import static software.amazon.awssdk.utils.FunctionalUtils.invokeSafely;
1919

2020
import java.net.URI;
21-
import software.amazon.awssdk.annotations.SdkInternalApi;
21+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2222
import software.amazon.awssdk.awscore.AwsExecutionAttribute;
2323
import software.amazon.awssdk.core.interceptor.ExecutionAttributes;
2424
import software.amazon.awssdk.core.interceptor.SdkInternalExecutionAttribute;
@@ -34,7 +34,7 @@
3434
* Shared utility methods for endpoint resolution across all AWS services.
3535
* Previously this was generated per-service as an identical copy; now de-duplicated here.
3636
*/
37-
@SdkInternalApi
37+
@SdkProtectedApi
3838
public final class AwsEndpointProviderUtils {
3939

4040
private AwsEndpointProviderUtils() {

core/aws-core/src/test/java/software/amazon/awssdk/awscore/internal/endpoints/AwsEndpointProviderUtilsTest.java renamed to core/aws-core/src/test/java/software/amazon/awssdk/awscore/endpoints/AwsEndpointProviderUtilsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.awscore.internal.endpoints;
16+
package software.amazon.awssdk.awscore.endpoints;
1717

1818
import static org.assertj.core.api.Assertions.assertThat;
1919
import static org.assertj.core.api.Assertions.assertThatThrownBy;

core/sdk-core/src/test/java/software/amazon/awssdk/core/internal/http/pipeline/stages/EndpointResolutionStageTest.java

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121

2222
import java.net.URI;
2323
import java.time.Duration;
24-
import java.util.List;
25-
import java.util.Map;
2624
import org.junit.jupiter.api.BeforeEach;
2725
import org.junit.jupiter.api.Test;
2826
import org.mockito.ArgumentCaptor;
@@ -189,6 +187,54 @@ void execute_resolverReceivesRequestFromInterceptorContext() throws Exception {
189187
assertThat(capturedRequest[0]).isSameAs(modifiedRequest);
190188
}
191189

190+
@Test
191+
void execute_interceptorModifiedHost_preservesCustomHostAndScheme() throws Exception {
192+
Endpoint endpoint = Endpoint.builder().url(URI.create("https://resolved.amazonaws.com")).build();
193+
SdkHttpFullRequest.Builder request = SdkHttpFullRequest.builder()
194+
.method(SdkHttpMethod.GET)
195+
.protocol("http")
196+
.host("custom.example.com")
197+
.port(8080)
198+
.encodedPath("/my-operation");
199+
executionAttributes.putAttribute(SdkInternalExecutionAttribute.HTTP_REQUEST_URI_BEFORE_MODIFY,
200+
URI.create("https://myservice.amazonaws.com/my-operation"));
201+
executionAttributes.putAttribute(SdkInternalExecutionAttribute.ENDPOINT_RESOLVER, (req, attrs) -> endpoint);
202+
executionAttributes.putAttribute(SdkInternalExecutionAttribute.CLIENT_ENDPOINT_PROVIDER,
203+
ClientEndpointProvider.forEndpointOverride(CLIENT_ENDPOINT));
204+
RequestExecutionContext context = createContext();
205+
206+
SdkHttpFullRequest.Builder result = stage.execute(request, context);
207+
208+
assertThat(result.host()).isEqualTo("custom.example.com");
209+
assertThat(result.protocol()).isEqualTo("http");
210+
assertThat(result.port()).isEqualTo(8080);
211+
}
212+
213+
@Test
214+
void execute_interceptorModifiedHost_stillAppliesResolvedPath() throws Exception {
215+
URI clientEndpoint = URI.create("https://s3.us-west-2.amazonaws.com");
216+
URI resolvedUri = URI.create("https://s3.us-west-2.amazonaws.com/my-bucket");
217+
218+
Endpoint endpoint = Endpoint.builder().url(resolvedUri).build();
219+
SdkHttpFullRequest.Builder request = SdkHttpFullRequest.builder()
220+
.method(SdkHttpMethod.GET)
221+
.protocol("https")
222+
.host("example.com")
223+
.encodedPath("/my-key");
224+
225+
executionAttributes.putAttribute(SdkInternalExecutionAttribute.HTTP_REQUEST_URI_BEFORE_MODIFY,
226+
URI.create("https://s3.us-west-2.amazonaws.com/my-key"));
227+
executionAttributes.putAttribute(SdkInternalExecutionAttribute.ENDPOINT_RESOLVER, (req, attrs) -> endpoint);
228+
executionAttributes.putAttribute(SdkInternalExecutionAttribute.CLIENT_ENDPOINT_PROVIDER,
229+
ClientEndpointProvider.forEndpointOverride(clientEndpoint));
230+
RequestExecutionContext context = createContext();
231+
232+
SdkHttpFullRequest.Builder result = stage.execute(request, context);
233+
234+
assertThat(result.host()).isEqualTo("example.com");
235+
assertThat(result.encodedPath()).isEqualTo("/my-bucket/my-key");
236+
}
237+
192238
private SdkHttpFullRequest.Builder defaultRequest() {
193239
return SdkHttpFullRequest.builder()
194240
.method(SdkHttpMethod.GET)

services/dynamodb/src/test/java/software/amazon/awssdk/services/dynamodb/PaginatorInUserAgentTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import software.amazon.awssdk.core.useragent.BusinessMetricCollection;
4040
import software.amazon.awssdk.core.useragent.BusinessMetricFeatureId;
4141
import software.amazon.awssdk.regions.Region;
42-
import software.amazon.awssdk.awscore.internal.endpoints.AwsEndpointProviderUtils;
42+
import software.amazon.awssdk.awscore.endpoints.AwsEndpointProviderUtils;
4343
import software.amazon.awssdk.services.dynamodb.paginators.QueryPublisher;
4444

4545
public class PaginatorInUserAgentTest {

services/s3/src/main/java/software/amazon/awssdk/services/s3/S3Utilities.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import software.amazon.awssdk.awscore.endpoint.DualstackEnabledProvider;
4040
import software.amazon.awssdk.awscore.endpoint.FipsEnabledProvider;
4141
import software.amazon.awssdk.awscore.internal.defaultsmode.DefaultsModeConfiguration;
42-
import software.amazon.awssdk.awscore.internal.endpoints.AwsEndpointProviderUtils;
42+
import software.amazon.awssdk.awscore.endpoints.AwsEndpointProviderUtils;
4343
import software.amazon.awssdk.core.ClientEndpointProvider;
4444
import software.amazon.awssdk.core.ClientType;
4545
import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration;

services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/signing/DefaultS3Presigner.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
import software.amazon.awssdk.awscore.endpoints.authscheme.EndpointAuthScheme;
4848
import software.amazon.awssdk.awscore.internal.AwsExecutionContextBuilder;
4949
import software.amazon.awssdk.awscore.internal.defaultsmode.DefaultsModeConfiguration;
50-
import software.amazon.awssdk.awscore.internal.endpoints.AwsEndpointProviderUtils;
50+
import software.amazon.awssdk.awscore.endpoints.AwsEndpointProviderUtils;
5151
import software.amazon.awssdk.awscore.presigner.PresignRequest;
5252
import software.amazon.awssdk.awscore.presigner.PresignedRequest;
5353
import software.amazon.awssdk.core.ClientEndpointProvider;

0 commit comments

Comments
 (0)