diff options
author | Bjørn Christian Seime <bjorncs@oath.com> | 2018-10-30 13:39:55 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@oath.com> | 2018-10-30 13:39:55 +0100 |
commit | f82663d75023486d3bbad4e7195afda37574fe8d (patch) | |
tree | dfd5bcf153edfd14be527e6a13b90e236a936dab /security-utils | |
parent | af146b406da7911a0e035ea3bf184680b31bac9b (diff) |
Add TransportSecurityOptions.fromJson(String)
Diffstat (limited to 'security-utils')
-rw-r--r-- | security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java | 23 | ||||
-rw-r--r-- | security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java | 11 |
2 files changed, 28 insertions, 6 deletions
diff --git a/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java b/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java index f0d1edd6889..67466179634 100644 --- a/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java +++ b/security-utils/src/main/java/com/yahoo/security/tls/TransportSecurityOptions.java @@ -48,17 +48,28 @@ public class TransportSecurityOptions { public static TransportSecurityOptions fromJsonFile(Path file) { try { - JsonNode root = mapper.readTree(file.toFile()); - JsonNode filesNode = getField(root, "files"); - String privateKeyFile = getField(filesNode, "private-key").asText(); - String certificatesFile = getField(filesNode, "certificates").asText(); - String caCertificatesFile = getField(filesNode, "ca-certificates").asText(); - return new TransportSecurityOptions(privateKeyFile, certificatesFile, caCertificatesFile); + return fromJsonNode(mapper.readTree(file.toFile())); } catch (IOException e) { throw new UncheckedIOException(e); } } + public static TransportSecurityOptions fromJson(String json) { + try { + return fromJsonNode(mapper.readTree(json)); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + + private static TransportSecurityOptions fromJsonNode(JsonNode root) { + JsonNode filesNode = getField(root, "files"); + String privateKeyFile = getField(filesNode, "private-key").asText(); + String certificatesFile = getField(filesNode, "certificates").asText(); + String caCertificatesFile = getField(filesNode, "ca-certificates").asText(); + return new TransportSecurityOptions(privateKeyFile, certificatesFile, caCertificatesFile); + } + private static JsonNode getField(JsonNode root, String fieldName) { return Optional.ofNullable(root.get(fieldName)) .orElseThrow(() -> new IllegalArgumentException(String.format("'%s' field missing", fieldName))); diff --git a/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java b/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java index f311651cab0..84f71cf8fc2 100644 --- a/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java +++ b/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java @@ -3,6 +3,9 @@ package com.yahoo.security.tls; import org.junit.Test; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -22,4 +25,12 @@ public class TransportSecurityOptionsTest { assertEquals(expectedOptions, actualOptions); } + @Test + public void can_read_options_from_json() throws IOException { + String tlsJson = new String(Files.readAllBytes(TEST_CONFIG_FILE), StandardCharsets.UTF_8); + TransportSecurityOptions expectedOptions = new TransportSecurityOptions("myhost.key", "certs.pem", "my_cas.pem"); + TransportSecurityOptions actualOptions = TransportSecurityOptions.fromJson(tlsJson); + assertEquals(expectedOptions, actualOptions); + } + } |