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.challenge; 015 016import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson; 017import static org.assertj.core.api.Assertions.assertThat; 018import static org.assertj.core.api.Assertions.assertThatExceptionOfType; 019import static org.shredzone.acme4j.toolbox.TestUtils.getJSON; 020 021import org.junit.jupiter.api.Test; 022import org.shredzone.acme4j.Identifier; 023import org.shredzone.acme4j.Login; 024import org.shredzone.acme4j.Status; 025import org.shredzone.acme4j.exception.AcmeProtocolException; 026import org.shredzone.acme4j.toolbox.JSONBuilder; 027import org.shredzone.acme4j.toolbox.TestUtils; 028 029/** 030 * Unit tests for {@link Dns01Challenge}. 031 */ 032public class Dns01ChallengeTest { 033 034 private final Login login = TestUtils.login(); 035 036 /** 037 * Test that {@link Dns01Challenge} generates a correct authorization key. 038 */ 039 @Test 040 public void testDnsChallenge() { 041 var challenge = new Dns01Challenge(login, getJSON("dnsChallenge")); 042 043 assertThat(challenge.getType()).isEqualTo(Dns01Challenge.TYPE); 044 assertThat(challenge.getStatus()).isEqualTo(Status.PENDING); 045 assertThat(challenge.getDigest()).isEqualTo("rzMmotrIgsithyBYc0vgiLUEEKYx0WetQRgEF2JIozA"); 046 assertThat(challenge.getAuthorization()).isEqualTo("pNvmJivs0WCko2suV7fhe-59oFqyYx_yB7tx6kIMAyE.HnWjTDnyqlCrm6tZ-6wX-TrEXgRdeNu9G71gqxSO6o0"); 047 048 var response = new JSONBuilder(); 049 challenge.prepareResponse(response); 050 051 assertThatJson(response.toString()).isEqualTo("{}"); 052 } 053 054 @Test 055 public void testToRRName() { 056 assertThat(Dns01Challenge.toRRName("www.example.org")) 057 .isEqualTo("_acme-challenge.www.example.org."); 058 assertThat(Dns01Challenge.toRRName(Identifier.dns("www.example.org"))) 059 .isEqualTo("_acme-challenge.www.example.org."); 060 assertThatExceptionOfType(AcmeProtocolException.class) 061 .isThrownBy(() -> Dns01Challenge.toRRName(Identifier.ip("127.0.0.10"))); 062 assertThat(Dns01Challenge.RECORD_NAME_PREFIX) 063 .isEqualTo("_acme-challenge"); 064 } 065 066}