001/* 002 * acme4j - Java ACME client 003 * 004 * Copyright (C) 2015 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.letsencrypt; 015 016import static org.assertj.core.api.Assertions.assertThat; 017import static org.junit.jupiter.api.Assertions.assertThrows; 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 LetsEncryptAcmeProvider}. 028 */ 029public class LetsEncryptAcmeProviderTest { 030 031 private static final String V02_DIRECTORY_URL = "https://acme-v02.api.letsencrypt.org/directory"; 032 private static final String STAGING_DIRECTORY_URL = "https://acme-staging-v02.api.letsencrypt.org/directory"; 033 034 /** 035 * Tests if the provider accepts the correct URIs. 036 */ 037 @Test 038 public void testAccepts() throws URISyntaxException { 039 var provider = new LetsEncryptAcmeProvider(); 040 041 try (var softly = new AutoCloseableSoftAssertions()) { 042 softly.assertThat(provider.accepts(new URI("acme://letsencrypt.org"))).isTrue(); 043 softly.assertThat(provider.accepts(new URI("acme://letsencrypt.org/"))).isTrue(); 044 softly.assertThat(provider.accepts(new URI("acme://letsencrypt.org/staging"))).isTrue(); 045 softly.assertThat(provider.accepts(new URI("acme://letsencrypt.org/v02"))).isTrue(); 046 softly.assertThat(provider.accepts(new URI("acme://example.com"))).isFalse(); 047 softly.assertThat(provider.accepts(new URI("http://example.com/acme"))).isFalse(); 048 softly.assertThat(provider.accepts(new URI("https://example.com/acme"))).isFalse(); 049 } 050 } 051 052 /** 053 * Test if acme URIs are properly resolved. 054 */ 055 @Test 056 public void testResolve() throws URISyntaxException { 057 var provider = new LetsEncryptAcmeProvider(); 058 059 assertThat(provider.resolve(new URI("acme://letsencrypt.org"))).isEqualTo(url(V02_DIRECTORY_URL)); 060 assertThat(provider.resolve(new URI("acme://letsencrypt.org/"))).isEqualTo(url(V02_DIRECTORY_URL)); 061 assertThat(provider.resolve(new URI("acme://letsencrypt.org/v02"))).isEqualTo(url(V02_DIRECTORY_URL)); 062 assertThat(provider.resolve(new URI("acme://letsencrypt.org/staging"))).isEqualTo(url(STAGING_DIRECTORY_URL)); 063 064 assertThrows(IllegalArgumentException.class, () -> provider.resolve(new URI("acme://letsencrypt.org/v99"))); 065 } 066 067}