Skip to content

Commit 7f9af92

Browse files
author
Ryan Baxter
authored
Reenable AwsIntegrationTest On Main (#2227)
1 parent 0a36367 commit 7f9af92

File tree

3 files changed

+39
-5
lines changed

3 files changed

+39
-5
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<google-api-services-iam.version>v1-rev20201112-1.30.10</google-api-services-iam.version>
3333
<testcontainers.version>1.17.3</testcontainers.version>
3434
<wiremock.version>2.31.0</wiremock.version>
35-
<spring-cloud-aws.version>3.0.0-RC2</spring-cloud-aws.version><!-- @releaser:version-check-off -->
35+
<spring-cloud-aws.version>3.0.0</spring-cloud-aws.version>
3636
<maven-checkstyle-plugin.failsOnError>true</maven-checkstyle-plugin.failsOnError>
3737
<maven-checkstyle-plugin.failsOnViolation>true
3838
</maven-checkstyle-plugin.failsOnViolation>

spring-cloud-config-server/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,11 @@
233233
<artifactId>zipkin-sender-urlconnection</artifactId>
234234
<scope>test</scope>
235235
</dependency>
236+
<dependency>
237+
<groupId>io.awspring.cloud</groupId>
238+
<artifactId>spring-cloud-aws-s3</artifactId>
239+
<scope>test</scope>
240+
</dependency>
236241
</dependencies>
237242

238243
<properties>

spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/AwsS3IntegrationTests.java

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,13 @@
1717
package org.springframework.cloud.config.server;
1818

1919
import java.io.IOException;
20+
import java.util.Optional;
2021

22+
import io.awspring.cloud.s3.InMemoryBufferingS3OutputStreamProvider;
23+
import io.awspring.cloud.s3.PropertiesS3ObjectContentTypeResolver;
24+
import io.awspring.cloud.s3.S3ObjectContentTypeResolver;
25+
import io.awspring.cloud.s3.S3OutputStreamProvider;
26+
import io.awspring.cloud.s3.S3ProtocolResolver;
2127
import org.json.JSONException;
2228
import org.junit.jupiter.api.AfterAll;
2329
import org.junit.jupiter.api.BeforeAll;
@@ -27,14 +33,18 @@
2733
import org.testcontainers.junit.jupiter.Container;
2834
import org.testcontainers.junit.jupiter.Testcontainers;
2935
import org.testcontainers.utility.DockerImageName;
36+
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
3037
import software.amazon.awssdk.core.sync.RequestBody;
38+
import software.amazon.awssdk.regions.Region;
3139
import software.amazon.awssdk.services.s3.S3Client;
3240

3341
import org.springframework.boot.SpringApplication;
3442
import org.springframework.boot.web.client.RestTemplateBuilder;
3543
import org.springframework.cloud.config.environment.Environment;
3644
import org.springframework.cloud.config.server.test.TestConfigServerApplication;
3745
import org.springframework.context.ConfigurableApplicationContext;
46+
import org.springframework.context.annotation.Bean;
47+
import org.springframework.context.annotation.Import;
3848
import org.springframework.test.util.TestSocketUtils;
3949
import org.springframework.web.client.RestTemplate;
4050

@@ -58,7 +68,7 @@ public class AwsS3IntegrationTests {
5868

5969
@BeforeAll
6070
public static void startConfigServer() throws IOException, InterruptedException, JSONException {
61-
server = SpringApplication.run(new Class[] { TestConfigServerApplication.class },
71+
server = SpringApplication.run(new Class[] { TestConfigServerApplication.class, S3AutoConfiguration.class },
6272
new String[] { "--spring.config.name=server", "--spring.profiles.active=awss3",
6373
"--server.port=" + configServerPort,
6474
"--spring.cloud.config.server.awss3.endpoint="
@@ -71,7 +81,7 @@ public static void startConfigServer() throws IOException, InterruptedException,
7181
"--spring.cloud.aws.credentials.secret-key=" + localstack.getSecretKey(),
7282
"--spring.cloud.aws.region.static=" + localstack.getRegion() });
7383

74-
if (server.containsBean(S3Client.class.getName())) {
84+
if (server.getBeanNamesForType(S3Client.class).length > 0) {
7585
s3Client = server.getBean(S3Client.class);
7686
s3Client.createBucket((request) -> request.bucket("test-bucket"));
7787
s3Client.putObject((request) -> request.bucket("test-bucket").key("data.txt"),
@@ -86,8 +96,6 @@ public static void startConfigServer() throws IOException, InterruptedException,
8696

8797
@Test
8898
@Disabled
89-
// TODO uncomment when we have an RC or GA release of Spring Cloud AWS with this fix
90-
// https://github.com/awspring/spring-cloud-aws/pull/652
9199
public void context() throws IOException {
92100
RestTemplate rest = new RestTemplateBuilder().build();
93101
String configServerUrl = "http://localhost:" + configServerPort;
@@ -104,4 +112,25 @@ public static void after() {
104112
server.close();
105113
}
106114

115+
@Import(S3ProtocolResolver.class)
116+
static class S3AutoConfiguration {
117+
118+
@Bean
119+
S3Client s3Client() {
120+
return S3Client.builder()
121+
.credentialsProvider(
122+
() -> AwsBasicCredentials.create(localstack.getAccessKey(), localstack.getSecretKey()))
123+
.region(Region.of(localstack.getRegion()))
124+
.endpointOverride(localstack.getEndpointOverride(LocalStackContainer.Service.S3)).build();
125+
}
126+
127+
@Bean
128+
S3OutputStreamProvider inMemoryBufferingS3StreamProvider(S3Client s3Client,
129+
Optional<S3ObjectContentTypeResolver> contentTypeResolver) {
130+
return new InMemoryBufferingS3OutputStreamProvider(s3Client,
131+
contentTypeResolver.orElseGet(PropertiesS3ObjectContentTypeResolver::new));
132+
}
133+
134+
}
135+
107136
}

0 commit comments

Comments
 (0)