001/* 002 * acme4j - Java ACME client 003 * 004 * Copyright (C) 2019 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.connector; 015 016import static org.assertj.core.api.Assertions.assertThat; 017import static org.junit.jupiter.api.Assertions.assertThrows; 018 019import java.net.Authenticator; 020import java.net.InetSocketAddress; 021import java.net.ProxySelector; 022import java.net.http.HttpClient; 023import java.time.Duration; 024 025import org.junit.jupiter.api.Test; 026 027/** 028 * Unit tests for {@link NetworkSettings}. 029 */ 030public class NetworkSettingsTest { 031 032 /** 033 * Test getters and setters. 034 */ 035 @Test 036 public void testGettersAndSetters() { 037 var settings = new NetworkSettings(); 038 039 var proxyAddress = new InetSocketAddress("198.51.100.1", 8080); 040 var proxySelector = ProxySelector.of(proxyAddress); 041 042 assertThat(settings.getProxySelector()).isSameAs(HttpClient.Builder.NO_PROXY); 043 settings.setProxySelector(proxySelector); 044 assertThat(settings.getProxySelector()).isSameAs(proxySelector); 045 settings.setProxySelector(null); 046 assertThat(settings.getProxySelector()).isEqualTo(HttpClient.Builder.NO_PROXY); 047 048 assertThat(settings.getTimeout()).isEqualTo(Duration.ofSeconds(10)); 049 settings.setTimeout(Duration.ofMillis(5120)); 050 assertThat(settings.getTimeout()).isEqualTo(Duration.ofMillis(5120)); 051 052 var defaultAuthenticator = Authenticator.getDefault(); 053 assertThat(settings.getAuthenticator()).isNull(); 054 settings.setAuthenticator(defaultAuthenticator); 055 assertThat(settings.getAuthenticator()).isSameAs(defaultAuthenticator); 056 057 assertThat(settings.isCompressionEnabled()).isTrue(); 058 settings.setCompressionEnabled(false); 059 assertThat(settings.isCompressionEnabled()).isFalse(); 060 } 061 062 @Test 063 public void testInvalidTimeouts() { 064 var settings = new NetworkSettings(); 065 066 assertThrows(IllegalArgumentException.class, 067 () -> settings.setTimeout(null), 068 "timeout accepted null"); 069 assertThrows(IllegalArgumentException.class, 070 () -> settings.setTimeout(Duration.ZERO), 071 "timeout accepted zero duration"); 072 assertThrows(IllegalArgumentException.class, 073 () -> settings.setTimeout(Duration.ofSeconds(20).negated()), 074 "timeout accepted negative duration"); 075 } 076 077 @Test 078 public void testSystemProperty() { 079 assertThat(NetworkSettings.GZIP_PROPERTY_NAME) 080 .startsWith("org.shredzone.acme4j") 081 .contains("gzip"); 082 083 System.clearProperty(NetworkSettings.GZIP_PROPERTY_NAME); 084 var settingsNone = new NetworkSettings(); 085 assertThat(settingsNone.isCompressionEnabled()).isTrue(); 086 087 System.setProperty(NetworkSettings.GZIP_PROPERTY_NAME, "true"); 088 var settingsTrue = new NetworkSettings(); 089 assertThat(settingsTrue.isCompressionEnabled()).isTrue(); 090 091 System.setProperty(NetworkSettings.GZIP_PROPERTY_NAME, "false"); 092 var settingsFalse = new NetworkSettings(); 093 assertThat(settingsFalse.isCompressionEnabled()).isFalse(); 094 095 System.setProperty(NetworkSettings.GZIP_PROPERTY_NAME, "1234"); 096 var settingsNonBoolean = new NetworkSettings(); 097 assertThat(settingsNonBoolean.isCompressionEnabled()).isFalse(); 098 } 099 100}