Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
b8eff0a0
Commit
b8eff0a0
authored
Sep 11, 2017
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Migrate tests to ApplicationContextRunner
parent
85493367
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
184 additions
and
172 deletions
+184
-172
AbstractSessionAutoConfigurationTests.java
...figure/session/AbstractSessionAutoConfigurationTests.java
+4
-34
SessionAutoConfigurationHazelcastTests.java
...igure/session/SessionAutoConfigurationHazelcastTests.java
+30
-24
SessionAutoConfigurationJdbcTests.java
...oconfigure/session/SessionAutoConfigurationJdbcTests.java
+45
-41
SessionAutoConfigurationRedisTests.java
...configure/session/SessionAutoConfigurationRedisTests.java
+30
-23
SessionAutoConfigurationTests.java
.../autoconfigure/session/SessionAutoConfigurationTests.java
+75
-50
No files found.
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/AbstractSessionAutoConfigurationTests.java
View file @
b8eff0a0
...
@@ -16,16 +16,9 @@
...
@@ -16,16 +16,9 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
session
;
package
org
.
springframework
.
boot
.
autoconfigure
.
session
;
import
java.util.Collection
;
import
org.junit.After
;
import
org.springframework.beans.DirectFieldAccessor
;
import
org.springframework.beans.DirectFieldAccessor
;
import
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration
;
import
org.springframework.boot.test.context.assertj.AssertableWebApplicationContext
;
import
org.springframework.boot.autoconfigure.web.ServerProperties
;
import
org.springframework.boot.test.util.TestPropertyValues
;
import
org.springframework.session.SessionRepository
;
import
org.springframework.session.SessionRepository
;
import
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
@@ -36,18 +29,11 @@ import static org.assertj.core.api.Assertions.assertThat;
...
@@ -36,18 +29,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
*/
public
abstract
class
AbstractSessionAutoConfigurationTests
{
public
abstract
class
AbstractSessionAutoConfigurationTests
{
protected
AnnotationConfigWebApplicationContext
context
;
@After
public
void
close
()
{
if
(
this
.
context
!=
null
)
{
this
.
context
.
close
();
}
}
protected
<
T
extends
SessionRepository
<?>>
T
validateSessionRepository
(
protected
<
T
extends
SessionRepository
<?>>
T
validateSessionRepository
(
AssertableWebApplicationContext
context
,
Class
<
T
>
type
)
{
Class
<
T
>
type
)
{
SessionRepository
<?>
repository
=
this
.
context
.
getBean
(
SessionRepository
.
class
);
assertThat
(
context
).
hasSingleBean
(
SessionRepository
.
class
);
SessionRepository
<?>
repository
=
context
.
getBean
(
SessionRepository
.
class
);
assertThat
(
repository
).
as
(
"Wrong session repository type"
).
isInstanceOf
(
type
);
assertThat
(
repository
).
as
(
"Wrong session repository type"
).
isInstanceOf
(
type
);
return
type
.
cast
(
repository
);
return
type
.
cast
(
repository
);
}
}
...
@@ -57,20 +43,4 @@ public abstract class AbstractSessionAutoConfigurationTests {
...
@@ -57,20 +43,4 @@ public abstract class AbstractSessionAutoConfigurationTests {
.
getPropertyValue
(
"defaultMaxInactiveInterval"
);
.
getPropertyValue
(
"defaultMaxInactiveInterval"
);
}
}
protected
void
load
(
String
...
environment
)
{
load
(
null
,
environment
);
}
protected
void
load
(
Collection
<
Class
<?>>
configs
,
String
...
environment
)
{
AnnotationConfigWebApplicationContext
ctx
=
new
AnnotationConfigWebApplicationContext
();
TestPropertyValues
.
of
(
environment
).
applyTo
(
ctx
);
if
(
configs
!=
null
)
{
ctx
.
register
(
configs
.
toArray
(
new
Class
<?>[
configs
.
size
()]));
}
ctx
.
register
(
ServerProperties
.
class
,
SessionAutoConfiguration
.
class
,
PropertyPlaceholderAutoConfiguration
.
class
);
ctx
.
refresh
();
this
.
context
=
ctx
;
}
}
}
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationHazelcastTests.java
View file @
b8eff0a0
/*
/*
* Copyright 2012-201
6
the original author or authors.
* Copyright 2012-201
7
the original author or authors.
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* you may not use this file except in compliance with the License.
...
@@ -16,13 +16,13 @@
...
@@ -16,13 +16,13 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
session
;
package
org
.
springframework
.
boot
.
autoconfigure
.
session
;
import
java.util.Collections
;
import
com.hazelcast.core.HazelcastInstance
;
import
com.hazelcast.core.HazelcastInstance
;
import
com.hazelcast.core.IMap
;
import
com.hazelcast.core.IMap
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.springframework.beans.DirectFieldAccessor
;
import
org.springframework.beans.DirectFieldAccessor
;
import
org.springframework.boot.autoconfigure.AutoConfigurations
;
import
org.springframework.boot.test.context.runner.WebApplicationContextRunner
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.session.hazelcast.HazelcastFlushMode
;
import
org.springframework.session.hazelcast.HazelcastFlushMode
;
...
@@ -42,37 +42,43 @@ import static org.mockito.Mockito.verify;
...
@@ -42,37 +42,43 @@ import static org.mockito.Mockito.verify;
public
class
SessionAutoConfigurationHazelcastTests
public
class
SessionAutoConfigurationHazelcastTests
extends
AbstractSessionAutoConfigurationTests
{
extends
AbstractSessionAutoConfigurationTests
{
private
final
WebApplicationContextRunner
contextRunner
=
new
WebApplicationContextRunner
()
.
withConfiguration
(
AutoConfigurations
.
of
(
SessionAutoConfiguration
.
class
))
.
withUserConfiguration
(
HazelcastConfiguration
.
class
);
@Test
@Test
public
void
defaultConfig
()
{
public
void
defaultConfig
()
{
load
(
Collections
.<
Class
<?>>
singletonList
(
HazelcastConfiguration
.
class
),
this
.
contextRunner
.
withPropertyValues
(
"spring.session.store-type=hazelcast"
)
"spring.session.store-type=hazelcast"
);
.
run
((
context
)
->
{
validateSessionRepository
(
HazelcastSessionRepository
.
class
);
validateSessionRepository
(
context
,
HazelcastSessionRepository
.
class
);
HazelcastInstance
hazelcastInstance
=
this
.
context
HazelcastInstance
hazelcastInstance
=
context
.
getBean
(
HazelcastInstance
.
class
);
.
getBean
(
HazelcastInstance
.
class
);
verify
(
hazelcastInstance
,
times
(
1
)).
getMap
(
"spring:session:sessions"
);
verify
(
hazelcastInstance
,
times
(
1
)).
getMap
(
"spring:session:sessions"
);
});
}
}
@Test
@Test
public
void
customMapName
()
{
public
void
customMapName
()
{
load
(
Collections
.<
Class
<?>>
singletonList
(
HazelcastConfiguration
.
class
)
,
this
.
contextRunner
.
withPropertyValues
(
"spring.session.store-type=hazelcast"
,
"spring.session.
store-type=hazelcast"
,
"spring.session.
hazelcast.map-name=foo:bar:biz"
).
run
((
context
)
->
{
"spring.session.hazelcast.map-name=foo:bar:biz"
);
validateSessionRepository
(
context
,
HazelcastSessionRepository
.
class
);
validateSessionRepository
(
HazelcastSessionRepository
.
class
);
HazelcastInstance
hazelcastInstance
=
context
HazelcastInstance
hazelcastInstance
=
this
.
context
.
getBean
(
HazelcastInstance
.
class
);
.
getBean
(
HazelcastInstance
.
class
);
verify
(
hazelcastInstance
,
times
(
1
)).
getMap
(
"foo:bar:biz"
);
verify
(
hazelcastInstance
,
times
(
1
)).
getMap
(
"foo:bar:biz"
);
}
);
}
}
@Test
@Test
public
void
customFlushMode
()
{
public
void
customFlushMode
()
{
load
(
Collections
.<
Class
<?>>
singletonList
(
HazelcastConfiguration
.
class
)
,
this
.
contextRunner
.
withPropertyValues
(
"spring.session.store-type=hazelcast"
,
"spring.session.
store-type=hazelcast"
,
"spring.session.
hazelcast.flush-mode=immediate"
).
run
((
context
)
->
{
"spring.session.hazelcast.flush-mode=immediate"
);
HazelcastSessionRepository
repository
=
validateSessionRepository
(
context
,
HazelcastSessionRepository
repository
=
validateSessionRepository
(
HazelcastSessionRepository
.
class
);
HazelcastSessionRepository
.
class
);
assertThat
(
new
DirectFieldAccessor
(
repository
)
assertThat
(
new
DirectFieldAccessor
(
repository
)
.
getPropertyValue
(
"hazelcastFlushMode"
)
)
.
getPropertyValue
(
"hazelcastFlushMode"
))
.
isEqualTo
(
HazelcastFlushMode
.
IMMEDIATE
);
.
isEqualTo
(
HazelcastFlushMode
.
IMMEDIATE
);
}
);
}
}
@Configuration
@Configuration
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationJdbcTests.java
View file @
b8eff0a0
...
@@ -16,17 +16,17 @@
...
@@ -16,17 +16,17 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
session
;
package
org
.
springframework
.
boot
.
autoconfigure
.
session
;
import
java.util.Arrays
;
import
org.junit.Rule
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.junit.rules.ExpectedException
;
import
org.junit.rules.ExpectedException
;
import
org.springframework.beans.DirectFieldAccessor
;
import
org.springframework.beans.DirectFieldAccessor
;
import
org.springframework.boot.autoconfigure.AutoConfigurations
;
import
org.springframework.boot.autoconfigure.DatabaseInitializationMode
;
import
org.springframework.boot.autoconfigure.DatabaseInitializationMode
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration
;
import
org.springframework.boot.test.context.runner.WebApplicationContextRunner
;
import
org.springframework.jdbc.BadSqlGrammarException
;
import
org.springframework.jdbc.BadSqlGrammarException
;
import
org.springframework.jdbc.core.JdbcOperations
;
import
org.springframework.jdbc.core.JdbcOperations
;
import
org.springframework.session.jdbc.JdbcOperationsSessionRepository
;
import
org.springframework.session.jdbc.JdbcOperationsSessionRepository
;
...
@@ -45,57 +45,61 @@ public class SessionAutoConfigurationJdbcTests
...
@@ -45,57 +45,61 @@ public class SessionAutoConfigurationJdbcTests
@Rule
@Rule
public
ExpectedException
thrown
=
ExpectedException
.
none
();
public
ExpectedException
thrown
=
ExpectedException
.
none
();
private
final
WebApplicationContextRunner
contextRunner
=
new
WebApplicationContextRunner
()
.
withConfiguration
(
AutoConfigurations
.
of
(
DataSourceAutoConfiguration
.
class
,
DataSourceTransactionManagerAutoConfiguration
.
class
,
SessionAutoConfiguration
.
class
))
.
withPropertyValues
(
"spring.datasource.generate-unique-name=true"
);
@Test
@Test
public
void
defaultConfig
()
{
public
void
defaultConfig
()
{
load
(
Arrays
.
asList
(
EmbeddedDataSourceConfiguration
.
class
,
this
.
contextRunner
.
withConfiguration
(
AutoConfigurations
.
of
(
JdbcTemplateAutoConfiguration
.
class
,
JdbcTemplateAutoConfiguration
.
class
))
DataSourceTransactionManagerAutoConfiguration
.
class
),
.
withPropertyValues
(
"spring.session.store-type=jdbc"
).
run
((
context
)
->
{
"spring.session.store-type=jdbc"
);
JdbcOperationsSessionRepository
repository
=
validateSessionRepository
(
context
,
JdbcOperationsSessionRepository
repository
=
validateSessionRepository
(
JdbcOperationsSessionRepository
.
class
);
JdbcOperationsSessionRepository
.
class
);
assertThat
(
new
DirectFieldAccessor
(
repository
).
getPropertyValue
(
"tableName"
))
assertThat
(
new
DirectFieldAccessor
(
repository
).
getPropertyValue
(
"tableName"
))
.
isEqualTo
(
"SPRING_SESSION"
);
.
isEqualTo
(
"SPRING_SESSION"
);
assertThat
(
context
.
getBean
(
JdbcSessionProperties
.
class
).
getInitializeSchema
())
assertThat
(
.
isEqualTo
(
DatabaseInitializationMode
.
EMBEDDED
);
this
.
context
.
getBean
(
JdbcSessionProperties
.
class
).
getInitializeSchema
())
assertThat
(
context
.
getBean
(
JdbcOperations
.
class
)
.
isEqualTo
(
DatabaseInitializationMode
.
EMBEDDED
);
.
queryForList
(
"select * from SPRING_SESSION"
)).
isEmpty
();
assertThat
(
this
.
context
.
getBean
(
JdbcOperations
.
class
)
});
.
queryForList
(
"select * from SPRING_SESSION"
)).
isEmpty
();
}
}
@Test
@Test
public
void
disableDatabaseInitializer
()
{
public
void
disableDatabaseInitializer
()
{
load
(
Arrays
.
asList
(
EmbeddedDataSourceConfiguration
.
class
,
this
.
contextRunner
.
withPropertyValues
(
DataSourceTransactionManagerAutoConfiguration
.
class
),
"spring.session.store-type=jdbc"
,
"spring.session.store-type=jdbc"
,
"spring.session.jdbc.initialize-schema=never"
)
;
"spring.session.jdbc.initialize-schema=never"
)
.
run
((
context
)
->
{
JdbcOperationsSessionRepository
repository
=
validateSessionRepository
(
JdbcOperationsSessionRepository
repository
=
validateSessionRepository
(
context
,
JdbcOperationsSessionRepository
.
class
);
JdbcOperationsSessionRepository
.
class
);
assertThat
(
new
DirectFieldAccessor
(
repository
).
getPropertyValue
(
"tableName"
))
assertThat
(
new
DirectFieldAccessor
(
repository
).
getPropertyValue
(
"tableName"
))
.
isEqualTo
(
"SPRING_SESSION"
);
.
isEqualTo
(
"SPRING_SESSION"
);
assertThat
(
assertThat
(
context
.
getBean
(
JdbcSessionProperties
.
class
).
getInitializeSchema
())
this
.
context
.
getBean
(
JdbcSessionProperties
.
class
).
getInitializeSchema
())
.
isEqualTo
(
DatabaseInitializationMode
.
NEVER
);
.
isEqualTo
(
DatabaseInitializationMode
.
NEVER
);
this
.
thrown
.
expect
(
BadSqlGrammarException
.
class
);
this
.
thrown
.
expect
(
BadSqlGrammarException
.
class
);
context
.
getBean
(
JdbcOperations
.
class
).
queryForList
(
this
.
context
.
getBean
(
JdbcOperations
.
class
)
"select * from SPRING_SESSION"
);
.
queryForList
(
"select * from SPRING_SESSION"
);
}
);
}
}
@Test
@Test
public
void
customTableName
()
{
public
void
customTableName
()
{
load
(
Arrays
.
asList
(
EmbeddedDataSourceConfiguration
.
class
,
this
.
contextRunner
.
withPropertyValues
(
DataSourceTransactionManagerAutoConfiguration
.
class
),
"spring.session.store-type=jdbc"
,
"spring.session.store-type=jdbc"
,
"spring.session.jdbc.table-name=FOO_BAR"
,
"spring.session.jdbc.table-name=FOO_BAR"
,
"spring.session.jdbc.schema=classpath:session/custom-schema-h2.sql"
);
"spring.session.jdbc.schema=classpath:session/custom-schema-h2.sql"
)
JdbcOperationsSessionRepository
repository
=
validateSessionRepository
(
.
run
((
context
)
->
{
JdbcOperationsSessionRepository
.
class
);
JdbcOperationsSessionRepository
repository
=
validateSessionRepository
(
context
,
assertThat
(
new
DirectFieldAccessor
(
repository
).
getPropertyValue
(
"tableName"
))
JdbcOperationsSessionRepository
.
class
);
.
isEqualTo
(
"FOO_BAR"
);
assertThat
(
new
DirectFieldAccessor
(
repository
).
getPropertyValue
(
"tableName"
))
assertThat
(
.
isEqualTo
(
"FOO_BAR"
);
this
.
context
.
getBean
(
JdbcSessionProperties
.
class
).
getInitializeSchema
())
assertThat
(
context
.
getBean
(
JdbcSessionProperties
.
class
).
getInitializeSchema
())
.
isEqualTo
(
DatabaseInitializationMode
.
EMBEDDED
);
.
isEqualTo
(
DatabaseInitializationMode
.
EMBEDDED
);
assertThat
(
this
.
context
.
getBean
(
JdbcOperations
.
class
)
assertThat
(
context
.
getBean
(
JdbcOperations
.
class
)
.
queryForList
(
"select * from FOO_BAR"
)).
isEmpty
();
.
queryForList
(
"select * from FOO_BAR"
)).
isEmpty
();
});
}
}
}
}
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationRedisTests.java
View file @
b8eff0a0
...
@@ -16,13 +16,15 @@
...
@@ -16,13 +16,15 @@
package
org
.
springframework
.
boot
.
autoconfigure
.
session
;
package
org
.
springframework
.
boot
.
autoconfigure
.
session
;
import
java.util.Collections
;
import
org.junit.Rule
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.springframework.beans.DirectFieldAccessor
;
import
org.springframework.beans.DirectFieldAccessor
;
import
org.springframework.boot.autoconfigure.AutoConfigurations
;
import
org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
;
import
org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
;
import
org.springframework.boot.test.context.assertj.AssertableWebApplicationContext
;
import
org.springframework.boot.test.context.runner.ContextConsumer
;
import
org.springframework.boot.test.context.runner.WebApplicationContextRunner
;
import
org.springframework.boot.testsupport.rule.RedisTestServer
;
import
org.springframework.boot.testsupport.rule.RedisTestServer
;
import
org.springframework.session.data.redis.RedisFlushMode
;
import
org.springframework.session.data.redis.RedisFlushMode
;
import
org.springframework.session.data.redis.RedisOperationsSessionRepository
;
import
org.springframework.session.data.redis.RedisOperationsSessionRepository
;
...
@@ -40,33 +42,38 @@ public class SessionAutoConfigurationRedisTests
...
@@ -40,33 +42,38 @@ public class SessionAutoConfigurationRedisTests
@Rule
@Rule
public
final
RedisTestServer
redis
=
new
RedisTestServer
();
public
final
RedisTestServer
redis
=
new
RedisTestServer
();
protected
final
WebApplicationContextRunner
contextRunner
=
new
WebApplicationContextRunner
()
.
withConfiguration
(
AutoConfigurations
.
of
(
SessionAutoConfiguration
.
class
));
@Test
@Test
public
void
redisSessionStore
()
{
public
void
redisSessionStore
()
{
load
(
Collections
.<
Class
<?>>
singletonList
(
RedisAutoConfiguration
.
class
),
this
.
contextRunner
.
withConfiguration
(
AutoConfigurations
.
of
(
RedisAutoConfiguration
.
class
))
"spring.session.store-type=redis"
);
.
withPropertyValues
(
"spring.session.store-type=redis"
)
validateSpringSessionUsesRedis
();
.
run
(
validateSpringSessionUsesRedis
(
"spring:session:event:created:"
,
}
RedisFlushMode
.
ON_SAVE
));
private
void
validateSpringSessionUsesRedis
()
{
RedisOperationsSessionRepository
repository
=
validateSessionRepository
(
RedisOperationsSessionRepository
.
class
);
assertThat
(
repository
.
getSessionCreatedChannelPrefix
())
.
isEqualTo
(
"spring:session:event:created:"
);
assertThat
(
new
DirectFieldAccessor
(
repository
).
getPropertyValue
(
"redisFlushMode"
))
.
isEqualTo
(
RedisFlushMode
.
ON_SAVE
);
}
}
@Test
@Test
public
void
redisSessionStoreWithCustomizations
()
{
public
void
redisSessionStoreWithCustomizations
()
{
load
(
Collections
.<
Class
<?>>
singletonList
(
RedisAutoConfiguration
.
class
),
this
.
contextRunner
.
withConfiguration
(
AutoConfigurations
.
of
(
RedisAutoConfiguration
.
class
))
"spring.session.store-type=redis"
,
"spring.session.redis.namespace=foo"
,
.
withPropertyValues
(
"spring.session.store-type=redis"
,
"spring.session.redis.flush-mode=immediate"
);
"spring.session.redis.namespace=foo"
,
RedisOperationsSessionRepository
repository
=
validateSessionRepository
(
"spring.session.redis.flush-mode=immediate"
)
RedisOperationsSessionRepository
.
class
);
.
run
(
validateSpringSessionUsesRedis
(
"spring:session:foo:event:created:"
,
assertThat
(
repository
.
getSessionCreatedChannelPrefix
())
RedisFlushMode
.
IMMEDIATE
));
.
isEqualTo
(
"spring:session:foo:event:created:"
);
}
assertThat
(
new
DirectFieldAccessor
(
repository
).
getPropertyValue
(
"redisFlushMode"
))
.
isEqualTo
(
RedisFlushMode
.
IMMEDIATE
);
private
ContextConsumer
<
AssertableWebApplicationContext
>
validateSpringSessionUsesRedis
(
String
sessionCreatedChannelPrefix
,
RedisFlushMode
flushMode
)
{
return
context
->
{
RedisOperationsSessionRepository
repository
=
validateSessionRepository
(
context
,
RedisOperationsSessionRepository
.
class
);
assertThat
(
repository
.
getSessionCreatedChannelPrefix
())
.
isEqualTo
(
sessionCreatedChannelPrefix
);
assertThat
(
new
DirectFieldAccessor
(
repository
).
getPropertyValue
(
"redisFlushMode"
))
.
isEqualTo
(
flushMode
);
};
}
}
}
}
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationTests.java
View file @
b8eff0a0
...
@@ -21,11 +21,12 @@ import java.util.EnumSet;
...
@@ -21,11 +21,12 @@ import java.util.EnumSet;
import
javax.servlet.DispatcherType
;
import
javax.servlet.DispatcherType
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.junit.rules.ExpectedException
;
import
org.springframework.beans.factory.BeanCreationException
;
import
org.springframework.beans.factory.BeanCreationException
;
import
org.springframework.boot.autoconfigure.AutoConfigurations
;
import
org.springframework.boot.autoconfigure.web.ServerProperties
;
import
org.springframework.boot.test.context.runner.WebApplicationContextRunner
;
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
...
@@ -46,95 +47,119 @@ import static org.assertj.core.api.Assertions.assertThat;
...
@@ -46,95 +47,119 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
*/
public
class
SessionAutoConfigurationTests
extends
AbstractSessionAutoConfigurationTests
{
public
class
SessionAutoConfigurationTests
extends
AbstractSessionAutoConfigurationTests
{
@Rule
private
final
WebApplicationContextRunner
contextRunner
=
new
WebApplicationContextRunner
()
public
ExpectedException
thrown
=
ExpectedException
.
none
(
);
.
withConfiguration
(
AutoConfigurations
.
of
(
SessionAutoConfiguration
.
class
)
);
@Test
@Test
public
void
contextFailsIfStoreTypeNotSet
()
{
public
void
contextFailsIfStoreTypeNotSet
()
{
this
.
thrown
.
expect
(
BeanCreationException
.
class
);
this
.
contextRunner
.
run
((
context
)
->
{
this
.
thrown
.
expectMessage
(
"No Spring Session store is configured"
);
assertThat
(
context
).
hasFailed
();
this
.
thrown
.
expectMessage
(
"set the 'spring.session.store-type' property"
);
assertThat
(
context
).
getFailure
().
hasMessageContaining
(
load
();
"No Spring Session store is configured"
);
assertThat
(
context
).
getFailure
().
hasMessageContaining
(
"set the 'spring.session.store-type' property"
);
});
}
}
@Test
@Test
public
void
contextFailsIfStoreTypeNotAvailable
()
{
public
void
contextFailsIfStoreTypeNotAvailable
()
{
this
.
thrown
.
expect
(
BeanCreationException
.
class
);
this
.
contextRunner
.
withPropertyValues
(
"spring.session.store-type=jdbc"
)
this
.
thrown
.
expectMessage
(
"No session repository could be auto-configured"
);
.
run
((
context
)
->
{
this
.
thrown
.
expectMessage
(
"session store type is 'jdbc'"
);
assertThat
(
context
).
hasFailed
();
load
(
"spring.session.store-type=jdbc"
);
assertThat
(
context
).
getFailure
().
isInstanceOf
(
BeanCreationException
.
class
);
assertThat
(
context
).
getFailure
().
hasMessageContaining
(
"No session repository could be auto-configured"
);
assertThat
(
context
).
getFailure
().
hasMessageContaining
(
"session store type is 'jdbc'"
);
});
}
}
@Test
@Test
public
void
autoConfigurationDisabledIfStoreTypeSetToNone
()
{
public
void
autoConfigurationDisabledIfStoreTypeSetToNone
()
{
load
(
"spring.session.store-type=none"
);
this
.
contextRunner
.
withPropertyValues
(
"spring.session.store-type=none"
)
assertThat
(
this
.
context
.
getBeansOfType
(
SessionRepository
.
class
)).
hasSize
(
0
);
.
run
((
context
)
->
assertThat
(
context
)
.
doesNotHaveBean
(
SessionRepository
.
class
));
}
}
@Test
@Test
public
void
backOffIfSessionRepositoryIsPresent
()
{
public
void
backOffIfSessionRepositoryIsPresent
()
{
load
(
Collections
.
singletonList
(
SessionRepositoryConfiguration
.
class
),
this
.
contextRunner
.
withUserConfiguration
(
SessionRepositoryConfiguration
.
class
)
"spring.session.store-type=redis"
);
.
withPropertyValues
(
"spring.session.store-type=redis"
).
run
((
context
)
->
{
MapSessionRepository
repository
=
validateSessionRepository
(
MapSessionRepository
repository
=
validateSessionRepository
(
context
,
MapSessionRepository
.
class
);
MapSessionRepository
.
class
);
assertThat
(
this
.
context
.
getBean
(
"mySessionRepository"
)).
isSameAs
(
repository
);
assertThat
(
context
).
getBean
(
"mySessionRepository"
).
isSameAs
(
repository
);
});
}
}
@Test
@Test
public
void
hashMapSessionStore
()
{
public
void
hashMapSessionStore
()
{
load
(
"spring.session.store-type=hash-map"
);
this
.
contextRunner
MapSessionRepository
repository
=
validateSessionRepository
(
.
withPropertyValues
(
"spring.session.store-type=hash-map"
)
MapSessionRepository
.
class
);
.
run
((
context
)
->
{
assertThat
(
getSessionTimeout
(
repository
)).
isNull
();
MapSessionRepository
repository
=
validateSessionRepository
(
context
,
MapSessionRepository
.
class
);
assertThat
(
getSessionTimeout
(
repository
)).
isNull
();
});
}
}
@Test
@Test
public
void
hashMapSessionStoreCustomTimeout
()
{
public
void
hashMapSessionStoreCustomTimeout
()
{
load
(
"spring.session.store-type=hash-map"
,
"server.session.timeout=3000"
);
this
.
contextRunner
.
withUserConfiguration
(
ServerProperties
.
class
).
MapSessionRepository
repository
=
validateSessionRepository
(
withPropertyValues
(
"spring.session.store-type=hash-map"
,
MapSessionRepository
.
class
);
"server.session.timeout=3000"
).
run
((
context
)
->
{
assertThat
(
getSessionTimeout
(
repository
)).
isEqualTo
(
3000
);
MapSessionRepository
repository
=
validateSessionRepository
(
context
,
MapSessionRepository
.
class
);
assertThat
(
getSessionTimeout
(
repository
)).
isEqualTo
(
3000
);
});
}
}
@Test
@Test
public
void
springSessionTimeoutIsNotAValidProperty
()
{
public
void
springSessionTimeoutIsNotAValidProperty
()
{
this
.
thrown
.
expect
(
BeanCreationException
.
class
);
this
.
contextRunner
.
withPropertyValues
(
"spring.session.store-type=hash-map"
,
this
.
thrown
.
expectMessage
(
"Could not bind"
);
"spring.session.timeout=3000"
).
run
((
context
)
->
{
load
(
"spring.session.store-type=hash-map"
,
"spring.session.timeout=3000"
);
assertThat
(
context
).
hasFailed
();
assertThat
(
context
).
getFailure
().
isInstanceOf
(
BeanCreationException
.
class
);
assertThat
(
context
).
getFailure
().
hasMessageContaining
(
"Could not bind"
);
});
}
}
@SuppressWarnings
(
"unchecked"
)
@SuppressWarnings
(
"unchecked"
)
@Test
@Test
public
void
filterIsRegisteredWithAsyncErrorAndRequestDispatcherTypes
()
{
public
void
filterIsRegisteredWithAsyncErrorAndRequestDispatcherTypes
()
{
load
(
"spring.session.store-type=hash-map"
);
this
.
contextRunner
.
withPropertyValues
(
FilterRegistrationBean
<?>
registration
=
this
.
context
"spring.session.store-type=hash-map"
).
run
((
context
)
->
{
.
getBean
(
FilterRegistrationBean
.
class
);
FilterRegistrationBean
<?>
registration
=
context
assertThat
(
registration
.
getFilter
())
.
getBean
(
FilterRegistrationBean
.
class
);
.
isSameAs
(
this
.
context
.
getBean
(
SessionRepositoryFilter
.
class
));
assertThat
(
registration
.
getFilter
())
assertThat
((
EnumSet
<
DispatcherType
>)
ReflectionTestUtils
.
getField
(
registration
,
.
isSameAs
(
context
.
getBean
(
SessionRepositoryFilter
.
class
));
"dispatcherTypes"
)).
containsOnly
(
DispatcherType
.
ASYNC
,
assertThat
((
EnumSet
<
DispatcherType
>)
ReflectionTestUtils
.
getField
(
registration
,
DispatcherType
.
ERROR
,
DispatcherType
.
REQUEST
);
"dispatcherTypes"
)).
containsOnly
(
DispatcherType
.
ASYNC
,
DispatcherType
.
ERROR
,
DispatcherType
.
REQUEST
);
});
}
}
@Test
@Test
public
void
filterOrderCanBeCustomized
()
{
public
void
filterOrderCanBeCustomized
()
{
load
(
"spring.session.store-type=hash-map"
,
this
.
contextRunner
.
withPropertyValues
(
"spring.session.store-type=hash-map"
,
"spring.session.servlet.filter-order=123"
);
"spring.session.servlet.filter-order=123"
).
run
((
context
)
->
{
FilterRegistrationBean
<?>
registration
=
this
.
context
FilterRegistrationBean
<?>
registration
=
context
.
getBean
(
FilterRegistrationBean
.
class
);
.
getBean
(
FilterRegistrationBean
.
class
);
assertThat
(
registration
.
getOrder
()).
isEqualTo
(
123
);
assertThat
(
registration
.
getOrder
()).
isEqualTo
(
123
);
});
}
}
@SuppressWarnings
(
"unchecked"
)
@SuppressWarnings
(
"unchecked"
)
@Test
@Test
public
void
filterDispatcherTypesCanBeCustomized
()
{
public
void
filterDispatcherTypesCanBeCustomized
()
{
load
(
"spring.session.store-type=hash-map"
,
this
.
contextRunner
.
withPropertyValues
(
"spring.session.store-type=hash-map"
,
"spring.session.servlet.filter-dispatcher-types=error, request"
);
"spring.session.servlet.filter-dispatcher-types=error, request"
)
FilterRegistrationBean
<?>
registration
=
this
.
context
.
run
((
context
)
->
{
.
getBean
(
FilterRegistrationBean
.
class
);
FilterRegistrationBean
<?>
registration
=
context
assertThat
((
EnumSet
<
DispatcherType
>)
ReflectionTestUtils
.
getField
(
registration
,
.
getBean
(
FilterRegistrationBean
.
class
);
"dispatcherTypes"
)).
containsOnly
(
DispatcherType
.
ERROR
,
assertThat
((
EnumSet
<
DispatcherType
>)
ReflectionTestUtils
.
getField
(
registration
,
DispatcherType
.
REQUEST
);
"dispatcherTypes"
)).
containsOnly
(
DispatcherType
.
ERROR
,
DispatcherType
.
REQUEST
);
});
}
}
@Configuration
@Configuration
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment