Skip to content

Commit a6715a7

Browse files
committed
test: Add parameterized tests in Hibernate- and HikariContext #1587
1 parent be6de40 commit a6715a7

File tree

3 files changed

+49
-1
lines changed

3 files changed

+49
-1
lines changed

backend/src/main/java/ch/puzzle/okr/multitenancy/HibernateContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public static void setHibernateConfig(DbConfig dbConfig) {
3838
public static void extractAndSetHibernateConfig(ConfigurableEnvironment environment) {
3939
DbConfig dbConfig = extractHibernateConfig(environment);
4040
if (!dbConfig.isValid()) {
41-
throw new HibernateContextException("Invalid hikari configuration " + dbConfig);
41+
throw new HibernateContextException("Invalid hibernate configuration" + dbConfig);
4242
}
4343
HibernateContext.setHibernateConfig(dbConfig);
4444
}

backend/src/test/java/ch/puzzle/okr/multitenancy/HibernateContextTest.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@
77

88
import ch.puzzle.okr.exception.HibernateContextException;
99
import java.util.Properties;
10+
import java.util.stream.Stream;
1011
import org.junit.jupiter.api.BeforeEach;
1112
import org.junit.jupiter.api.DisplayName;
1213
import org.junit.jupiter.api.Test;
14+
import org.junit.jupiter.params.ParameterizedTest;
15+
import org.junit.jupiter.params.provider.Arguments;
16+
import org.junit.jupiter.params.provider.MethodSource;
1317
import org.springframework.core.env.ConfigurableEnvironment;
1418

1519
class HibernateContextTest {
@@ -19,6 +23,35 @@ void setUp() {
1923
HibernateContext.setHibernateConfig(null);
2024
}
2125

26+
private static Stream<Arguments> invalidDbConfig() {
27+
return Stream
28+
.of( //
29+
Arguments.of(null, "username", "password", "multiTenancy"), //
30+
Arguments.of("", "username", "password", "multiTenancy"), //
31+
Arguments.of("url", null, "password", "multiTenancy"), //
32+
Arguments.of("url", "", "password", "multiTenancy"), //
33+
Arguments.of("url", "username", null, "multiTenancy"), //
34+
Arguments.of("url", "username", "", "multiTenancy"), //
35+
Arguments.of("url", "username", "password", null), //
36+
Arguments.of("url", "username", "password", ""));
37+
}
38+
39+
@ParameterizedTest(name = "extractAndSetHibernateConfig() should throw an exception if dbConfig has null or empty values")
40+
@MethodSource("invalidDbConfig")
41+
void extractAndSetHibernateConfigShouldThrowExceptionIfDbConfigHasNullOrEmptyValues(String url, String username, String password, String multiTenancy) {
42+
// arrange
43+
ConfigurableEnvironment environment = mock(ConfigurableEnvironment.class);
44+
when(environment.getProperty(HIBERNATE_CONNECTION_URL)).thenReturn(url);
45+
when(environment.getProperty(HIBERNATE_CONNECTION_USERNAME)).thenReturn(username);
46+
when(environment.getProperty(HIBERNATE_CONNECTION_PASSWORD)).thenReturn(password);
47+
when(environment.getProperty(HIBERNATE_MULTITENANCY)).thenReturn(multiTenancy);
48+
49+
// act + assert
50+
HibernateContextException exception = assertThrows(HibernateContextException.class,
51+
() -> extractAndSetHibernateConfig(environment));
52+
assertTrue(exception.getMessage().startsWith("Invalid hibernate configuration"));
53+
}
54+
2255
@DisplayName("extractAndSetHibernateConfig() should extract hibernate properties from environment and set it")
2356
@Test
2457
void extractAndSetHibernateConfigShouldExtractHibernatePropertiesFromEnvironmentAndSetIt() {

backend/src/test/java/ch/puzzle/okr/multitenancy/HikariContextTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import org.junit.jupiter.api.BeforeEach;
1010
import org.junit.jupiter.api.DisplayName;
1111
import org.junit.jupiter.api.Test;
12+
import org.junit.jupiter.params.ParameterizedTest;
13+
import org.junit.jupiter.params.provider.NullAndEmptySource;
1214
import org.springframework.core.env.ConfigurableEnvironment;
1315

1416
public class HikariContextTest {
@@ -17,6 +19,19 @@ void setUp() {
1719
HikariContext.setHikariConfig(null);
1820
}
1921

22+
@ParameterizedTest(name = "extractAndSetHikariConfig() should throw an exception if dbConfig has null or empty values")
23+
@NullAndEmptySource
24+
void extractAndSetHikariConfigShouldThrowExceptionIfDbConfigHasNullOrEmptyValues(String maxPoolSize) {
25+
// arrange
26+
ConfigurableEnvironment environment = mock(ConfigurableEnvironment.class);
27+
when(environment.getProperty(HIKARI_MAXIMUM_POOL_SIZE)).thenReturn(maxPoolSize);
28+
29+
// act + assert
30+
HikariContextException exception = assertThrows(HikariContextException.class,
31+
() -> extractAndSetHikariConfig(environment));
32+
assertTrue(exception.getMessage().startsWith("Invalid hikari configuration"));
33+
}
34+
2035
@DisplayName("extractAndSetHikariConfig() should extract hikari properties from environment and set it")
2136
@Test
2237
void extractAndSetHikariConfigShouldExtractHikariPropertiesFromEnvironmentAndSetIt() {

0 commit comments

Comments
 (0)