From 7c17645212783f6ef38a993b4508132e5649a757 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20K=C3=B6rber?= Date: Mon, 26 Feb 2024 18:19:01 +0100 Subject: [PATCH] Add missing ssl.com unit tests --- .../provider/sslcom/SslComAcmeProvider.java | 9 +-- .../sslcom/SslComAcmeProviderTest.java | 65 +++++++++++++++++++ 2 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 acme4j-client/src/test/java/org/shredzone/acme4j/provider/sslcom/SslComAcmeProviderTest.java diff --git a/acme4j-client/src/main/java/org/shredzone/acme4j/provider/sslcom/SslComAcmeProvider.java b/acme4j-client/src/main/java/org/shredzone/acme4j/provider/sslcom/SslComAcmeProvider.java index e553815a..aa5f12d9 100644 --- a/acme4j-client/src/main/java/org/shredzone/acme4j/provider/sslcom/SslComAcmeProvider.java +++ b/acme4j-client/src/main/java/org/shredzone/acme4j/provider/sslcom/SslComAcmeProvider.java @@ -1,7 +1,7 @@ /* * acme4j - Java ACME client * - * Copyright (C) 2015 Richard "Shred" Körber + * Copyright (C) 2024 Richard "Shred" Körber * http://acme4j.shredzone.org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -30,10 +30,11 @@ import org.shredzone.acme4j.provider.AcmeProvider; * If you want to use SSL.com, always prefer to use this provider. * * @see SSL.com + * @since 3.2.0 */ public class SslComAcmeProvider extends AbstractAcmeProvider { - private static final String V02_DIRECTORY_URL = "https://acme.ssl.com/sslcom-dv-ecc"; + private static final String PRODUCTION_DIRECTORY_URL = "https://acme.ssl.com/sslcom-dv-ecc"; private static final String STAGING_DIRECTORY_URL = "https://acme-try.ssl.com/sslcom-dv-ecc"; @Override @@ -46,8 +47,8 @@ public class SslComAcmeProvider extends AbstractAcmeProvider { public URL resolve(URI serverUri) { var path = serverUri.getPath(); String directoryUrl; - if (path == null || "".equals(path) || "/".equals(path) || "/v02".equals(path)) { - directoryUrl = V02_DIRECTORY_URL; + if (path == null || path.isEmpty() || "/".equals(path)) { + directoryUrl = PRODUCTION_DIRECTORY_URL; } else if ("/staging".equals(path)) { directoryUrl = STAGING_DIRECTORY_URL; } else { diff --git a/acme4j-client/src/test/java/org/shredzone/acme4j/provider/sslcom/SslComAcmeProviderTest.java b/acme4j-client/src/test/java/org/shredzone/acme4j/provider/sslcom/SslComAcmeProviderTest.java new file mode 100644 index 00000000..531e1739 --- /dev/null +++ b/acme4j-client/src/test/java/org/shredzone/acme4j/provider/sslcom/SslComAcmeProviderTest.java @@ -0,0 +1,65 @@ +/* + * acme4j - Java ACME client + * + * Copyright (C) 2024 Richard "Shred" Körber + * http://acme4j.shredzone.org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + */ +package org.shredzone.acme4j.provider.sslcom; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; +import static org.shredzone.acme4j.toolbox.TestUtils.url; + +import java.net.URI; +import java.net.URISyntaxException; + +import org.assertj.core.api.AutoCloseableSoftAssertions; +import org.junit.jupiter.api.Test; + +/** + * Unit tests for {@link SslComAcmeProviderTest}. + */ +public class SslComAcmeProviderTest { + + private static final String PRODUCTION_DIRECTORY_URL = "https://acme.ssl.com/sslcom-dv-ecc"; + private static final String STAGING_DIRECTORY_URL = "https://acme-try.ssl.com/sslcom-dv-ecc"; + + /** + * Tests if the provider accepts the correct URIs. + */ + @Test + public void testAccepts() throws URISyntaxException { + var provider = new SslComAcmeProvider(); + + try (var softly = new AutoCloseableSoftAssertions()) { + softly.assertThat(provider.accepts(new URI("acme://ssl.com"))).isTrue(); + softly.assertThat(provider.accepts(new URI("acme://ssl.com/"))).isTrue(); + softly.assertThat(provider.accepts(new URI("acme://ssl.com/staging"))).isTrue(); + softly.assertThat(provider.accepts(new URI("acme://example.com"))).isFalse(); + softly.assertThat(provider.accepts(new URI("http://example.com/acme"))).isFalse(); + softly.assertThat(provider.accepts(new URI("https://example.com/acme"))).isFalse(); + } + } + + /** + * Test if acme URIs are properly resolved. + */ + @Test + public void testResolve() throws URISyntaxException { + var provider = new SslComAcmeProvider(); + + assertThat(provider.resolve(new URI("acme://ssl.com"))).isEqualTo(url(PRODUCTION_DIRECTORY_URL)); + assertThat(provider.resolve(new URI("acme://ssl.com/"))).isEqualTo(url(PRODUCTION_DIRECTORY_URL)); + assertThat(provider.resolve(new URI("acme://ssl.com/staging"))).isEqualTo(url(STAGING_DIRECTORY_URL)); + + assertThatIllegalArgumentException().isThrownBy(() -> provider.resolve(new URI("acme://ssl.com/v99"))); + } + +}