From 9fedb3f88b9fc542dbbe65cf981a37e5ab8855d4 Mon Sep 17 00:00:00 2001 From: Stefan Kalscheuer Date: Sun, 20 Oct 2019 13:48:41 +0200 Subject: [PATCH] replace legacy JUnit 4 rule for system mock by custom helper --- pom.xml | 6 --- .../HTTPVaultConnectorBuilderTest.java | 16 ++---- .../HTTPVaultConnectorFactoryTest.java | 16 ++---- .../response/SecretListResponseTest.java | 3 +- .../connector/test/EnvironmentMock.java | 51 +++++++++++++++++++ 5 files changed, 62 insertions(+), 30 deletions(-) create mode 100644 src/test/java/de/stklcode/jvault/connector/test/EnvironmentMock.java diff --git a/pom.xml b/pom.xml index 4caf6a8..2de73e6 100644 --- a/pom.xml +++ b/pom.xml @@ -137,12 +137,6 @@ 2.1 test - - com.github.stefanbirkner - system-rules - 1.17.2 - test - org.mockito mockito-core diff --git a/src/test/java/de/stklcode/jvault/connector/builder/HTTPVaultConnectorBuilderTest.java b/src/test/java/de/stklcode/jvault/connector/builder/HTTPVaultConnectorBuilderTest.java index c1b657b..788301e 100644 --- a/src/test/java/de/stklcode/jvault/connector/builder/HTTPVaultConnectorBuilderTest.java +++ b/src/test/java/de/stklcode/jvault/connector/builder/HTTPVaultConnectorBuilderTest.java @@ -19,11 +19,9 @@ package de.stklcode.jvault.connector.builder; import de.stklcode.jvault.connector.HTTPVaultConnector; import de.stklcode.jvault.connector.exception.TlsException; import de.stklcode.jvault.connector.exception.VaultConnectorException; -import org.junit.Rule; -import org.junit.contrib.java.lang.system.EnvironmentVariables; +import de.stklcode.jvault.connector.test.EnvironmentMock; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport; import java.io.File; import java.io.IOException; @@ -40,7 +38,6 @@ import static org.junit.jupiter.api.Assertions.fail; * @author Stefan Kalscheuer * @since 0.8.0 */ -@EnableRuleMigrationSupport public class HTTPVaultConnectorBuilderTest { private static final String VAULT_ADDR = "https://localhost:8201"; private static final Integer VAULT_MAX_RETRIES = 13; @@ -49,9 +46,6 @@ public class HTTPVaultConnectorBuilderTest { @TempDir File tempDir; - @Rule - public final EnvironmentVariables environment = new EnvironmentVariables(); - /** * Test building from environment variables */ @@ -112,10 +106,10 @@ public class HTTPVaultConnectorBuilderTest { } private void setenv(String vault_addr, String vault_cacert, String vault_max_retries, String vault_token) { - environment.set("VAULT_ADDR", vault_addr); - environment.set("VAULT_CACERT", vault_cacert); - environment.set("VAULT_MAX_RETRIES", vault_max_retries); - environment.set("VAULT_TOKEN", vault_token); + EnvironmentMock.setenv("VAULT_ADDR", vault_addr); + EnvironmentMock.setenv("VAULT_CACERT", vault_cacert); + EnvironmentMock.setenv("VAULT_MAX_RETRIES", vault_max_retries); + EnvironmentMock.setenv("VAULT_TOKEN", vault_token); } private Object getRequestHelperPrivate(HTTPVaultConnector connector, String fieldName) throws NoSuchFieldException, IllegalAccessException { diff --git a/src/test/java/de/stklcode/jvault/connector/factory/HTTPVaultConnectorFactoryTest.java b/src/test/java/de/stklcode/jvault/connector/factory/HTTPVaultConnectorFactoryTest.java index 8c9b7ca..de4fb95 100644 --- a/src/test/java/de/stklcode/jvault/connector/factory/HTTPVaultConnectorFactoryTest.java +++ b/src/test/java/de/stklcode/jvault/connector/factory/HTTPVaultConnectorFactoryTest.java @@ -19,11 +19,9 @@ package de.stklcode.jvault.connector.factory; import de.stklcode.jvault.connector.HTTPVaultConnector; import de.stklcode.jvault.connector.exception.TlsException; import de.stklcode.jvault.connector.exception.VaultConnectorException; -import org.junit.Rule; -import org.junit.contrib.java.lang.system.EnvironmentVariables; +import de.stklcode.jvault.connector.test.EnvironmentMock; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport; import java.io.File; import java.io.IOException; @@ -40,7 +38,6 @@ import static org.junit.jupiter.api.Assertions.fail; * @author Stefan Kalscheuer * @since 0.6.0 */ -@EnableRuleMigrationSupport public class HTTPVaultConnectorFactoryTest { private static String VAULT_ADDR = "https://localhost:8201"; private static Integer VAULT_MAX_RETRIES = 13; @@ -49,9 +46,6 @@ public class HTTPVaultConnectorFactoryTest { @TempDir File tempDir; - @Rule - public final EnvironmentVariables environment = new EnvironmentVariables(); - /** * Test building from environment variables */ @@ -112,10 +106,10 @@ public class HTTPVaultConnectorFactoryTest { } private void setenv(String vault_addr, String vault_cacert, String vault_max_retries, String vault_token) { - environment.set("VAULT_ADDR", vault_addr); - environment.set("VAULT_CACERT", vault_cacert); - environment.set("VAULT_MAX_RETRIES", vault_max_retries); - environment.set("VAULT_TOKEN", vault_token); + EnvironmentMock.setenv("VAULT_ADDR", vault_addr); + EnvironmentMock.setenv("VAULT_CACERT", vault_cacert); + EnvironmentMock.setenv("VAULT_MAX_RETRIES", vault_max_retries); + EnvironmentMock.setenv("VAULT_TOKEN", vault_token); } private Object getRequestHelperPrivate(HTTPVaultConnector connector, String fieldName) throws NoSuchFieldException, IllegalAccessException { diff --git a/src/test/java/de/stklcode/jvault/connector/model/response/SecretListResponseTest.java b/src/test/java/de/stklcode/jvault/connector/model/response/SecretListResponseTest.java index d659985..93dacb7 100644 --- a/src/test/java/de/stklcode/jvault/connector/model/response/SecretListResponseTest.java +++ b/src/test/java/de/stklcode/jvault/connector/model/response/SecretListResponseTest.java @@ -26,7 +26,7 @@ import java.util.Map; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.*; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; /** * JUnit Test for {@link SecretListResponse} model. @@ -50,7 +50,6 @@ public class SecretListResponseTest { * @throws InvalidResponseException Should not occur */ @Test - @SuppressWarnings("unchecked") public void getKeysTest() throws InvalidResponseException { // Create empty Object. SecretListResponse res = new SecretListResponse(); diff --git a/src/test/java/de/stklcode/jvault/connector/test/EnvironmentMock.java b/src/test/java/de/stklcode/jvault/connector/test/EnvironmentMock.java new file mode 100644 index 0000000..582e056 --- /dev/null +++ b/src/test/java/de/stklcode/jvault/connector/test/EnvironmentMock.java @@ -0,0 +1,51 @@ +/* + * Copyright 2016-2019 Stefan Kalscheuer + * + * 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 de.stklcode.jvault.connector.test; + +import java.lang.reflect.Field; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.fail; + +/** + * Test helper to modify system environment. + * + * @author Stefan Kalscheuer + */ +@SuppressWarnings("unchecked") +public class EnvironmentMock { + private static Map environment; + + static { + try { + Map originalEnv = System.getenv(); + Field mapField = originalEnv.getClass().getDeclaredField("m"); + mapField.setAccessible(true); + environment = (Map) mapField.get(originalEnv); + } catch (NoSuchFieldException | IllegalAccessException | ClassCastException e) { + fail("Failed to intercept unmodifiable system environment"); + } + } + + public static void setenv(String key, String value) { + if (value != null) { + environment.put(key, value); + } else { + environment.remove(key); + } + } +}