diff --git a/mongodb/aggregation/pom.xml b/mongodb/aggregation/pom.xml index 8aa7407a..40e95f73 100644 --- a/mongodb/aggregation/pom.xml +++ b/mongodb/aggregation/pom.xml @@ -14,9 +14,15 @@ - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/OrderRepositoryIntegrationTests.java b/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/OrderRepositoryIntegrationTests.java index a0ddac07..6d7d72fb 100644 --- a/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/OrderRepositoryIntegrationTests.java +++ b/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/OrderRepositoryIntegrationTests.java @@ -26,6 +26,12 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.domain.Sort; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Integration tests for {@link OrderRepository}. @@ -35,9 +41,19 @@ import org.springframework.data.domain.Sort; * @author Christoph Strobl * @author Divya Srivastava */ +@Testcontainers @SpringBootTest class OrderRepositoryIntegrationTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired OrderRepository repository; private final static LineItem product1 = new LineItem("p1", 1.23); diff --git a/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/SpringBooksIntegrationTests.java b/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/SpringBooksIntegrationTests.java index 0e77fb31..f7510405 100644 --- a/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/SpringBooksIntegrationTests.java +++ b/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/SpringBooksIntegrationTests.java @@ -37,6 +37,12 @@ import org.springframework.data.mongodb.core.aggregation.ArrayOperators; import org.springframework.data.mongodb.core.aggregation.BucketAutoOperation.Granularities; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Examples for Spring Books using the MongoDB Aggregation Framework. Data originates from Google's Book search. @@ -47,9 +53,19 @@ import org.springframework.data.mongodb.core.query.Query; * "https://www.googleapis.com/books/v1/volumes?q=intitle:spring+framework">https://www.googleapis.com/books/v1/volumes?q=intitle:spring+framework * @see - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/advanced/AdvancedIntegrationTests.java b/mongodb/example/src/test/java/example/springdata/mongodb/advanced/AdvancedIntegrationTests.java index 1778da61..c31f72ec 100644 --- a/mongodb/example/src/test/java/example/springdata/mongodb/advanced/AdvancedIntegrationTests.java +++ b/mongodb/example/src/test/java/example/springdata/mongodb/advanced/AdvancedIntegrationTests.java @@ -25,20 +25,35 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Meta; import com.mongodb.BasicDBObject; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * @author Christoph Strobl * @author Oliver Gierke */ +@Testcontainers @DataMongoTest class AdvancedIntegrationTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired AdvancedRepository repository; @Autowired MongoOperations operations; diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/advanced/ServersideScriptTests.java b/mongodb/example/src/test/java/example/springdata/mongodb/advanced/ServersideScriptTests.java index 104999f9..c11cbf44 100644 --- a/mongodb/example/src/test/java/example/springdata/mongodb/advanced/ServersideScriptTests.java +++ b/mongodb/example/src/test/java/example/springdata/mongodb/advanced/ServersideScriptTests.java @@ -28,18 +28,33 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.script.ExecutableMongoScript; import org.springframework.data.mongodb.core.script.NamedMongoScript; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * @author Christoph Strobl * @author Oliver Gierke */ +@Testcontainers @DataMongoTest class ServersideScriptTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:3.6")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired AdvancedRepository repository; @Autowired MongoOperations operations; diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/customer/CustomerRepositoryIntegrationTest.java b/mongodb/example/src/test/java/example/springdata/mongodb/customer/CustomerRepositoryIntegrationTest.java index c0f04b63..681a44de 100644 --- a/mongodb/example/src/test/java/example/springdata/mongodb/customer/CustomerRepositoryIntegrationTest.java +++ b/mongodb/example/src/test/java/example/springdata/mongodb/customer/CustomerRepositoryIntegrationTest.java @@ -31,15 +31,31 @@ import org.springframework.data.geo.Point; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.index.GeospatialIndex; import org.springframework.data.querydsl.QSort; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Integration test for {@link CustomerRepository}. * * @author Oliver Gierke */ +@Testcontainers @DataMongoTest class CustomerRepositoryIntegrationTest { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired CustomerRepository repository; @Autowired MongoOperations operations; diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/immutable/ImmutableEntityIntegrationTest.java b/mongodb/example/src/test/java/example/springdata/mongodb/immutable/ImmutableEntityIntegrationTest.java index 163ad62c..064f8c4f 100644 --- a/mongodb/example/src/test/java/example/springdata/mongodb/immutable/ImmutableEntityIntegrationTest.java +++ b/mongodb/example/src/test/java/example/springdata/mongodb/immutable/ImmutableEntityIntegrationTest.java @@ -22,8 +22,13 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.mongodb.core.MongoOperations; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Integration test for {@link ImmutablePerson} showing features around immutable object support. @@ -31,9 +36,19 @@ import org.springframework.data.mongodb.core.MongoOperations; * @author Mark Paluch * @author Christoph Strobl */ +@Testcontainers @DataMongoTest class ImmutableEntityIntegrationTest { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired MongoOperations operations; @BeforeEach diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/projections/CustomerRepositoryIntegrationTest.java b/mongodb/example/src/test/java/example/springdata/mongodb/projections/CustomerRepositoryIntegrationTest.java index e0fb3765..cf1c43cc 100644 --- a/mongodb/example/src/test/java/example/springdata/mongodb/projections/CustomerRepositoryIntegrationTest.java +++ b/mongodb/example/src/test/java/example/springdata/mongodb/projections/CustomerRepositoryIntegrationTest.java @@ -28,15 +28,31 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; import org.springframework.data.projection.TargetAware; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Integration tests for {@link CustomerRepository} to show projection capabilities. * * @author Oliver Gierke */ +@Testcontainers @DataMongoTest class CustomerRepositoryIntegrationTest { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Configuration @EnableAutoConfiguration static class Config {} diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/unwrapping/UnwrappingIntegrationTests.java b/mongodb/example/src/test/java/example/springdata/mongodb/unwrapping/UnwrappingIntegrationTests.java index 3764e65c..a5b34871 100644 --- a/mongodb/example/src/test/java/example/springdata/mongodb/unwrapping/UnwrappingIntegrationTests.java +++ b/mongodb/example/src/test/java/example/springdata/mongodb/unwrapping/UnwrappingIntegrationTests.java @@ -28,15 +28,31 @@ import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.data.mongodb.core.MongoOperations; import com.mongodb.client.model.Filters; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Integration tests showing unwrapped/embedded document usage. * * @author Christoph Strobl */ +@Testcontainers @DataMongoTest class UnwrappingIntegrationTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired UserRepository repository; @Autowired MongoOperations operations; diff --git a/mongodb/example/src/test/resources/application.properties b/mongodb/example/src/test/resources/application.properties deleted file mode 100644 index 5239185a..00000000 --- a/mongodb/example/src/test/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Random port for embedded MongoDB -spring.data.mongodb.port=0 -spring.mongodb.embedded.version=3.6.0 \ No newline at end of file diff --git a/mongodb/fluent-api/pom.xml b/mongodb/fluent-api/pom.xml index af289505..d6caf099 100644 --- a/mongodb/fluent-api/pom.xml +++ b/mongodb/fluent-api/pom.xml @@ -14,9 +14,15 @@ - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/fluent-api/src/test/java/example/springdata/mongodb/fluent/FluentMongoApiTests.java b/mongodb/fluent-api/src/test/java/example/springdata/mongodb/fluent/FluentMongoApiTests.java index 709e4dc3..23d38ec7 100644 --- a/mongodb/fluent-api/src/test/java/example/springdata/mongodb/fluent/FluentMongoApiTests.java +++ b/mongodb/fluent-api/src/test/java/example/springdata/mongodb/fluent/FluentMongoApiTests.java @@ -35,6 +35,12 @@ import org.springframework.data.mongodb.core.ExecutableFindOperation.Terminating import org.springframework.data.mongodb.core.FluentMongoOperations; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.NearQuery; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Some tests showing usage and capabilities of {@link FluentMongoOperations}.
@@ -50,9 +56,19 @@ import org.springframework.data.mongodb.core.query.NearQuery; * * @author Christoph Strobl */ +@Testcontainers @DataMongoTest class FluentMongoApiTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired FluentMongoOperations mongoOps; /** diff --git a/mongodb/fluent-api/src/test/resources/application.properties b/mongodb/fluent-api/src/test/resources/application.properties deleted file mode 100644 index 5239185a..00000000 --- a/mongodb/fluent-api/src/test/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Random port for embedded MongoDB -spring.data.mongodb.port=0 -spring.mongodb.embedded.version=3.6.0 \ No newline at end of file diff --git a/mongodb/geo-json/pom.xml b/mongodb/geo-json/pom.xml index 1edffe10..8b89326c 100644 --- a/mongodb/geo-json/pom.xml +++ b/mongodb/geo-json/pom.xml @@ -19,9 +19,15 @@ - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/geo-json/src/test/java/example/springdata/mongodb/geojson/StoreRepositoryTests.java b/mongodb/geo-json/src/test/java/example/springdata/mongodb/geojson/StoreRepositoryTests.java index 1f454ce1..6a0533dc 100644 --- a/mongodb/geo-json/src/test/java/example/springdata/mongodb/geojson/StoreRepositoryTests.java +++ b/mongodb/geo-json/src/test/java/example/springdata/mongodb/geojson/StoreRepositoryTests.java @@ -28,6 +28,12 @@ import org.springframework.data.mongodb.core.geo.GeoJson; import org.springframework.data.mongodb.core.geo.GeoJsonPolygon; import org.springframework.data.mongodb.core.query.BasicQuery; import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Integration tests for {@link StoreRepository}. @@ -35,9 +41,19 @@ import org.springframework.data.mongodb.core.query.Criteria; * @author Christoph Strobl * @author Oliver Gierke */ +@Testcontainers @DataMongoTest class StoreRepositoryTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + private static final GeoJsonPolygon GEO_JSON_POLYGON = new GeoJsonPolygon(new Point(-73.992514, 40.758934), new Point(-73.961138, 40.760348), new Point(-73.991658, 40.730006), new Point(-73.992514, 40.758934)); diff --git a/mongodb/geo-json/src/test/resources/application.properties b/mongodb/geo-json/src/test/resources/application.properties deleted file mode 100644 index 2a85020f..00000000 --- a/mongodb/geo-json/src/test/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Random port for embedded MongoDB -spring.data.mongodb.port=0 -spring.mongodb.embedded.version=3.6.0 diff --git a/mongodb/gridfs/pom.xml b/mongodb/gridfs/pom.xml index f858b46d..a3cdd6b8 100644 --- a/mongodb/gridfs/pom.xml +++ b/mongodb/gridfs/pom.xml @@ -14,9 +14,15 @@ - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/gridfs/src/test/java/example/springdata/mongodb/gridfs/GridFsTests.java b/mongodb/gridfs/src/test/java/example/springdata/mongodb/gridfs/GridFsTests.java index aeca5f94..b8319c15 100644 --- a/mongodb/gridfs/src/test/java/example/springdata/mongodb/gridfs/GridFsTests.java +++ b/mongodb/gridfs/src/test/java/example/springdata/mongodb/gridfs/GridFsTests.java @@ -32,7 +32,13 @@ import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.core.io.ClassPathResource; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.gridfs.GridFsOperations; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; import org.springframework.util.StreamUtils; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Tests to show the usage of {@link GridFsOperations} with Spring Data MongoDB. @@ -40,9 +46,19 @@ import org.springframework.util.StreamUtils; * @author Hartmut Lang * @author Mark Paluch */ +@Testcontainers @DataMongoTest class GridFsTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired GridFsOperations gridFsOperations; @BeforeEach diff --git a/mongodb/gridfs/src/test/resources/application.properties b/mongodb/gridfs/src/test/resources/application.properties deleted file mode 100644 index 2a85020f..00000000 --- a/mongodb/gridfs/src/test/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Random port for embedded MongoDB -spring.data.mongodb.port=0 -spring.mongodb.embedded.version=3.6.0 diff --git a/mongodb/kotlin/pom.xml b/mongodb/kotlin/pom.xml index 528ecda7..a20c50c4 100644 --- a/mongodb/kotlin/pom.xml +++ b/mongodb/kotlin/pom.xml @@ -39,9 +39,15 @@ test - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/FlowAndCoroutinesTests.kt b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/FlowAndCoroutinesTests.kt index f8fb7106..a1e38b63 100644 --- a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/FlowAndCoroutinesTests.kt +++ b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/FlowAndCoroutinesTests.kt @@ -29,6 +29,12 @@ import org.springframework.data.mongodb.core.* import org.springframework.data.mongodb.core.query.Criteria.where import org.springframework.data.mongodb.core.query.Query import org.springframework.data.mongodb.core.query.isEqualTo +import org.springframework.test.context.DynamicPropertyRegistry +import org.springframework.test.context.DynamicPropertySource +import org.testcontainers.containers.MongoDBContainer +import org.testcontainers.junit.jupiter.Container +import org.testcontainers.junit.jupiter.Testcontainers +import org.testcontainers.utility.DockerImageName import reactor.test.StepVerifier /** @@ -36,9 +42,22 @@ import reactor.test.StepVerifier * * @author Christoph Strobl */ +@Testcontainers @DataMongoTest class FlowAndCoroutinesTests { + companion object { + @Container // + private val mongoDBContainer = MongoDBContainer( + DockerImageName.parse("mongo:5.0")) + + @JvmStatic + @DynamicPropertySource + fun setProperties(registry: DynamicPropertyRegistry) { + registry.add("spring.data.mongodb.uri") { mongoDBContainer.replicaSetUrl } + } + } + @Autowired lateinit var operations: ReactiveMongoOperations diff --git a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/MongoDslTests.kt b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/MongoDslTests.kt index b4f35d47..86f56a96 100644 --- a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/MongoDslTests.kt +++ b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/MongoDslTests.kt @@ -30,16 +30,35 @@ import org.springframework.data.mongodb.core.query.Criteria import org.springframework.data.mongodb.core.query.Query import org.springframework.data.mongodb.core.query.isEqualTo import org.springframework.data.mongodb.core.query.regex +import org.springframework.test.context.DynamicPropertyRegistry +import org.springframework.test.context.DynamicPropertySource import org.springframework.test.context.junit4.SpringRunner +import org.testcontainers.containers.MongoDBContainer +import org.testcontainers.junit.jupiter.Container +import org.testcontainers.junit.jupiter.Testcontainers +import org.testcontainers.utility.DockerImageName /** * Tests showing the Mongo Criteria DSL. * * @author Christoph Strobl */ +@Testcontainers @DataMongoTest class MongoDslTests { + companion object { + @Container // + private val mongoDBContainer = MongoDBContainer( + DockerImageName.parse("mongo:5.0")) + + @JvmStatic + @DynamicPropertySource + fun setProperties(registry: DynamicPropertyRegistry) { + registry.add("spring.data.mongodb.uri") { mongoDBContainer.replicaSetUrl } + } + } + @Autowired lateinit var operations: MongoOperations diff --git a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/RepositoryTests.kt b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/RepositoryTests.kt index e7fefdcf..ee5db181 100644 --- a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/RepositoryTests.kt +++ b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/RepositoryTests.kt @@ -22,15 +22,34 @@ import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest import org.springframework.dao.EmptyResultDataAccessException +import org.springframework.test.context.DynamicPropertyRegistry +import org.springframework.test.context.DynamicPropertySource +import org.testcontainers.containers.MongoDBContainer +import org.testcontainers.junit.jupiter.Container +import org.testcontainers.junit.jupiter.Testcontainers +import org.testcontainers.utility.DockerImageName /** * Tests showing Kotlin usage of Spring Data Repositories. * * @author Mark Paluch */ +@Testcontainers @DataMongoTest class RepositoryTests { + companion object { + @Container // + private val mongoDBContainer = MongoDBContainer( + DockerImageName.parse("mongo:5.0")) + + @JvmStatic + @DynamicPropertySource + fun setProperties(registry: DynamicPropertyRegistry) { + registry.add("spring.data.mongodb.uri") { mongoDBContainer.replicaSetUrl } + } + } + @Autowired lateinit var repository: PersonRepository diff --git a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/TemplateTests.kt b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/TemplateTests.kt index 78f65fb3..73cc2c48 100644 --- a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/TemplateTests.kt +++ b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/TemplateTests.kt @@ -25,15 +25,34 @@ import org.springframework.data.mongodb.core.* import org.springframework.data.mongodb.core.query.Criteria.where import org.springframework.data.mongodb.core.query.Query.query import org.springframework.data.mongodb.core.query.isEqualTo +import org.springframework.test.context.DynamicPropertyRegistry +import org.springframework.test.context.DynamicPropertySource +import org.testcontainers.containers.MongoDBContainer +import org.testcontainers.junit.jupiter.Container +import org.testcontainers.junit.jupiter.Testcontainers +import org.testcontainers.utility.DockerImageName /** * Tests showing Kotlin usage of [MongoTemplate] and its Kotlin extensions. * * @author Mark Paluch */ +@Testcontainers @DataMongoTest class TemplateTests { + companion object { + @Container // + private val mongoDBContainer = MongoDBContainer( + DockerImageName.parse("mongo:5.0")) + + @JvmStatic + @DynamicPropertySource + fun setProperties(registry: DynamicPropertyRegistry) { + registry.add("spring.data.mongodb.uri") { mongoDBContainer.replicaSetUrl } + } + } + @Autowired lateinit var operations: MongoOperations diff --git a/mongodb/kotlin/src/test/resources/application.properties b/mongodb/kotlin/src/test/resources/application.properties deleted file mode 100644 index 2a85020f..00000000 --- a/mongodb/kotlin/src/test/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Random port for embedded MongoDB -spring.data.mongodb.port=0 -spring.mongodb.embedded.version=3.6.0 diff --git a/mongodb/linking/pom.xml b/mongodb/linking/pom.xml index 338450de..36ca0528 100644 --- a/mongodb/linking/pom.xml +++ b/mongodb/linking/pom.xml @@ -14,9 +14,15 @@ - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/dbref/DBRefTests.java b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/dbref/DBRefTests.java index c6242800..c19f2428 100644 --- a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/dbref/DBRefTests.java +++ b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/dbref/DBRefTests.java @@ -27,13 +27,29 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Update; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * @author Christoph Strobl */ +@Testcontainers @DataMongoTest public class DBRefTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired MongoOperations operations; @Test diff --git a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/jpastyle/JpaStyleDocRefTests.java b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/jpastyle/JpaStyleDocRefTests.java index f286d658..d98c86d6 100644 --- a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/jpastyle/JpaStyleDocRefTests.java +++ b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/jpastyle/JpaStyleDocRefTests.java @@ -23,13 +23,29 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.data.mongodb.core.MongoOperations; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * @author Christoph Strobl */ +@Testcontainers @DataMongoTest public class JpaStyleDocRefTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired MongoOperations operations; /** diff --git a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/query/QueryDocRefTests.java b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/query/QueryDocRefTests.java index 67a1110d..7e14e0b5 100644 --- a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/query/QueryDocRefTests.java +++ b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/query/QueryDocRefTests.java @@ -26,13 +26,29 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Update; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * @author Christoph Strobl */ +@Testcontainers @DataMongoTest public class QueryDocRefTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired MongoOperations operations; /** diff --git a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/simple/SimpleDocRefTests.java b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/simple/SimpleDocRefTests.java index f01908dc..e1663f20 100644 --- a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/simple/SimpleDocRefTests.java +++ b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/simple/SimpleDocRefTests.java @@ -26,13 +26,29 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Update; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * @author Christoph Strobl */ +@Testcontainers @DataMongoTest public class SimpleDocRefTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired MongoOperations operations; /** diff --git a/mongodb/linking/src/test/resources/application.properties b/mongodb/linking/src/test/resources/application.properties deleted file mode 100644 index 5239185a..00000000 --- a/mongodb/linking/src/test/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Random port for embedded MongoDB -spring.data.mongodb.port=0 -spring.mongodb.embedded.version=3.6.0 \ No newline at end of file diff --git a/mongodb/query-by-example/pom.xml b/mongodb/query-by-example/pom.xml index 3aa7f79d..32db118e 100644 --- a/mongodb/query-by-example/pom.xml +++ b/mongodb/query-by-example/pom.xml @@ -13,9 +13,15 @@ - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/ContactRepositoryIntegrationTests.java b/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/ContactRepositoryIntegrationTests.java index 0941d42c..a8ec34a6 100644 --- a/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/ContactRepositoryIntegrationTests.java +++ b/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/ContactRepositoryIntegrationTests.java @@ -25,6 +25,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.data.domain.Example; import org.springframework.data.mongodb.core.MongoOperations; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Integration test showing the usage of MongoDB Query-by-Example support through Spring Data repositories for a case @@ -34,9 +40,19 @@ import org.springframework.data.mongodb.core.MongoOperations; * @author Oliver Gierke * @soundtrack Paul van Dyk - VONYC Sessions Episode 496 with guest Armin van Buuren */ +@Testcontainers @DataMongoTest class ContactRepositoryIntegrationTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired UserRepository userRepository; @Autowired ContactRepository contactRepository; @Autowired MongoOperations mongoOperations; diff --git a/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/MongoOperationsIntegrationTests.java b/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/MongoOperationsIntegrationTests.java index 884d5a08..76c9acf7 100644 --- a/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/MongoOperationsIntegrationTests.java +++ b/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/MongoOperationsIntegrationTests.java @@ -34,6 +34,12 @@ import org.springframework.data.domain.Example; import org.springframework.data.domain.ExampleMatcher.StringMatcher; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Query; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Integration test showing the usage of MongoDB Query-by-Example support through Spring Data repositories. @@ -42,9 +48,19 @@ import org.springframework.data.mongodb.core.query.Query; * @author Oliver Gierke */ @SuppressWarnings("unused") +@Testcontainers @DataMongoTest class MongoOperationsIntegrationTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired MongoOperations operations; private Person skyler, walter, flynn, marie, hank; diff --git a/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/UserRepositoryIntegrationTests.java b/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/UserRepositoryIntegrationTests.java index 2305aa99..cb4a58d5 100644 --- a/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/UserRepositoryIntegrationTests.java +++ b/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/UserRepositoryIntegrationTests.java @@ -28,6 +28,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.data.domain.Example; import org.springframework.data.domain.ExampleMatcher.*; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Integration test showing the usage of MongoDB Query-by-Example support through Spring Data repositories. @@ -37,9 +43,19 @@ import org.springframework.data.domain.ExampleMatcher.*; * @author Jens Schauder */ @SuppressWarnings("unused") +@Testcontainers @DataMongoTest class UserRepositoryIntegrationTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired UserRepository repository; private Person skyler, walter, flynn, marie, hank; diff --git a/mongodb/query-by-example/src/test/resources/application.properties b/mongodb/query-by-example/src/test/resources/application.properties deleted file mode 100644 index 2a85020f..00000000 --- a/mongodb/query-by-example/src/test/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Random port for embedded MongoDB -spring.data.mongodb.port=0 -spring.mongodb.embedded.version=3.6.0 diff --git a/mongodb/querydsl/pom.xml b/mongodb/querydsl/pom.xml index 62b15b49..7c6a6ecc 100644 --- a/mongodb/querydsl/pom.xml +++ b/mongodb/querydsl/pom.xml @@ -25,9 +25,15 @@ - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/querydsl/src/test/java/example/springdata/mongodb/imperative/CustomerRepositoryTests.java b/mongodb/querydsl/src/test/java/example/springdata/mongodb/imperative/CustomerRepositoryTests.java index 887cf8e7..aad71680 100644 --- a/mongodb/querydsl/src/test/java/example/springdata/mongodb/imperative/CustomerRepositoryTests.java +++ b/mongodb/querydsl/src/test/java/example/springdata/mongodb/imperative/CustomerRepositoryTests.java @@ -26,13 +26,29 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.data.mongodb.core.MongoOperations; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * @author Christoph Strobl */ +@Testcontainers @DataMongoTest class CustomerRepositoryTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired CustomerQuerydslRepository repository; @Autowired MongoOperations operations; diff --git a/mongodb/querydsl/src/test/java/example/springdata/mongodb/reactive/ReactiveCustomerRepositoryTests.java b/mongodb/querydsl/src/test/java/example/springdata/mongodb/reactive/ReactiveCustomerRepositoryTests.java index e5adc1e2..b37e026b 100644 --- a/mongodb/querydsl/src/test/java/example/springdata/mongodb/reactive/ReactiveCustomerRepositoryTests.java +++ b/mongodb/querydsl/src/test/java/example/springdata/mongodb/reactive/ReactiveCustomerRepositoryTests.java @@ -20,6 +20,12 @@ import static org.assertj.core.api.Assertions.*; import example.springdata.mongodb.Customer; import example.springdata.mongodb.QCustomer; import org.junit.jupiter.api.Test; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; import reactor.test.StepVerifier; import java.util.Arrays; @@ -33,9 +39,19 @@ import org.springframework.data.mongodb.core.MongoOperations; /** * @author Christoph Strobl */ +@Testcontainers @DataMongoTest class ReactiveCustomerRepositoryTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired ReactiveCustomerQuerydslRepository repository; @Autowired MongoOperations operations; diff --git a/mongodb/querydsl/src/test/resources/application.properties b/mongodb/querydsl/src/test/resources/application.properties deleted file mode 100644 index 5239185a..00000000 --- a/mongodb/querydsl/src/test/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Random port for embedded MongoDB -spring.data.mongodb.port=0 -spring.mongodb.embedded.version=3.6.0 \ No newline at end of file diff --git a/mongodb/reactive/pom.xml b/mongodb/reactive/pom.xml index 03813a35..50b775da 100644 --- a/mongodb/reactive/pom.xml +++ b/mongodb/reactive/pom.xml @@ -35,9 +35,15 @@ - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactiveMongoTemplateIntegrationTest.java b/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactiveMongoTemplateIntegrationTest.java index 530260fa..7d589f73 100644 --- a/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactiveMongoTemplateIntegrationTest.java +++ b/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactiveMongoTemplateIntegrationTest.java @@ -17,6 +17,12 @@ package example.springdata.mongodb.people; import static org.assertj.core.api.Assertions.*; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; import reactor.core.publisher.Flux; import reactor.test.StepVerifier; import rx.RxReactiveStreams; @@ -37,9 +43,19 @@ import org.springframework.data.mongodb.core.query.Query; * * @author Mark Paluch */ +@Testcontainers @DataMongoTest class ReactiveMongoTemplateIntegrationTest { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired ReactiveMongoTemplate template; @BeforeEach diff --git a/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactivePersonRepositoryIntegrationTest.java b/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactivePersonRepositoryIntegrationTest.java index 3ecc7ff4..564f87a7 100644 --- a/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactivePersonRepositoryIntegrationTest.java +++ b/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactivePersonRepositoryIntegrationTest.java @@ -17,6 +17,12 @@ package example.springdata.mongodb.people; import static org.assertj.core.api.Assertions.*; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -37,9 +43,19 @@ import org.springframework.data.mongodb.core.ReactiveMongoOperations; * * @author Mark Paluch */ +@Testcontainers @DataMongoTest class ReactivePersonRepositoryIntegrationTest { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired ReactivePersonRepository repository; @Autowired ReactiveMongoOperations operations; diff --git a/mongodb/reactive/src/test/java/example/springdata/mongodb/people/RxJava2PersonRepositoryIntegrationTest.java b/mongodb/reactive/src/test/java/example/springdata/mongodb/people/RxJava2PersonRepositoryIntegrationTest.java index b29dca01..72a22159 100644 --- a/mongodb/reactive/src/test/java/example/springdata/mongodb/people/RxJava2PersonRepositoryIntegrationTest.java +++ b/mongodb/reactive/src/test/java/example/springdata/mongodb/people/RxJava2PersonRepositoryIntegrationTest.java @@ -19,6 +19,12 @@ import static org.assertj.core.api.Assertions.*; import io.reactivex.Flowable; import io.reactivex.Single; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; @@ -42,9 +48,19 @@ import org.springframework.data.mongodb.core.ReactiveMongoOperations; * @author Jens Schauder * @author Christoph Strobl */ +@Testcontainers @DataMongoTest class RxJava2PersonRepositoryIntegrationTest { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired RxJava2PersonRepository repository; @Autowired ReactiveMongoOperations operations; diff --git a/mongodb/reactive/src/test/resources/application.properties b/mongodb/reactive/src/test/resources/application.properties deleted file mode 100644 index 2a85020f..00000000 --- a/mongodb/reactive/src/test/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Random port for embedded MongoDB -spring.data.mongodb.port=0 -spring.mongodb.embedded.version=3.6.0 diff --git a/mongodb/repository-metrics/pom.xml b/mongodb/repository-metrics/pom.xml index 2621e897..3514f645 100644 --- a/mongodb/repository-metrics/pom.xml +++ b/mongodb/repository-metrics/pom.xml @@ -28,9 +28,15 @@ - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/repository-metrics/src/main/resources/application.properties b/mongodb/repository-metrics/src/main/resources/application.properties deleted file mode 100644 index 2a85020f..00000000 --- a/mongodb/repository-metrics/src/main/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Random port for embedded MongoDB -spring.data.mongodb.port=0 -spring.mongodb.embedded.version=3.6.0 diff --git a/mongodb/repository-metrics/src/test/java/example/springdata/mongodb/DemoApplicationTests.java b/mongodb/repository-metrics/src/test/java/example/springdata/mongodb/DemoApplicationTests.java index 3a4adca9..339ab782 100644 --- a/mongodb/repository-metrics/src/test/java/example/springdata/mongodb/DemoApplicationTests.java +++ b/mongodb/repository-metrics/src/test/java/example/springdata/mongodb/DemoApplicationTests.java @@ -15,6 +15,12 @@ */ package example.springdata.mongodb; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; import reactor.test.StepVerifier; import java.time.Duration; @@ -30,9 +36,19 @@ import org.springframework.boot.test.context.SpringBootTest; * * @author Christoph Strobl */ +@Testcontainers @SpringBootTest class DemoApplicationTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired PersonRepository repo; @Test diff --git a/mongodb/schema-validation/pom.xml b/mongodb/schema-validation/pom.xml index 40006c8a..3531f59c 100644 --- a/mongodb/schema-validation/pom.xml +++ b/mongodb/schema-validation/pom.xml @@ -14,9 +14,15 @@ - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/DocumentValidationTests.java b/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/DocumentValidationTests.java index 8d7c36d3..dc7076d2 100644 --- a/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/DocumentValidationTests.java +++ b/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/DocumentValidationTests.java @@ -29,13 +29,29 @@ import org.springframework.data.mongodb.core.CollectionOptions; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.schema.MongoJsonSchema; import org.springframework.data.mongodb.core.validation.Validator; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * @author Christoph Strobl */ +@Testcontainers @DataMongoTest class DocumentValidationTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + private static final String COLLECTION = "star-wars"; @Autowired MongoOperations mongoOps; diff --git a/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/SchemaQueryTests.java b/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/SchemaQueryTests.java index 345b060a..28c40cfa 100644 --- a/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/SchemaQueryTests.java +++ b/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/SchemaQueryTests.java @@ -27,13 +27,29 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.schema.MongoJsonSchema; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * @author Christoph Strobl */ +@Testcontainers @DataMongoTest class SchemaQueryTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + private static final String COLLECTION = "star-wars"; @Autowired MongoOperations mongoOps; diff --git a/mongodb/schema-validation/src/test/resources/application.properties b/mongodb/schema-validation/src/test/resources/application.properties deleted file mode 100644 index 8ddb707b..00000000 --- a/mongodb/schema-validation/src/test/resources/application.properties +++ /dev/null @@ -1,2 +0,0 @@ -spring.mongodb.embedded.features=ONLY_64BIT,NO_HTTP_INTERFACE_ARG,NO_CHUNKSIZE_ARG,SYNC_DELAY,ONLY_WITH_SSL -spring.mongodb.embedded.version=4.0.1 \ No newline at end of file diff --git a/mongodb/security/pom.xml b/mongodb/security/pom.xml index ee5d45ae..6fee76cf 100644 --- a/mongodb/security/pom.xml +++ b/mongodb/security/pom.xml @@ -24,9 +24,15 @@ - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/security/src/test/java/example/springdata/mongodb/security/PersonRepositoryIntegrationTest.java b/mongodb/security/src/test/java/example/springdata/mongodb/security/PersonRepositoryIntegrationTest.java index 8ada00b8..bd04a227 100644 --- a/mongodb/security/src/test/java/example/springdata/mongodb/security/PersonRepositoryIntegrationTest.java +++ b/mongodb/security/src/test/java/example/springdata/mongodb/security/PersonRepositoryIntegrationTest.java @@ -27,6 +27,12 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Integration test for {@link PersonRepository}. @@ -34,9 +40,19 @@ import org.springframework.security.core.context.SecurityContextHolder; * @author Thomas Darimont * @author Oliver Gierke */ +@Testcontainers @SpringBootTest class PersonRepositoryIntegrationTest { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired PersonRepository repository; private Person dave, oliver, carter, admin; diff --git a/mongodb/security/src/test/resources/application.properties b/mongodb/security/src/test/resources/application.properties deleted file mode 100644 index 2a85020f..00000000 --- a/mongodb/security/src/test/resources/application.properties +++ /dev/null @@ -1,3 +0,0 @@ -# Random port for embedded MongoDB -spring.data.mongodb.port=0 -spring.mongodb.embedded.version=3.6.0 diff --git a/mongodb/text-search/pom.xml b/mongodb/text-search/pom.xml index ee517a7e..500d9f52 100644 --- a/mongodb/text-search/pom.xml +++ b/mongodb/text-search/pom.xml @@ -20,9 +20,15 @@ - de.flapdoodle.embed - de.flapdoodle.embed.mongo - provided + org.testcontainers + junit-jupiter + test + + + org.testcontainers + mongodb + ${testcontainers.version} + test diff --git a/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchRepositoryTests.java b/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchRepositoryTests.java index 9cd7428d..a6a9dbfd 100644 --- a/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchRepositoryTests.java +++ b/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchRepositoryTests.java @@ -23,6 +23,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.data.mongodb.core.mapping.TextScore; import org.springframework.data.mongodb.core.query.TextCriteria; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * Integration tests showing the text search functionality using repositories. @@ -31,9 +37,19 @@ import org.springframework.data.mongodb.core.query.TextCriteria; * @author Oliver Gierke * @author Thomas Darimont */ +@Testcontainers @DataMongoTest class TextSearchRepositoryTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired BlogPostRepository repo; /** diff --git a/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchTemplateTests.java b/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchTemplateTests.java index 5072a66a..88236862 100644 --- a/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchTemplateTests.java +++ b/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchTemplateTests.java @@ -25,14 +25,30 @@ import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.TextCriteria; import org.springframework.data.mongodb.core.query.TextQuery; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import org.testcontainers.utility.DockerImageName; /** * @author Christoph Strobl * @author Thomas Darimont */ +@Testcontainers @DataMongoTest class TextSearchTemplateTests { + @Container // + private static MongoDBContainer mongoDBContainer = new MongoDBContainer( + DockerImageName.parse("mongo:5.0")); + + @DynamicPropertySource + static void setProperties(DynamicPropertyRegistry registry) { + registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl); + } + @Autowired MongoOperations operations; /** diff --git a/mongodb/text-search/src/test/resources/application.properties b/mongodb/text-search/src/test/resources/application.properties deleted file mode 100644 index 2215a345..00000000 --- a/mongodb/text-search/src/test/resources/application.properties +++ /dev/null @@ -1,2 +0,0 @@ -logging.level.example.springdata=INFO -spring.mongodb.embedded.version=3.6.0 \ No newline at end of file