From 3a1166e7adfcacaf7d497839de9f14a084d3e947 Mon Sep 17 00:00:00 2001 From: Vedran Pavic Date: Sat, 10 Sep 2016 13:37:16 +0200 Subject: [PATCH] Improve JDBC integration tests --- gradle.properties | 2 +- spring-session/build.gradle | 2 + ...dbcOperationsSessionRepositoryITests.java} | 17 ++---- ...JdbcOperationsSessionRepositoryITests.java | 54 +++++++++++++++++++ ...JdbcOperationsSessionRepositoryITests.java | 54 +++++++++++++++++++ ...JdbcOperationsSessionRepositoryITests.java | 54 +++++++++++++++++++ 6 files changed, 168 insertions(+), 15 deletions(-) rename spring-session/src/integration-test/java/org/springframework/session/jdbc/{JdbcOperationsSessionRepositoryITests.java => AbstractJdbcOperationsSessionRepositoryITests.java} (96%) create mode 100644 spring-session/src/integration-test/java/org/springframework/session/jdbc/DerbyJdbcOperationsSessionRepositoryITests.java create mode 100644 spring-session/src/integration-test/java/org/springframework/session/jdbc/H2JdbcOperationsSessionRepositoryITests.java create mode 100644 spring-session/src/integration-test/java/org/springframework/session/jdbc/HsqldbJdbcOperationsSessionRepositoryITests.java diff --git a/gradle.properties b/gradle.properties index 15da49e70..fb84c59cc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,7 +17,7 @@ springSecurityVersion=4.0.3.RELEASE springVersion=4.2.5.RELEASE httpClientVersion=4.5.1 jedisVersion=2.8.1 -h2Version=1.4.191 +h2Version=1.4.192 springDataMongoVersion=1.9.1.RELEASE springShellVersion=1.1.0.RELEASE springDataGemFireVersion=1.8.1.RELEASE diff --git a/spring-session/build.gradle b/spring-session/build.gradle index 394fbffa3..252976152 100644 --- a/spring-session/build.gradle +++ b/spring-session/build.gradle @@ -31,6 +31,8 @@ dependencies { "org.apache.commons:commons-pool2:2.2", "com.hazelcast:hazelcast-client:$hazelcastVersion", "com.h2database:h2:$h2Version", + "org.hsqldb:hsqldb:2.3.3", + "org.apache.derby:derby:10.12.1.1", "de.flapdoodle.embed:de.flapdoodle.embed.mongo:1.50.2" integrationTestRuntime "org.springframework.shell:spring-shell:1.0.0.RELEASE" diff --git a/spring-session/src/integration-test/java/org/springframework/session/jdbc/JdbcOperationsSessionRepositoryITests.java b/spring-session/src/integration-test/java/org/springframework/session/jdbc/AbstractJdbcOperationsSessionRepositoryITests.java similarity index 96% rename from spring-session/src/integration-test/java/org/springframework/session/jdbc/JdbcOperationsSessionRepositoryITests.java rename to spring-session/src/integration-test/java/org/springframework/session/jdbc/AbstractJdbcOperationsSessionRepositoryITests.java index d09e427e0..4b9757bc3 100644 --- a/spring-session/src/integration-test/java/org/springframework/session/jdbc/JdbcOperationsSessionRepositoryITests.java +++ b/spring-session/src/integration-test/java/org/springframework/session/jdbc/AbstractJdbcOperationsSessionRepositoryITests.java @@ -27,11 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DataSourceTransactionManager; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.authority.AuthorityUtils; @@ -51,7 +47,7 @@ import static org.assertj.core.api.Assertions.assertThat; /** - * Integration tests for {@link JdbcOperationsSessionRepository}. + * Abstract base class for {@link JdbcOperationsSessionRepository} integration tests. * * @author Vedran Pavic * @since 1.2.0 @@ -59,7 +55,7 @@ @WebAppConfiguration @ContextConfiguration @RunWith(SpringJUnit4ClassRunner.class) -public class JdbcOperationsSessionRepositoryITests { +public abstract class AbstractJdbcOperationsSessionRepositoryITests { private static final String SPRING_SECURITY_CONTEXT = "SPRING_SECURITY_CONTEXT"; @@ -554,15 +550,8 @@ private String getChangedSecurityName() { return this.changedContext.getAuthentication().getName(); } - @Configuration @EnableJdbcHttpSession - static class Config { - - @Bean - public EmbeddedDatabase dataSource() { - return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2) - .addScript("org/springframework/session/jdbc/schema-h2.sql").build(); - } + protected static class BaseConfig { @Bean public PlatformTransactionManager transactionManager(DataSource dataSource) { diff --git a/spring-session/src/integration-test/java/org/springframework/session/jdbc/DerbyJdbcOperationsSessionRepositoryITests.java b/spring-session/src/integration-test/java/org/springframework/session/jdbc/DerbyJdbcOperationsSessionRepositoryITests.java new file mode 100644 index 000000000..ac337112f --- /dev/null +++ b/spring-session/src/integration-test/java/org/springframework/session/jdbc/DerbyJdbcOperationsSessionRepositoryITests.java @@ -0,0 +1,54 @@ +/* + * Copyright 2014-2016 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.session.jdbc; + +import org.junit.runner.RunWith; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +/** + * Integration tests for {@link JdbcOperationsSessionRepository} using Derby database. + * + * @author Vedran Pavic + */ +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration +public class DerbyJdbcOperationsSessionRepositoryITests + extends AbstractJdbcOperationsSessionRepositoryITests { + + @Configuration + static class Config extends BaseConfig { + + @Bean + public EmbeddedDatabase dataSource() { + return new EmbeddedDatabaseBuilder() + .setType(EmbeddedDatabaseType.DERBY) + .addScript("org/springframework/session/jdbc/schema-derby.sql") + .build(); + } + + } + +} diff --git a/spring-session/src/integration-test/java/org/springframework/session/jdbc/H2JdbcOperationsSessionRepositoryITests.java b/spring-session/src/integration-test/java/org/springframework/session/jdbc/H2JdbcOperationsSessionRepositoryITests.java new file mode 100644 index 000000000..2b3f18d42 --- /dev/null +++ b/spring-session/src/integration-test/java/org/springframework/session/jdbc/H2JdbcOperationsSessionRepositoryITests.java @@ -0,0 +1,54 @@ +/* + * Copyright 2014-2016 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.session.jdbc; + +import org.junit.runner.RunWith; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +/** + * Integration tests for {@link JdbcOperationsSessionRepository} using H2 database. + * + * @author Vedran Pavic + */ +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration +public class H2JdbcOperationsSessionRepositoryITests + extends AbstractJdbcOperationsSessionRepositoryITests { + + @Configuration + static class Config extends BaseConfig { + + @Bean + public EmbeddedDatabase dataSource() { + return new EmbeddedDatabaseBuilder() + .setType(EmbeddedDatabaseType.H2) + .addScript("org/springframework/session/jdbc/schema-h2.sql") + .build(); + } + + } + +} diff --git a/spring-session/src/integration-test/java/org/springframework/session/jdbc/HsqldbJdbcOperationsSessionRepositoryITests.java b/spring-session/src/integration-test/java/org/springframework/session/jdbc/HsqldbJdbcOperationsSessionRepositoryITests.java new file mode 100644 index 000000000..bad6d4bb1 --- /dev/null +++ b/spring-session/src/integration-test/java/org/springframework/session/jdbc/HsqldbJdbcOperationsSessionRepositoryITests.java @@ -0,0 +1,54 @@ +/* + * Copyright 2014-2016 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.session.jdbc; + +import org.junit.runner.RunWith; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.WebAppConfiguration; + +/** + * Integration tests for {@link JdbcOperationsSessionRepository} using HSQLDB database. + * + * @author Vedran Pavic + */ +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration +public class HsqldbJdbcOperationsSessionRepositoryITests + extends AbstractJdbcOperationsSessionRepositoryITests { + + @Configuration + static class Config extends BaseConfig { + + @Bean + public EmbeddedDatabase dataSource() { + return new EmbeddedDatabaseBuilder() + .setType(EmbeddedDatabaseType.HSQL) + .addScript("org/springframework/session/jdbc/schema-hsqldb.sql") + .build(); + } + + } + +}