JAMES-1958 Rename HttpsConfiguration to TlsConfiguration
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9db1633a Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9db1633a Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9db1633a Branch: refs/heads/master Commit: 9db1633a54787945706da2a4b3edd746f4757f74 Parents: 642be79 Author: benwa <btell...@linagora.com> Authored: Mon Mar 13 17:31:26 2017 +0700 Committer: benwa <btell...@linagora.com> Committed: Wed Mar 15 09:02:31 2017 +0700 ---------------------------------------------------------------------- .../modules/server/WebAdminServerModule.java | 8 +- .../james/webadmin/HttpsConfiguration.java | 148 ------------------- .../apache/james/webadmin/TlsConfiguration.java | 148 +++++++++++++++++++ .../james/webadmin/WebAdminConfiguration.java | 22 +-- .../apache/james/webadmin/WebAdminServer.java | 16 +- .../james/webadmin/HttpsConfigurationTest.java | 101 ------------- .../james/webadmin/TlsConfigurationTest.java | 101 +++++++++++++ .../webadmin/WebAdminConfigurationTest.java | 16 +- 8 files changed, 278 insertions(+), 282 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/9db1633a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java b/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java index c100dcb..431d0d5 100644 --- a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java +++ b/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java @@ -33,7 +33,7 @@ import org.apache.james.utils.GuiceProbe; import org.apache.james.utils.PropertiesProvider; import org.apache.james.utils.WebAdminGuiceProbe; import org.apache.james.webadmin.FixedPort; -import org.apache.james.webadmin.HttpsConfiguration; +import org.apache.james.webadmin.TlsConfiguration; import org.apache.james.webadmin.Routes; import org.apache.james.webadmin.WebAdminConfiguration; import org.apache.james.webadmin.WebAdminServer; @@ -112,10 +112,10 @@ public class WebAdminServerModule extends AbstractModule { } } - private HttpsConfiguration readHttpsConfiguration(PropertiesConfiguration configurationFile) { + private TlsConfiguration readHttpsConfiguration(PropertiesConfiguration configurationFile) { boolean enabled = configurationFile.getBoolean("https.enabled", DEFAULT_HTTPS_DISABLED); if (enabled) { - return HttpsConfiguration.builder() + return TlsConfiguration.builder() .enabled() .raw(configurationFile.getString("https.keystore", DEFAULT_NO_KEYSTORE), configurationFile.getString("https.password", DEFAULT_NO_PASSWORD), @@ -123,7 +123,7 @@ public class WebAdminServerModule extends AbstractModule { configurationFile.getString("https.trust.password", DEFAULT_NO_TRUST_PASSWORD)) .build(); } - return HttpsConfiguration.builder() + return TlsConfiguration.builder() .disabled() .build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/9db1633a/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/HttpsConfiguration.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/HttpsConfiguration.java b/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/HttpsConfiguration.java deleted file mode 100644 index 3c6a49e..0000000 --- a/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/HttpsConfiguration.java +++ /dev/null @@ -1,148 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you 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.apache.james.webadmin; - -import java.util.Objects; -import java.util.Optional; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -public class HttpsConfiguration { - - public static Builder builder() { - return new Builder(); - } - - public static class Builder { - private Optional<Boolean> enabled = Optional.empty(); - private String keystoreFilePath; - private String keystorePassword; - private String truststoreFilePath; - private String truststorePassword; - - public Builder enable(boolean isEnabled) { - this.enabled = Optional.of(isEnabled); - return this; - } - - public Builder enabled() { - return enable(true); - } - - public Builder disabled() { - return enable(false); - } - - public Builder raw(String keystoreFilePath, - String keystorePassword, - String truststoreFilePath, - String truststorePassword){ - Preconditions.checkNotNull(keystoreFilePath); - Preconditions.checkNotNull(keystorePassword); - - this.keystoreFilePath = keystoreFilePath; - this.keystorePassword = keystorePassword; - this.truststoreFilePath = truststoreFilePath; - this.truststorePassword = truststorePassword; - return this; - } - - public Builder selfSigned(String keystoreFilePath, String keystorePassword){ - Preconditions.checkNotNull(keystoreFilePath); - Preconditions.checkNotNull(keystorePassword); - - this.enabled = Optional.of(true); - this.keystoreFilePath = keystoreFilePath; - this.keystorePassword = keystorePassword; - return this; - } - - public HttpsConfiguration build() { - Preconditions.checkState(enabled.isPresent(), "You need to specify if https is enabled"); - Preconditions.checkState(!enabled.get() || hasKeystoreInformation(), "If enabled, you need to provide keystore information"); - Preconditions.checkState(optionalHasTrustStoreInformation(), "You need to provide both information about trustStore"); - return new HttpsConfiguration(enabled.get(), keystoreFilePath, keystorePassword, truststoreFilePath, truststorePassword); - } - - private boolean optionalHasTrustStoreInformation() { - return (truststoreFilePath == null) == (truststorePassword == null); - } - - private boolean hasKeystoreInformation() { - return keystorePassword != null && keystoreFilePath != null; - } - - } - - private final boolean enabled; - private final String keystoreFilePath; - private final String keystorePassword; - private final String truststoreFilePath; - private final String truststorePassword; - - @VisibleForTesting - HttpsConfiguration(boolean enabled, String keystoreFilePath, String keystorePassword, String truststoreFilePath, String truststorePassword) { - this.enabled = enabled; - this.keystoreFilePath = keystoreFilePath; - this.keystorePassword = keystorePassword; - this.truststoreFilePath = truststoreFilePath; - this.truststorePassword = truststorePassword; - } - - public boolean isEnabled() { - return enabled; - } - - public String getKeystoreFilePath() { - return keystoreFilePath; - } - - public String getKeystorePassword() { - return keystorePassword; - } - - public String getTruststoreFilePath() { - return truststoreFilePath; - } - - public String getTruststorePassword() { - return truststorePassword; - } - - @Override - public final boolean equals(Object o) { - if (o instanceof HttpsConfiguration) { - HttpsConfiguration that = (HttpsConfiguration) o; - - return Objects.equals(this.enabled, that.enabled) - && Objects.equals(this.keystoreFilePath, that.keystoreFilePath) - && Objects.equals(this.keystorePassword, that.keystorePassword) - && Objects.equals(this.truststoreFilePath, that.truststoreFilePath) - && Objects.equals(this.truststorePassword, that.truststorePassword); - } - return false; - } - - @Override - public final int hashCode() { - return Objects.hash(enabled, keystoreFilePath, keystorePassword, truststoreFilePath, truststorePassword); - } -} http://git-wip-us.apache.org/repos/asf/james-project/blob/9db1633a/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/TlsConfiguration.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/TlsConfiguration.java b/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/TlsConfiguration.java new file mode 100644 index 0000000..78cc209 --- /dev/null +++ b/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/TlsConfiguration.java @@ -0,0 +1,148 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you 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.apache.james.webadmin; + +import java.util.Objects; +import java.util.Optional; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Preconditions; + +public class TlsConfiguration { + + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + private Optional<Boolean> enabled = Optional.empty(); + private String keystoreFilePath; + private String keystorePassword; + private String truststoreFilePath; + private String truststorePassword; + + public Builder enable(boolean isEnabled) { + this.enabled = Optional.of(isEnabled); + return this; + } + + public Builder enabled() { + return enable(true); + } + + public Builder disabled() { + return enable(false); + } + + public Builder raw(String keystoreFilePath, + String keystorePassword, + String truststoreFilePath, + String truststorePassword){ + Preconditions.checkNotNull(keystoreFilePath); + Preconditions.checkNotNull(keystorePassword); + + this.keystoreFilePath = keystoreFilePath; + this.keystorePassword = keystorePassword; + this.truststoreFilePath = truststoreFilePath; + this.truststorePassword = truststorePassword; + return this; + } + + public Builder selfSigned(String keystoreFilePath, String keystorePassword){ + Preconditions.checkNotNull(keystoreFilePath); + Preconditions.checkNotNull(keystorePassword); + + this.enabled = Optional.of(true); + this.keystoreFilePath = keystoreFilePath; + this.keystorePassword = keystorePassword; + return this; + } + + public TlsConfiguration build() { + Preconditions.checkState(enabled.isPresent(), "You need to specify if https is enabled"); + Preconditions.checkState(!enabled.get() || hasKeystoreInformation(), "If enabled, you need to provide keystore information"); + Preconditions.checkState(optionalHasTrustStoreInformation(), "You need to provide both information about trustStore"); + return new TlsConfiguration(enabled.get(), keystoreFilePath, keystorePassword, truststoreFilePath, truststorePassword); + } + + private boolean optionalHasTrustStoreInformation() { + return (truststoreFilePath == null) == (truststorePassword == null); + } + + private boolean hasKeystoreInformation() { + return keystorePassword != null && keystoreFilePath != null; + } + + } + + private final boolean enabled; + private final String keystoreFilePath; + private final String keystorePassword; + private final String truststoreFilePath; + private final String truststorePassword; + + @VisibleForTesting + TlsConfiguration(boolean enabled, String keystoreFilePath, String keystorePassword, String truststoreFilePath, String truststorePassword) { + this.enabled = enabled; + this.keystoreFilePath = keystoreFilePath; + this.keystorePassword = keystorePassword; + this.truststoreFilePath = truststoreFilePath; + this.truststorePassword = truststorePassword; + } + + public boolean isEnabled() { + return enabled; + } + + public String getKeystoreFilePath() { + return keystoreFilePath; + } + + public String getKeystorePassword() { + return keystorePassword; + } + + public String getTruststoreFilePath() { + return truststoreFilePath; + } + + public String getTruststorePassword() { + return truststorePassword; + } + + @Override + public final boolean equals(Object o) { + if (o instanceof TlsConfiguration) { + TlsConfiguration that = (TlsConfiguration) o; + + return Objects.equals(this.enabled, that.enabled) + && Objects.equals(this.keystoreFilePath, that.keystoreFilePath) + && Objects.equals(this.keystorePassword, that.keystorePassword) + && Objects.equals(this.truststoreFilePath, that.truststoreFilePath) + && Objects.equals(this.truststorePassword, that.truststorePassword); + } + return false; + } + + @Override + public final int hashCode() { + return Objects.hash(enabled, keystoreFilePath, keystorePassword, truststoreFilePath, truststorePassword); + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/9db1633a/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/WebAdminConfiguration.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/WebAdminConfiguration.java b/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/WebAdminConfiguration.java index c87589b..339b213 100644 --- a/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/WebAdminConfiguration.java +++ b/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/WebAdminConfiguration.java @@ -39,11 +39,11 @@ public class WebAdminConfiguration { private Optional<Boolean> enabled = Optional.empty(); private Port port; private Optional<Boolean> enableCORS = Optional.empty(); - private Optional<HttpsConfiguration> httpsConfiguration = Optional.empty(); + private Optional<TlsConfiguration> httpsConfiguration = Optional.empty(); private Optional<String> urlCORSOrigin = Optional.empty(); - public Builder https(HttpsConfiguration httpsConfiguration) { - this.httpsConfiguration = Optional.of(httpsConfiguration); + public Builder https(TlsConfiguration tlsConfiguration) { + this.httpsConfiguration = Optional.of(tlsConfiguration); return this; } @@ -88,7 +88,7 @@ public class WebAdminConfiguration { return new WebAdminConfiguration(enabled.get(), port, httpsConfiguration.orElse( - HttpsConfiguration.builder() + TlsConfiguration.builder() .disabled() .build()), enableCORS.orElse(DEFAULT_CORS_DISABLED), @@ -98,15 +98,15 @@ public class WebAdminConfiguration { private final boolean enabled; private final Port port; - private final HttpsConfiguration httpsConfiguration; + private final TlsConfiguration tlsConfiguration; private final boolean enableCORS; private final String urlCORSOrigin; @VisibleForTesting - WebAdminConfiguration(boolean enabled, Port port, HttpsConfiguration httpsConfiguration, boolean enableCORS, String urlCORSOrigin) { + WebAdminConfiguration(boolean enabled, Port port, TlsConfiguration tlsConfiguration, boolean enableCORS, String urlCORSOrigin) { this.enabled = enabled; this.port = port; - this.httpsConfiguration = httpsConfiguration; + this.tlsConfiguration = tlsConfiguration; this.enableCORS = enableCORS; this.urlCORSOrigin = urlCORSOrigin; } @@ -123,8 +123,8 @@ public class WebAdminConfiguration { return port; } - public HttpsConfiguration getHttpsConfiguration() { - return httpsConfiguration; + public TlsConfiguration getTlsConfiguration() { + return tlsConfiguration; } public boolean isEnableCORS() { @@ -138,7 +138,7 @@ public class WebAdminConfiguration { return Objects.equals(this.enabled, that.enabled) && Objects.equals(this.port, that.port) - && Objects.equals(this.httpsConfiguration, that.httpsConfiguration) + && Objects.equals(this.tlsConfiguration, that.tlsConfiguration) && Objects.equals(this.enableCORS, that.enableCORS) && Objects.equals(this.urlCORSOrigin, that.urlCORSOrigin); } @@ -147,6 +147,6 @@ public class WebAdminConfiguration { @Override public final int hashCode() { - return Objects.hash(enabled, port, httpsConfiguration, enableCORS, urlCORSOrigin); + return Objects.hash(enabled, port, tlsConfiguration, enableCORS, urlCORSOrigin); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/9db1633a/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/WebAdminServer.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/WebAdminServer.java b/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/WebAdminServer.java index e3fb368..e2144bf 100644 --- a/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/WebAdminServer.java +++ b/server/protocols/webadmin/src/main/java/org/apache/james/webadmin/WebAdminServer.java @@ -29,7 +29,6 @@ import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.HierarchicalConfiguration; import org.apache.james.lifecycle.api.Configurable; import org.apache.james.metrics.api.MetricFactory; -import org.apache.james.metrics.api.NoopMetricFactory; import org.apache.james.webadmin.authentication.AuthenticationFilter; import org.apache.james.webadmin.authentication.NoAuthenticationFilter; import org.apache.james.webadmin.metric.MetricPostFilter; @@ -41,9 +40,6 @@ import org.slf4j.LoggerFactory; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableSet; -import spark.Filter; -import spark.Request; -import spark.Response; import spark.Service; public class WebAdminServer implements Configurable { @@ -99,12 +95,12 @@ public class WebAdminServer implements Configurable { } private void configureHTTPS() { - HttpsConfiguration httpsConfiguration = configuration.getHttpsConfiguration(); - if (httpsConfiguration.isEnabled()) { - service.secure(httpsConfiguration.getKeystoreFilePath(), - httpsConfiguration.getKeystorePassword(), - httpsConfiguration.getTruststoreFilePath(), - httpsConfiguration.getTruststorePassword()); + TlsConfiguration tlsConfiguration = configuration.getTlsConfiguration(); + if (tlsConfiguration.isEnabled()) { + service.secure(tlsConfiguration.getKeystoreFilePath(), + tlsConfiguration.getKeystorePassword(), + tlsConfiguration.getTruststoreFilePath(), + tlsConfiguration.getTruststorePassword()); LOGGER.info("Web admin set up to use HTTPS"); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/9db1633a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/HttpsConfigurationTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/HttpsConfigurationTest.java b/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/HttpsConfigurationTest.java deleted file mode 100644 index 0d69cbe..0000000 --- a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/HttpsConfigurationTest.java +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you 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.apache.james.webadmin; - -import static org.assertj.core.api.Assertions.assertThat; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import nl.jqno.equalsverifier.EqualsVerifier; - -public class HttpsConfigurationTest { - - @Rule - public ExpectedException expectedException = ExpectedException.none(); - - @Test - public void buildShouldThrowWhenNotEnabled() { - expectedException.expect(IllegalStateException.class); - - HttpsConfiguration.builder().build(); - } - - @Test - public void buildShouldThrowWhenEnableWithoutKeystore() { - expectedException.expect(IllegalStateException.class); - - HttpsConfiguration.builder().enabled().build(); - } - - @Test - public void selfSignedShouldThrowOnNullKeyStorePath() { - expectedException.expect(NullPointerException.class); - - HttpsConfiguration.builder() - .enabled() - .selfSigned(null, "abc"); - } - - @Test - public void selfSignedShouldThrowOnNullKeyStorePassword() { - expectedException.expect(NullPointerException.class); - - HttpsConfiguration.builder() - .enabled() - .selfSigned("abc", null); - } - - @Test - public void buildShouldWorkOnDisabledHttps() { - assertThat( - HttpsConfiguration.builder() - .disabled() - .build()) - .isEqualTo(new HttpsConfiguration(false, null, null, null, null)); - } - - @Test - public void buildShouldWorkOnSelfSignedHttps() { - assertThat( - HttpsConfiguration.builder() - .enabled() - .selfSigned("abcd", "efgh") - .build()) - .isEqualTo(new HttpsConfiguration(true, "abcd", "efgh", null, null)); - } - - @Test - public void buildShouldWorkOnTrustedHttps() { - assertThat( - HttpsConfiguration.builder() - .enabled() - .raw("a", "b", "c", "d") - .build()) - .isEqualTo(new HttpsConfiguration(true, "a", "b", "c", "d")); - } - - @Test - public void shouldRespectBeanContract() { - EqualsVerifier.forClass(HttpsConfiguration.class).verify(); - } - -} http://git-wip-us.apache.org/repos/asf/james-project/blob/9db1633a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/TlsConfigurationTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/TlsConfigurationTest.java b/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/TlsConfigurationTest.java new file mode 100644 index 0000000..c21ddb7 --- /dev/null +++ b/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/TlsConfigurationTest.java @@ -0,0 +1,101 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you 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.apache.james.webadmin; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import nl.jqno.equalsverifier.EqualsVerifier; + +public class TlsConfigurationTest { + + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + @Test + public void buildShouldThrowWhenNotEnabled() { + expectedException.expect(IllegalStateException.class); + + TlsConfiguration.builder().build(); + } + + @Test + public void buildShouldThrowWhenEnableWithoutKeystore() { + expectedException.expect(IllegalStateException.class); + + TlsConfiguration.builder().enabled().build(); + } + + @Test + public void selfSignedShouldThrowOnNullKeyStorePath() { + expectedException.expect(NullPointerException.class); + + TlsConfiguration.builder() + .enabled() + .selfSigned(null, "abc"); + } + + @Test + public void selfSignedShouldThrowOnNullKeyStorePassword() { + expectedException.expect(NullPointerException.class); + + TlsConfiguration.builder() + .enabled() + .selfSigned("abc", null); + } + + @Test + public void buildShouldWorkOnDisabledHttps() { + assertThat( + TlsConfiguration.builder() + .disabled() + .build()) + .isEqualTo(new TlsConfiguration(false, null, null, null, null)); + } + + @Test + public void buildShouldWorkOnSelfSignedHttps() { + assertThat( + TlsConfiguration.builder() + .enabled() + .selfSigned("abcd", "efgh") + .build()) + .isEqualTo(new TlsConfiguration(true, "abcd", "efgh", null, null)); + } + + @Test + public void buildShouldWorkOnTrustedHttps() { + assertThat( + TlsConfiguration.builder() + .enabled() + .raw("a", "b", "c", "d") + .build()) + .isEqualTo(new TlsConfiguration(true, "a", "b", "c", "d")); + } + + @Test + public void shouldRespectBeanContract() { + EqualsVerifier.forClass(TlsConfiguration.class).verify(); + } + +} http://git-wip-us.apache.org/repos/asf/james-project/blob/9db1633a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/WebAdminConfigurationTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/WebAdminConfigurationTest.java b/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/WebAdminConfigurationTest.java index 4606e94..48df15e 100644 --- a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/WebAdminConfigurationTest.java +++ b/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/WebAdminConfigurationTest.java @@ -48,7 +48,7 @@ public class WebAdminConfigurationTest { .build()) .isEqualTo(new WebAdminConfiguration(false, null, - HttpsConfiguration.builder().disabled().build(), + TlsConfiguration.builder().disabled().build(), false, "*")); } @@ -70,14 +70,14 @@ public class WebAdminConfigurationTest { .isEqualTo(new WebAdminConfiguration( true, PORT, - HttpsConfiguration.builder().disabled().build(), + TlsConfiguration.builder().disabled().build(), false, "*")); } @Test public void builderShouldAcceptHttps() { - HttpsConfiguration httpsConfiguration = HttpsConfiguration.builder() + TlsConfiguration tlsConfiguration = TlsConfiguration.builder() .enable(true) .selfSigned("abcd", "efgh") .build(); @@ -85,13 +85,13 @@ public class WebAdminConfigurationTest { assertThat( WebAdminConfiguration.builder() .enabled() - .https(httpsConfiguration) + .https(tlsConfiguration) .port(PORT) .build()) .isEqualTo(new WebAdminConfiguration( true, PORT, - httpsConfiguration, + tlsConfiguration, false, "*")); } @@ -107,7 +107,7 @@ public class WebAdminConfigurationTest { .isEqualTo(new WebAdminConfiguration( true, PORT, - HttpsConfiguration.builder().disabled().build(), + TlsConfiguration.builder().disabled().build(), true, "*")); } @@ -123,7 +123,7 @@ public class WebAdminConfigurationTest { .isEqualTo(new WebAdminConfiguration( true, PORT, - HttpsConfiguration.builder().disabled().build(), + TlsConfiguration.builder().disabled().build(), false, "*")); } @@ -141,7 +141,7 @@ public class WebAdminConfigurationTest { .isEqualTo(new WebAdminConfiguration( true, PORT, - HttpsConfiguration.builder().disabled().build(), + TlsConfiguration.builder().disabled().build(), true, origin)); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org