diff --git a/elasticsearch/example/src/test/java/example/springdata/elasticsearch/conference/ElasticsearchOperationsTest.java b/elasticsearch/example/src/test/java/example/springdata/elasticsearch/conference/ElasticsearchOperationsTest.java index 70e518a1..a1dac2ba 100644 --- a/elasticsearch/example/src/test/java/example/springdata/elasticsearch/conference/ElasticsearchOperationsTest.java +++ b/elasticsearch/example/src/test/java/example/springdata/elasticsearch/conference/ElasticsearchOperationsTest.java @@ -21,17 +21,17 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import org.junit.jupiter.api.Test; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.elasticsearch.client.ClientConfiguration; +import org.springframework.data.elasticsearch.client.elc.ElasticsearchConfiguration; import org.springframework.data.elasticsearch.core.ElasticsearchOperations; import org.springframework.data.elasticsearch.core.geo.GeoPoint; import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; import org.springframework.data.elasticsearch.core.query.Criteria; import org.springframework.data.elasticsearch.core.query.CriteriaQuery; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; - +import org.springframework.util.Assert; import org.testcontainers.elasticsearch.ElasticsearchContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -44,24 +44,31 @@ import org.testcontainers.utility.DockerImageName; * @author Oliver Gierke * @author Christoph Strobl * @author Prakhar Gupta + * @author Peter-Josef Meisch */ -@SpringBootTest(classes = ApplicationConfiguration.class) +@SpringBootTest(classes = { ApplicationConfiguration.class, ElasticsearchOperationsTest.TestConfiguration.class }) @Testcontainers class ElasticsearchOperationsTest { private static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - @Container // private static ElasticsearchContainer container = new ElasticsearchContainer( - DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch:7.17.2")) // - .withPassword("foobar") // - .withReuse(true); + DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch:8.7.0")) // + .withPassword("foobar") // + .withReuse(true); - @DynamicPropertySource - static void setProperties(DynamicPropertyRegistry registry) { - registry.add("spring.elasticsearch.uris", () -> "http://" + container.getHttpHostAddress()); - registry.add("spring.elasticsearch.username", () -> "elastic"); - registry.add("spring.elasticsearch.password", () -> "foobar"); + @Configuration + static class TestConfiguration extends ElasticsearchConfiguration { + @Override + public ClientConfiguration clientConfiguration() { + + Assert.notNull(container, "TestContainer is not initialized!"); + + return ClientConfiguration.builder() // + .connectedTo(container.getHttpHostAddress()).usingSsl(container.createSslContextFromCa()) // + .withBasicAuth("elastic", "foobar") // + .build(); + } } @Autowired ElasticsearchOperations operations; diff --git a/elasticsearch/reactive/src/test/java/example/springdata/elasticsearch/conference/ReactiveElasticsearchOperationsTest.java b/elasticsearch/reactive/src/test/java/example/springdata/elasticsearch/conference/ReactiveElasticsearchOperationsTest.java index 1deabe3f..b5b83a5c 100644 --- a/elasticsearch/reactive/src/test/java/example/springdata/elasticsearch/conference/ReactiveElasticsearchOperationsTest.java +++ b/elasticsearch/reactive/src/test/java/example/springdata/elasticsearch/conference/ReactiveElasticsearchOperationsTest.java @@ -23,16 +23,16 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import org.junit.jupiter.api.Test; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.elasticsearch.client.ClientConfiguration; +import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchConfiguration; import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations; import org.springframework.data.elasticsearch.core.SearchHit; import org.springframework.data.elasticsearch.core.query.Criteria; import org.springframework.data.elasticsearch.core.query.CriteriaQuery; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; - +import org.springframework.util.Assert; import org.testcontainers.elasticsearch.ElasticsearchContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -43,8 +43,10 @@ import org.testcontainers.utility.DockerImageName; * * @author Christoph Strobl * @author Prakhar Gupta + * @author Peter-Josef Meisch */ -@SpringBootTest(classes = ApplicationConfiguration.class) +@SpringBootTest( + classes = { ApplicationConfiguration.class, ReactiveElasticsearchOperationsTest.TestConfiguration.class }) @Testcontainers class ReactiveElasticsearchOperationsTest { @@ -52,15 +54,22 @@ class ReactiveElasticsearchOperationsTest { @Container // private static ElasticsearchContainer container = new ElasticsearchContainer( - DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch:7.17.2")) // - .withPassword("foobar") // - .withReuse(true); + DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch:8.7.0")) // + .withPassword("foobar") // + .withReuse(true); - @DynamicPropertySource - static void setProperties(DynamicPropertyRegistry registry) { - registry.add("spring.elasticsearch.uris", () -> "http://" + container.getHttpHostAddress()); - registry.add("spring.elasticsearch.username", () -> "elastic"); - registry.add("spring.elasticsearch.password", () -> "foobar"); + @Configuration + static class TestConfiguration extends ReactiveElasticsearchConfiguration { + @Override + public ClientConfiguration clientConfiguration() { + + Assert.notNull(container, "TestContainer is not initialized!"); + + return ClientConfiguration.builder() // + .connectedTo(container.getHttpHostAddress()).usingSsl(container.createSslContextFromCa()) // + .withBasicAuth("elastic", "foobar") // + .build(); + } } @Autowired ReactiveElasticsearchOperations operations; diff --git a/elasticsearch/reactive/src/test/java/example/springdata/elasticsearch/conference/ReactiveElasticsearchRepositoryTest.java b/elasticsearch/reactive/src/test/java/example/springdata/elasticsearch/conference/ReactiveElasticsearchRepositoryTest.java index 7f6db008..afa4a6fe 100644 --- a/elasticsearch/reactive/src/test/java/example/springdata/elasticsearch/conference/ReactiveElasticsearchRepositoryTest.java +++ b/elasticsearch/reactive/src/test/java/example/springdata/elasticsearch/conference/ReactiveElasticsearchRepositoryTest.java @@ -23,12 +23,12 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import org.junit.jupiter.api.Test; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.DynamicPropertyRegistry; -import org.springframework.test.context.DynamicPropertySource; - +import org.springframework.context.annotation.Configuration; +import org.springframework.data.elasticsearch.client.ClientConfiguration; +import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchConfiguration; +import org.springframework.util.Assert; import org.testcontainers.elasticsearch.ElasticsearchContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; @@ -39,8 +39,10 @@ import org.testcontainers.utility.DockerImageName; * * @author Christoph Strobl * @author Prakhar Gupta + * @author Peter-Josef Meisch */ -@SpringBootTest(classes = ApplicationConfiguration.class) +@SpringBootTest( + classes = { ApplicationConfiguration.class, ReactiveElasticsearchRepositoryTest.TestConfiguration.class }) @Testcontainers class ReactiveElasticsearchRepositoryTest { @@ -48,15 +50,22 @@ class ReactiveElasticsearchRepositoryTest { @Container // private static ElasticsearchContainer container = new ElasticsearchContainer( - DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch:7.17.2")) // - .withPassword("foobar") // - .withReuse(true); + DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch:8.7.0")) // + .withPassword("foobar") // + .withReuse(true); - @DynamicPropertySource - static void setProperties(DynamicPropertyRegistry registry) { - registry.add("spring.elasticsearch.uris", () -> "http://" + container.getHttpHostAddress()); - registry.add("spring.elasticsearch.username", () -> "elastic"); - registry.add("spring.elasticsearch.password", () -> "foobar"); + @Configuration + static class TestConfiguration extends ReactiveElasticsearchConfiguration { + @Override + public ClientConfiguration clientConfiguration() { + + Assert.notNull(container, "TestContainer is not initialized!"); + + return ClientConfiguration.builder() // + .connectedTo(container.getHttpHostAddress()).usingSsl(container.createSslContextFromCa()) // + .withBasicAuth("elastic", "foobar") // + .build(); + } } @Autowired ConferenceRepository repository;