Skip to content

Commit 384170b

Browse files
committed
👀 Adding Spring Context Loading Test
😅 Fixing /swagger-ui redirects
1 parent 991952d commit 384170b

File tree

4 files changed

+90
-24
lines changed

4 files changed

+90
-24
lines changed

pom.xml

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,18 @@
5454
<scope>runtime</scope>
5555
</dependency>
5656

57+
<dependency>
58+
<groupId>org.projectlombok</groupId>
59+
<artifactId>lombok</artifactId>
60+
<optional>true</optional>
61+
</dependency>
62+
63+
<dependency>
64+
<groupId>org.springdoc</groupId>
65+
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
66+
<version>${springdoc.version}</version>
67+
</dependency>
68+
5769
<dependency>
5870
<groupId>org.springframework.boot</groupId>
5971
<artifactId>spring-boot-starter-test</artifactId>
@@ -67,38 +79,37 @@
6779
</dependency>
6880

6981
<dependency>
70-
<groupId>org.projectlombok</groupId>
71-
<artifactId>lombok</artifactId>
72-
<version>${lombok.version}</version>
73-
<scope>provided</scope>
74-
</dependency>
75-
76-
<dependency>
77-
<groupId>com.h2database</groupId>
78-
<artifactId>h2</artifactId>
79-
<scope>runtime</scope>
82+
<groupId>org.testcontainers</groupId>
83+
<artifactId>postgresql</artifactId>
84+
<version>${testcontainers.version}</version>
85+
<scope>test</scope>
8086
</dependency>
8187

8288
<dependency>
83-
<groupId>org.springdoc</groupId>
84-
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
85-
<version>${springdoc.version}</version>
89+
<groupId>org.testcontainers</groupId>
90+
<artifactId>kafka</artifactId>
91+
<version>${testcontainers.version}</version>
92+
<scope>test</scope>
8693
</dependency>
8794

8895
<dependency>
89-
<groupId>org.springframework.boot</groupId>
90-
<artifactId>spring-boot-starter-actuator</artifactId>
96+
<groupId>org.testcontainers</groupId>
97+
<artifactId>testcontainers</artifactId>
98+
<version>${testcontainers.version}</version>
99+
<scope>test</scope>
91100
</dependency>
92101

93102
<dependency>
94-
<groupId>org.springframework.boot</groupId>
95-
<artifactId>spring-boot-starter-validation</artifactId>
103+
<groupId>org.testcontainers</groupId>
104+
<artifactId>junit-jupiter</artifactId>
105+
<version>${testcontainers.version}</version>
106+
<scope>test</scope>
96107
</dependency>
97-
108+
98109
<dependency>
99-
<groupId>org.projectlombok</groupId>
100-
<artifactId>lombok</artifactId>
101-
<optional>true</optional>
110+
<groupId>com.h2database</groupId>
111+
<artifactId>h2</artifactId>
112+
<scope>test</scope>
102113
</dependency>
103114
</dependencies>
104115

src/main/java/dev/luismachadoreis/flighttracker/server/common/infrastructure/OpenApiConfig.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,29 @@
1010
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1111
import org.springframework.context.annotation.Bean;
1212
import org.springframework.context.annotation.Configuration;
13+
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
14+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
1315

1416
import java.util.List;
1517

1618
@Configuration
1719
@EnableConfigurationProperties(OpenApiConfig.ApiProperties.class)
18-
public class OpenApiConfig {
20+
public class OpenApiConfig implements WebMvcConfigurer {
1921

2022
private final ApiProperties properties;
2123

2224
public OpenApiConfig(ApiProperties properties) {
2325
this.properties = properties;
2426
}
2527

28+
@Override
29+
public void addViewControllers(ViewControllerRegistry registry) {
30+
registry.addRedirectViewController("/swagger-ui", "/swagger-ui/index.html");
31+
registry.addRedirectViewController("/swagger-ui/", "/swagger-ui/index.html");
32+
registry.addRedirectViewController("/api-docs", "/v3/api-docs");
33+
registry.addRedirectViewController("/api-docs/", "/v3/api-docs");
34+
}
35+
2636
@Bean
2737
public OpenAPI customOpenAPI() {
2838
List<Server> servers = properties.getServers().stream()
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package dev.luismachadoreis.flighttracker.server;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.springframework.boot.test.context.SpringBootTest;
5+
import org.springframework.boot.test.mock.mockito.MockBean;
6+
import org.springframework.data.redis.connection.RedisConnectionFactory;
7+
import org.springframework.data.redis.connection.ReactiveRedisConnectionFactory;
8+
import org.springframework.data.redis.core.RedisTemplate;
9+
import org.springframework.kafka.core.KafkaTemplate;
10+
import org.springframework.test.context.ActiveProfiles;
11+
12+
import static org.assertj.core.api.Assertions.assertThat;
13+
14+
@SpringBootTest
15+
@ActiveProfiles("test")
16+
class LoadingFlightTrackerApplicationTest {
17+
18+
@MockBean
19+
private KafkaTemplate<String, Object> kafkaTemplate;
20+
21+
@MockBean
22+
private RedisConnectionFactory redisConnectionFactory;
23+
24+
@MockBean
25+
private ReactiveRedisConnectionFactory reactiveRedisConnectionFactory;
26+
27+
@MockBean
28+
private RedisTemplate<String, Object> redisTemplate;
29+
30+
@Test
31+
void contextLoads() {
32+
// If we get here, the context loaded successfully
33+
assertThat(kafkaTemplate).isNotNull();
34+
assertThat(redisConnectionFactory).isNotNull();
35+
assertThat(reactiveRedisConnectionFactory).isNotNull();
36+
assertThat(redisTemplate).isNotNull();
37+
}
38+
}

src/test/resources/application-test.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,23 @@ spring:
2121

2222
kafka:
2323
bootstrap-servers: localhost:9092
24+
producer:
25+
key-serializer: org.apache.kafka.common.serialization.StringSerializer
26+
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
27+
properties:
28+
spring.json.trusted.packages: "dev.luismachadoreis.flighttracker.server"
2429
consumer:
25-
group-id: flight-tracker-group-test
30+
group-id: flight-tracker-test
2631
auto-offset-reset: earliest
2732
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
2833
value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
2934
properties:
30-
spring.json.trusted.packages: "dev.luismachadoreis.flighttracker.server.ping.application.dto"
35+
spring.json.trusted.packages: "dev.luismachadoreis.flighttracker.server"
3136
topic:
3237
flight-positions: flight-positions-test
3338
ping-created: ping-created-test
39+
ping-updated: ping-updated-test
40+
ping-deleted: ping-deleted-test
3441

3542
redis:
3643
host: localhost

0 commit comments

Comments
 (0)