FIX
[demos/kafka/chat] / src / test / java / de / juplo / kafka / chat / backend / InMemoryWithMongoDbConfigurationIT.java
1 package de.juplo.kafka.chat.backend;
2
3 import lombok.extern.slf4j.Slf4j;
4 import org.junit.jupiter.api.BeforeEach;
5 import org.springframework.boot.test.context.SpringBootTest;
6 import org.springframework.test.context.DynamicPropertyRegistry;
7 import org.springframework.test.context.DynamicPropertySource;
8 import org.testcontainers.containers.BindMode;
9 import org.testcontainers.containers.GenericContainer;
10 import org.testcontainers.containers.output.Slf4jLogConsumer;
11 import org.testcontainers.junit.jupiter.Container;
12 import org.testcontainers.junit.jupiter.Testcontainers;
13
14
15 @SpringBootTest(
16                 webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
17                 properties = {
18                                 "spring.data.mongodb.host=localhost",
19                                 "spring.data.mongodb.database=test",
20                                 "chat.backend.inmemory.sharding-strategy=none",
21                                 "chat.backend.inmemory.storage-strategy=mongodb" })
22 @Testcontainers
23 @Slf4j
24 class InMemoryWithMongoDbConfigurationIT extends AbstractConfigurationIT
25 {
26         private static final int MONGODB_PORT = 27017;
27
28         @Container
29         private static final GenericContainer CONTAINER =
30                         new GenericContainer("mongo:6")
31                                         .withClasspathResourceMapping(
32                                                         "data/mongodb",
33                                                         "/docker-entrypoint-initdb.d",
34                                                         BindMode.READ_ONLY)
35                                         .withExposedPorts(MONGODB_PORT);
36
37         @DynamicPropertySource
38         static void addMongoPortProperty(DynamicPropertyRegistry registry)
39         {
40                 registry.add("spring.data.mongodb.port", () -> CONTAINER.getMappedPort(27017));
41         }
42
43         @BeforeEach
44         void setUpLogging()
45         {
46                 Slf4jLogConsumer logConsumer = new Slf4jLogConsumer(log);
47                 CONTAINER.followOutput(logConsumer);
48         }
49 }