diff --git a/pom.xml b/pom.xml index b3eff8b..8753e62 100644 --- a/pom.xml +++ b/pom.xml @@ -299,6 +299,18 @@ + + org.apache.maven.plugins + maven-surefire-plugin + + + + SIGN_KEY + SIGN_KEY_ID + SIGN_KEY_PASS + + + org.apache.maven.plugins maven-dependency-plugin @@ -358,6 +370,11 @@ src/it/settings.xml true true + + + + + diff --git a/src/main/java/org/simplify4u/plugins/sign/openpgp/PGPKeyInfo.java b/src/main/java/org/simplify4u/plugins/sign/openpgp/PGPKeyInfo.java index 9f6501b..02b3cd3 100644 --- a/src/main/java/org/simplify4u/plugins/sign/openpgp/PGPKeyInfo.java +++ b/src/main/java/org/simplify4u/plugins/sign/openpgp/PGPKeyInfo.java @@ -50,20 +50,31 @@ public class PGPKeyInfo { @Builder private PGPKeyInfo(String keyId, String keyPass, File keyFile) { - id = Optional.ofNullable(Optional.ofNullable(System.getenv(SIGN_KEY_ID_ENV)).orElse(keyId)) + id = Optional.ofNullable(stringFromEnv(SIGN_KEY_ID_ENV).orElse(keyId)) .map(PGPKeyInfo::parseKeyId) .orElse(null); - pass = Optional.ofNullable(Optional.ofNullable(System.getenv(SIGN_KEY_PASS_ENV)).orElse(keyPass)) + pass = Optional.ofNullable(stringFromEnv(SIGN_KEY_PASS_ENV).orElse(keyPass)) .map(String::toCharArray) .orElse(null); - key = Optional.ofNullable(System.getenv(SIGN_KEY_ENV)) + key = stringFromEnv(SIGN_KEY_ENV) .map(String::trim) .map(PGPKeyInfo::keyFromString) .orElseGet(() -> keyFromFile(keyFile)); } + /** + * Read environment variable and filter by "null" string - this value is set be invoker-maven-plugin. + * + * @param environmentName a environment variable name + * @return content of environment variable or empty if not exist. + */ + private static Optional stringFromEnv(String environmentName) { + return Optional.ofNullable(System.getenv(environmentName)) + .filter(s -> !"null".equals(s)); + } + private static InputStream keyFromFile(File keyFile) { if (!keyFile.exists()) { diff --git a/src/test/java/org/simplify4u/plugins/sign/openpgp/PGPKeyInfoTest.java b/src/test/java/org/simplify4u/plugins/sign/openpgp/PGPKeyInfoTest.java index 727b70f..df14bc5 100644 --- a/src/test/java/org/simplify4u/plugins/sign/openpgp/PGPKeyInfoTest.java +++ b/src/test/java/org/simplify4u/plugins/sign/openpgp/PGPKeyInfoTest.java @@ -108,4 +108,18 @@ void invalidKeyIdThrowException() { .hasMessageStartingWith("Invalid keyId: For input string: \"xxx\"") .hasNoCause(); } + + @Test + @SetEnvironmentVariable(key = "SIGN_KEY", value = "signKey from environment") + @SetEnvironmentVariable(key = "SIGN_KEY_ID", value = "null") + void nullStringInEnvironmentValueShouldBeFiltered() { + // when + PGPKeyInfo keyInfo = PGPKeyInfo.builder() + .build(); + + // then + assertThat(keyInfo.getId()).isNull(); + assertThat(keyInfo.getPass()).isNull(); + assertThat(keyInfo.getKey()).hasContent("signKey from environment"); + } }