From bcbb0de09c9a1e3eee68d1619f1496d296751234 Mon Sep 17 00:00:00 2001 From: "Andreas Penski (init)" Date: Fri, 14 Aug 2020 08:56:45 +0200 Subject: [PATCH] (chore) more test coverage --- .../api/CheckConfiguration.java | 3 +- .../validationtool/daemon/BaseHandler.java | 6 +- .../api/CheckConfigurationTest.java | 29 +++++++++ .../config/TestScenarioFactory.java | 2 +- .../daemon/ConfigHandlerTest.java | 60 +++++++++++++++++++ .../resources/examples/simple/scenarios.xml | 1 + 6 files changed, 95 insertions(+), 6 deletions(-) create mode 100644 src/test/java/de/kosit/validationtool/api/CheckConfigurationTest.java create mode 100644 src/test/java/de/kosit/validationtool/daemon/ConfigHandlerTest.java diff --git a/src/main/java/de/kosit/validationtool/api/CheckConfiguration.java b/src/main/java/de/kosit/validationtool/api/CheckConfiguration.java index dddf41a..185ad26 100644 --- a/src/main/java/de/kosit/validationtool/api/CheckConfiguration.java +++ b/src/main/java/de/kosit/validationtool/api/CheckConfiguration.java @@ -28,7 +28,6 @@ import lombok.RequiredArgsConstructor; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import de.kosit.validationtool.config.ConfigurationLoader; import de.kosit.validationtool.impl.ContentRepository; import de.kosit.validationtool.impl.Scenario; @@ -55,7 +54,7 @@ public class CheckConfiguration implements Configuration { */ private URI scenarioRepository; - private ConfigurationLoader loader; + private Configuration delegate; diff --git a/src/main/java/de/kosit/validationtool/daemon/BaseHandler.java b/src/main/java/de/kosit/validationtool/daemon/BaseHandler.java index 9aaae1c..9e75fd4 100644 --- a/src/main/java/de/kosit/validationtool/daemon/BaseHandler.java +++ b/src/main/java/de/kosit/validationtool/daemon/BaseHandler.java @@ -15,13 +15,13 @@ abstract class BaseHandler implements HttpHandler { protected static final String APPLICATION_XML = "application/xml"; - protected static final int OK = 200; + static final int OK = 200; protected static void write(final HttpExchange exchange, final byte[] content, final String contentType) throws IOException { write(exchange, contentType, os -> os.write(content)); } - protected static void write(final HttpExchange exchange, final String contentType, Write write) throws IOException { + protected static void write(final HttpExchange exchange, final String contentType, final Write write) throws IOException { exchange.getResponseHeaders().add("Content-Type", contentType); exchange.sendResponseHeaders(OK, 0); final OutputStream os = exchange.getResponseBody(); @@ -41,6 +41,6 @@ abstract class BaseHandler implements HttpHandler { @FunctionalInterface protected interface Write { - public void write(OutputStream out) throws IOException; + void write(OutputStream out) throws IOException; } } diff --git a/src/test/java/de/kosit/validationtool/api/CheckConfigurationTest.java b/src/test/java/de/kosit/validationtool/api/CheckConfigurationTest.java new file mode 100644 index 0000000..717a59d --- /dev/null +++ b/src/test/java/de/kosit/validationtool/api/CheckConfigurationTest.java @@ -0,0 +1,29 @@ +package de.kosit.validationtool.api; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Test; + +import de.kosit.validationtool.impl.Helper.Simple; + +/** + * Test {@link CheckConfiguration }. + * + * @author Andreas Penski + */ +@Deprecated +public class CheckConfigurationTest { + + @Test + public void testDelegation() { + final CheckConfiguration config = new CheckConfiguration(Simple.SCENARIOS); + config.setScenarioRepository(Simple.REPOSITORY_URI); + assertThat(config.getScenarios()).isNotEmpty(); + assertThat(config.getContentRepository()).isNotNull(); + assertThat(config.getFallbackScenario()).isNotNull(); + assertThat(config.getAuthor()).isNotEmpty(); + assertThat(config.getDate()).isNotEmpty(); + assertThat(config.getName()).isNotEmpty(); + assertThat(config.getScenarioRepository()).isNotNull(); + } +} diff --git a/src/test/java/de/kosit/validationtool/config/TestScenarioFactory.java b/src/test/java/de/kosit/validationtool/config/TestScenarioFactory.java index 70ae5cc..272878d 100644 --- a/src/test/java/de/kosit/validationtool/config/TestScenarioFactory.java +++ b/src/test/java/de/kosit/validationtool/config/TestScenarioFactory.java @@ -17,7 +17,7 @@ import de.kosit.validationtool.impl.ResolvingMode; */ public class TestScenarioFactory { - static ConfigurationBuilder createSimpleConfiguration() { + public static ConfigurationBuilder createSimpleConfiguration() { return Configuration.create().name("Simple-API").author("me").description("test desc").date(new Date()) .with(createScenario().description("awesome scenario")).with(fallback().name("default").source("report.xsl")) diff --git a/src/test/java/de/kosit/validationtool/daemon/ConfigHandlerTest.java b/src/test/java/de/kosit/validationtool/daemon/ConfigHandlerTest.java new file mode 100644 index 0000000..c4aea0e --- /dev/null +++ b/src/test/java/de/kosit/validationtool/daemon/ConfigHandlerTest.java @@ -0,0 +1,60 @@ +package de.kosit.validationtool.daemon; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.Mockito.atLeast; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.io.IOException; +import java.io.OutputStream; + +import org.junit.Test; +import org.mockito.ArgumentCaptor; + +import com.sun.net.httpserver.Headers; +import com.sun.net.httpserver.HttpExchange; + +import de.kosit.validationtool.api.Configuration; +import de.kosit.validationtool.config.TestScenarioFactory; +import de.kosit.validationtool.impl.ConversionService; + +/** + * @author Andreas Penski + */ +public class ConfigHandlerTest { + + @Test + public void testApiConfiguration() throws IOException { + final HttpExchange exchange = mock(HttpExchange.class); + final Headers headers = mock(Headers.class); + final OutputStream stream = mock(OutputStream.class); + when(exchange.getResponseHeaders()).thenReturn(headers); + when(exchange.getResponseBody()).thenReturn(stream); + final Configuration config = TestScenarioFactory.createSimpleConfiguration().build(); + final ConfigHandler handler = new ConfigHandler(config, new ConversionService()); + handler.handle(exchange); + verify(exchange, times(1)).sendResponseHeaders(ConfigHandler.OK, 0); + verify(stream, atLeast(1)).write(any()); + } + + @Test + public void testError() throws IOException { + final HttpExchange exchange = mock(HttpExchange.class); + final Headers headers = mock(Headers.class); + final OutputStream stream = mock(OutputStream.class); + when(exchange.getResponseHeaders()).thenReturn(headers); + when(exchange.getResponseBody()).thenReturn(stream); + final ArgumentCaptor valueCapture = ArgumentCaptor.forClass(Integer.class); + doNothing().when(exchange).sendResponseHeaders(valueCapture.capture(), anyLong()); + final ConfigHandler handler = new ConfigHandler(null/* will produce npe */, new ConversionService()); + handler.handle(exchange); + verify(headers, times(1)).add(any(), any()); + verify(stream, atLeast(1)).write(any()); + assertThat(valueCapture.getValue()).isEqualTo(500); + } +} diff --git a/src/test/resources/examples/simple/scenarios.xml b/src/test/resources/examples/simple/scenarios.xml index a896a23..1513b5d 100644 --- a/src/test/resources/examples/simple/scenarios.xml +++ b/src/test/resources/examples/simple/scenarios.xml @@ -20,6 +20,7 @@ HTML-TestSuite + QA 2017-08-08

Szenario für Tests