diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/AwsS3IntegrationTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/AwsS3IntegrationTests.java index 40566c00..7317cb2f 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/AwsS3IntegrationTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/AwsS3IntegrationTests.java @@ -18,6 +18,9 @@ package org.springframework.cloud.config.server; import java.io.IOException; +import com.amazonaws.auth.AWSCredentialsProvider; +import com.amazonaws.auth.AWSStaticCredentialsProvider; +import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.client.builder.AwsClientBuilder; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; @@ -36,6 +39,8 @@ import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.cloud.config.environment.Environment; import org.springframework.cloud.config.server.test.TestConfigServerApplication; import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.util.SocketUtils; import org.springframework.web.client.RestTemplate; @@ -55,14 +60,14 @@ public class AwsS3IntegrationTests { @Container static LocalStackContainer localstack = new LocalStackContainer( - DockerImageName.parse("localstack/localstack:1.3.1")).withServices(LocalStackContainer.Service.S3) - .withReuse(true); + DockerImageName.parse("localstack/localstack:1.3.1")).withServices(LocalStackContainer.Service.S3); @BeforeAll public static void startConfigServer() throws IOException, InterruptedException, JSONException { server = SpringApplication.run( - new Class[] { TestConfigServerApplication.class, ContextResourceLoaderConfiguration.class }, + new Class[] { TestConfigServerApplication.class, ContextResourceLoaderConfiguration.class, CredentialsProvider.class }, new String[] { "--spring.config.name=server", "--spring.profiles.active=awss3", + "--spring.main.allow-bean-definition-overriding=true", "--server.port=" + configServerPort, "--spring.cloud.config.server.awss3.endpoint=" + localstack.getEndpointOverride(LocalStackContainer.Service.S3).toString(), @@ -70,8 +75,6 @@ public class AwsS3IntegrationTests { "--spring.cloud.config.server.awss3.region=" + localstack.getRegion(), "--cloud.aws.s3.endpoint=" + localstack.getEndpointOverride(LocalStackContainer.Service.S3).toString(), - "--cloud.aws.credentials.access-key=" + localstack.getAccessKey(), - "--cloud.aws.credentials.secret-key=" + localstack.getSecretKey(), "--cloud.aws.region.static=" + localstack.getRegion() }); AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard(); @@ -102,5 +105,14 @@ public class AwsS3IntegrationTests { public static void after() { server.close(); } + @Configuration + static class CredentialsProvider { + + //Override the bean from spring cloud aws to provide our own credentials for localstack + @Bean("io.awspring.cloud.core.credentials.CredentialsProviderFactoryBean.BEAN_NAME") + public AWSCredentialsProvider provider() { + return new AWSStaticCredentialsProvider(new BasicAWSCredentials(localstack.getAccessKey(), localstack.getSecretKey())); + } + } }