001/* 002 * acme4j - Java ACME client 003 * 004 * Copyright (C) 2024 Richard "Shred" Körber 005 * http://acme4j.shredzone.org 006 * 007 * Licensed under the Apache License, Version 2.0 (the "License"); 008 * you may not use this file except in compliance with the License. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 013 */ 014package org.shredzone.acme4j.provider.sslcom; 015 016import static org.assertj.core.api.Assertions.assertThat; 017import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; 018import static org.shredzone.acme4j.toolbox.TestUtils.url; 019 020import java.net.URI; 021import java.net.URISyntaxException; 022 023import org.assertj.core.api.AutoCloseableSoftAssertions; 024import org.junit.jupiter.api.Test; 025 026/** 027 * Unit tests for {@link SslComAcmeProviderTest}. 028 */ 029public class SslComAcmeProviderTest { 030 031 private static final String PRODUCTION_ECC_DIRECTORY_URL = "https://acme.ssl.com/sslcom-dv-ecc"; 032 private static final String PRODUCTION_RSA_DIRECTORY_URL = "https://acme.ssl.com/sslcom-dv-rsa"; 033 private static final String STAGING_ECC_DIRECTORY_URL = "https://acme-try.ssl.com/sslcom-dv-ecc"; 034 private static final String STAGING_RSA_DIRECTORY_URL = "https://acme-try.ssl.com/sslcom-dv-rsa"; 035 036 /** 037 * Tests if the provider accepts the correct URIs. 038 */ 039 @Test 040 public void testAccepts() throws URISyntaxException { 041 var provider = new SslComAcmeProvider(); 042 043 try (var softly = new AutoCloseableSoftAssertions()) { 044 softly.assertThat(provider.accepts(new URI("acme://ssl.com"))).isTrue(); 045 softly.assertThat(provider.accepts(new URI("acme://ssl.com/"))).isTrue(); 046 softly.assertThat(provider.accepts(new URI("acme://ssl.com/ecc"))).isTrue(); 047 softly.assertThat(provider.accepts(new URI("acme://ssl.com/rsa"))).isTrue(); 048 softly.assertThat(provider.accepts(new URI("acme://ssl.com/staging"))).isTrue(); 049 softly.assertThat(provider.accepts(new URI("acme://ssl.com/staging/ecc"))).isTrue(); 050 softly.assertThat(provider.accepts(new URI("acme://ssl.com/staging/rsa"))).isTrue(); 051 softly.assertThat(provider.accepts(new URI("acme://example.com"))).isFalse(); 052 softly.assertThat(provider.accepts(new URI("http://example.com/acme"))).isFalse(); 053 softly.assertThat(provider.accepts(new URI("https://example.com/acme"))).isFalse(); 054 } 055 } 056 057 /** 058 * Test if acme URIs are properly resolved. 059 */ 060 @Test 061 public void testResolve() throws URISyntaxException { 062 var provider = new SslComAcmeProvider(); 063 064 assertThat(provider.resolve(new URI("acme://ssl.com"))).isEqualTo(url(PRODUCTION_ECC_DIRECTORY_URL)); 065 assertThat(provider.resolve(new URI("acme://ssl.com/"))).isEqualTo(url(PRODUCTION_ECC_DIRECTORY_URL)); 066 assertThat(provider.resolve(new URI("acme://ssl.com/ecc"))).isEqualTo(url(PRODUCTION_ECC_DIRECTORY_URL)); 067 assertThat(provider.resolve(new URI("acme://ssl.com/rsa"))).isEqualTo(url(PRODUCTION_RSA_DIRECTORY_URL)); 068 assertThat(provider.resolve(new URI("acme://ssl.com/staging"))).isEqualTo(url(STAGING_ECC_DIRECTORY_URL)); 069 assertThat(provider.resolve(new URI("acme://ssl.com/staging/ecc"))).isEqualTo(url(STAGING_ECC_DIRECTORY_URL)); 070 assertThat(provider.resolve(new URI("acme://ssl.com/staging/rsa"))).isEqualTo(url(STAGING_RSA_DIRECTORY_URL)); 071 072 assertThatIllegalArgumentException().isThrownBy(() -> provider.resolve(new URI("acme://ssl.com/v99"))); 073 } 074 075}