Skip to content

Commit 8868d34

Browse files
committed
Merge branch '2.5.x' into 2.6.x
Closes gh-29399
2 parents 1b2fa3c + d051146 commit 8868d34

File tree

1 file changed

+36
-28
lines changed

1 file changed

+36
-28
lines changed

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/ReactiveSessionAutoConfigurationMongoTests.java

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2021 the original author or authors.
2+
* Copyright 2012-2022 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -20,18 +20,21 @@
2020
import java.util.List;
2121

2222
import org.junit.jupiter.api.Test;
23+
import org.testcontainers.containers.MongoDBContainer;
24+
import org.testcontainers.junit.jupiter.Container;
25+
import org.testcontainers.junit.jupiter.Testcontainers;
2326

2427
import org.springframework.boot.autoconfigure.AutoConfigurations;
2528
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
2629
import org.springframework.boot.autoconfigure.data.mongo.MongoReactiveDataAutoConfiguration;
2730
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
2831
import org.springframework.boot.autoconfigure.mongo.MongoReactiveAutoConfiguration;
29-
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;
3032
import org.springframework.boot.autoconfigure.web.reactive.WebSessionIdResolverAutoConfiguration;
3133
import org.springframework.boot.test.context.FilteredClassLoader;
3234
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
3335
import org.springframework.boot.test.context.runner.ContextConsumer;
3436
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
37+
import org.springframework.boot.testsupport.testcontainers.DockerImageNames;
3538
import org.springframework.http.ResponseCookie;
3639
import org.springframework.session.data.mongo.ReactiveMongoSessionRepository;
3740
import org.springframework.session.data.redis.ReactiveRedisSessionRepository;
@@ -44,35 +47,41 @@
4447
* @author Andy Wilkinson
4548
* @author Weix Sun
4649
*/
50+
@Testcontainers
4751
class ReactiveSessionAutoConfigurationMongoTests extends AbstractSessionAutoConfigurationTests {
4852

53+
@Container
54+
static final MongoDBContainer mongoDb = new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(5)
55+
.withStartupTimeout(Duration.ofMinutes(5));
56+
4957
private final ReactiveWebApplicationContextRunner contextRunner = new ReactiveWebApplicationContextRunner()
50-
.withConfiguration(AutoConfigurations.of(SessionAutoConfiguration.class))
51-
.withPropertyValues("spring.mongodb.embedded.version=3.5.5");
58+
.withConfiguration(AutoConfigurations.of(SessionAutoConfiguration.class));
5259

5360
@Test
5461
void defaultConfig() {
55-
this.contextRunner.withPropertyValues("spring.session.store-type=mongodb")
56-
.withConfiguration(AutoConfigurations.of(EmbeddedMongoAutoConfiguration.class,
57-
MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
62+
this.contextRunner
63+
.withPropertyValues("spring.session.store-type=mongodb",
64+
"spring.data.mongodb.uri=" + mongoDb.getReplicaSetUrl())
65+
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
5866
MongoReactiveAutoConfiguration.class, MongoReactiveDataAutoConfiguration.class))
5967
.run(validateSpringSessionUsesMongo("sessions"));
6068
}
6169

6270
@Test
6371
void defaultConfigWithUniqueStoreImplementation() {
6472
this.contextRunner.withClassLoader(new FilteredClassLoader(ReactiveRedisSessionRepository.class))
65-
.withConfiguration(AutoConfigurations.of(EmbeddedMongoAutoConfiguration.class,
66-
MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
73+
.withPropertyValues("spring.data.mongodb.uri=" + mongoDb.getReplicaSetUrl())
74+
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
6775
MongoReactiveAutoConfiguration.class, MongoReactiveDataAutoConfiguration.class))
6876
.run(validateSpringSessionUsesMongo("sessions"));
6977
}
7078

7179
@Test
7280
void defaultConfigWithCustomTimeout() {
73-
this.contextRunner.withPropertyValues("spring.session.store-type=mongodb", "spring.session.timeout=1m")
74-
.withConfiguration(AutoConfigurations.of(EmbeddedMongoAutoConfiguration.class,
75-
MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
81+
this.contextRunner
82+
.withPropertyValues("spring.session.store-type=mongodb", "spring.session.timeout=1m",
83+
"spring.data.mongodb.uri=" + mongoDb.getReplicaSetUrl())
84+
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
7685
MongoReactiveAutoConfiguration.class, MongoReactiveDataAutoConfiguration.class))
7786
.run((context) -> {
7887
ReactiveMongoSessionRepository repository = validateSessionRepository(context,
@@ -83,9 +92,10 @@ void defaultConfigWithCustomTimeout() {
8392

8493
@Test
8594
void defaultConfigWithCustomSessionTimeout() {
86-
this.contextRunner.withPropertyValues("spring.session.store-type=mongodb", "server.reactive.session.timeout=1m")
87-
.withConfiguration(AutoConfigurations.of(EmbeddedMongoAutoConfiguration.class,
88-
MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
95+
this.contextRunner
96+
.withPropertyValues("spring.session.store-type=mongodb", "server.reactive.session.timeout=1m",
97+
"spring.data.mongodb.uri=" + mongoDb.getReplicaSetUrl())
98+
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
8999
MongoReactiveAutoConfiguration.class, MongoReactiveDataAutoConfiguration.class))
90100
.run((context) -> {
91101
ReactiveMongoSessionRepository repository = validateSessionRepository(context,
@@ -97,26 +107,24 @@ void defaultConfigWithCustomSessionTimeout() {
97107
@Test
98108
void mongoSessionStoreWithCustomizations() {
99109
this.contextRunner
100-
.withConfiguration(AutoConfigurations.of(EmbeddedMongoAutoConfiguration.class,
101-
MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
110+
.withConfiguration(AutoConfigurations.of(MongoAutoConfiguration.class, MongoDataAutoConfiguration.class,
102111
MongoReactiveAutoConfiguration.class, MongoReactiveDataAutoConfiguration.class))
103-
.withPropertyValues("spring.session.store-type=mongodb", "spring.session.mongodb.collection-name=foo")
112+
.withPropertyValues("spring.session.store-type=mongodb", "spring.session.mongodb.collection-name=foo",
113+
"spring.data.mongodb.uri=" + mongoDb.getReplicaSetUrl())
104114
.run(validateSpringSessionUsesMongo("foo"));
105115
}
106116

107117
@Test
108118
void sessionCookieConfigurationIsAppliedToAutoConfiguredWebSessionIdResolver() {
109-
AutoConfigurations autoConfigurations = AutoConfigurations.of(EmbeddedMongoAutoConfiguration.class,
110-
MongoAutoConfiguration.class, MongoDataAutoConfiguration.class, MongoReactiveAutoConfiguration.class,
119+
AutoConfigurations autoConfigurations = AutoConfigurations.of(MongoAutoConfiguration.class,
120+
MongoDataAutoConfiguration.class, MongoReactiveAutoConfiguration.class,
111121
MongoReactiveDataAutoConfiguration.class, WebSessionIdResolverAutoConfiguration.class);
112-
this.contextRunner.withConfiguration(autoConfigurations).withUserConfiguration(Config.class)
113-
.withPropertyValues("spring.session.store-type=mongodb",
114-
"server.reactive.session.cookie.name:JSESSIONID",
115-
"server.reactive.session.cookie.domain:.example.com",
116-
"server.reactive.session.cookie.path:/example", "server.reactive.session.cookie.max-age:60",
117-
"server.reactive.session.cookie.http-only:false", "server.reactive.session.cookie.secure:false",
118-
"server.reactive.session.cookie.same-site:strict")
119-
.run(assertExchangeWithSession((exchange) -> {
122+
this.contextRunner.withConfiguration(autoConfigurations).withUserConfiguration(Config.class).withPropertyValues(
123+
"spring.session.store-type=mongodb", "server.reactive.session.cookie.name:JSESSIONID",
124+
"server.reactive.session.cookie.domain:.example.com", "server.reactive.session.cookie.path:/example",
125+
"server.reactive.session.cookie.max-age:60", "server.reactive.session.cookie.http-only:false",
126+
"server.reactive.session.cookie.secure:false", "server.reactive.session.cookie.same-site:strict",
127+
"spring.data.mongodb.uri=" + mongoDb.getReplicaSetUrl()).run(assertExchangeWithSession((exchange) -> {
120128
List<ResponseCookie> cookies = exchange.getResponse().getCookies().get("JSESSIONID");
121129
assertThat(cookies).isNotEmpty();
122130
assertThat(cookies).allMatch((cookie) -> cookie.getDomain().equals(".example.com"));

0 commit comments

Comments
 (0)