This is an automated email from the ASF dual-hosted git repository. aldettinger pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 6ba9a2b CAMEL-16168: Replaced the JettyTestServer with wiremock 6ba9a2b is described below commit 6ba9a2be1882a88076cb1325240f52df5c3d3e73 Author: aldettinger <aldettin...@gmail.com> AuthorDate: Mon Feb 8 18:49:54 2021 +0100 CAMEL-16168: Replaced the JettyTestServer with wiremock --- components/camel-oaipmh/pom.xml | 6 +- .../oaipmh/OAIPMHComponentConsumerHTTPSTest.java | 30 ++-- .../OAIPMHComponentConsumerParticularCaseTest.java | 29 ++-- .../camel/oaipmh/OAIPMHComponentConsumerTest.java | 29 ++-- .../OAIPMHComponentProducerGetRecordTest.java | 31 ++-- .../OAIPMHComponentProducerOnlyFirstLoopTest.java | 31 ++-- .../OAIPMHComponentProducerOnlyFirstTest.java | 31 ++-- .../camel/oaipmh/OAIPMHComponentProducerTest.java | 31 ++-- .../camel/oaipmh/OAIPMHComponentSpringTest.java | 32 ++-- .../apache/camel/oaipmh/utils/JettyTestServer.java | 171 --------------------- .../camel/oaipmh/utils/MockOaipmhServer.java | 132 ++++++++++++++++ 11 files changed, 252 insertions(+), 301 deletions(-) diff --git a/components/camel-oaipmh/pom.xml b/components/camel-oaipmh/pom.xml index 1a4a6b6..194af61 100644 --- a/components/camel-oaipmh/pom.xml +++ b/components/camel-oaipmh/pom.xml @@ -60,9 +60,9 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-servlet</artifactId> - <version>${jetty-version}</version> + <groupId>com.github.tomakehurst</groupId> + <artifactId>wiremock-jre8</artifactId> + <version>${wiremock-version}</version> <scope>test</scope> </dependency> <dependency> diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerHTTPSTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerHTTPSTest.java index fa2007d..c5dc7a5 100644 --- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerHTTPSTest.java +++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerHTTPSTest.java @@ -16,11 +16,9 @@ */ package org.apache.camel.oaipmh; -import java.io.IOException; - import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.oaipmh.utils.JettyTestServer; +import org.apache.camel.oaipmh.utils.MockOaipmhServer; import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; @@ -28,24 +26,24 @@ import org.junit.jupiter.api.Test; public class OAIPMHComponentConsumerHTTPSTest extends CamelTestSupport { - @Test - public void testOAIPMH() throws Exception { - MockEndpoint mock = getMockEndpoint("mock:result"); - mock.expectedMessageCount(1); - mock.assertIsSatisfied(5 * 1000); - } + private static MockOaipmhServer mockOaipmhServer; @BeforeAll - public static void startServer() throws IOException { - //Mocked data taken from https://repositorio.cepal.org/oai/request - July 21, 2020 - JettyTestServer.getInstance().context = "test4"; - JettyTestServer.getInstance().https = true; - JettyTestServer.getInstance().startServer(); + public static void startServer() { + mockOaipmhServer = MockOaipmhServer.create(); + mockOaipmhServer.start(); } @AfterAll public static void stopServer() { - JettyTestServer.getInstance().stopServer(); + mockOaipmhServer.stop(); + } + + @Test + public void testOAIPMH() throws Exception { + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMessageCount(1); + mock.assertIsSatisfied(5 * 1000); } @Override @@ -53,7 +51,7 @@ public class OAIPMHComponentConsumerHTTPSTest extends CamelTestSupport { return new RouteBuilder() { public void configure() { - from("oaipmh://localhost:" + JettyTestServer.getInstance().portssl + "/oai/request?" + from("oaipmh://localhost:" + mockOaipmhServer.getHttpsPort() + "/oai/request?" + "ssl=true&" + "ignoreSSLWarnings=true&" + "delay=1000&" diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerParticularCaseTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerParticularCaseTest.java index 887f15e..3f9c9e1e 100644 --- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerParticularCaseTest.java +++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerParticularCaseTest.java @@ -16,11 +16,9 @@ */ package org.apache.camel.oaipmh; -import java.io.IOException; - import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.oaipmh.utils.JettyTestServer; +import org.apache.camel.oaipmh.utils.MockOaipmhServer; import org.apache.camel.support.builder.Namespaces; import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.AfterAll; @@ -29,30 +27,31 @@ import org.junit.jupiter.api.Test; public class OAIPMHComponentConsumerParticularCaseTest extends CamelTestSupport { - @Test - public void testOAIPMH() throws Exception { - MockEndpoint mock = getMockEndpoint("mock:result"); - mock.expectedMessageCount(45); - mock.assertIsSatisfied(5 * 1000); - } + private static MockOaipmhServer mockOaipmhServer; @BeforeAll - public static void startServer() throws IOException { - //Mocked data taken from https://revista.uisrael.edu.ec/index.php?page=oai - July 21, 2020 - JettyTestServer.getInstance().context = "test3"; - JettyTestServer.getInstance().startServer(); + public static void startServer() { + mockOaipmhServer = MockOaipmhServer.create(); + mockOaipmhServer.start(); } @AfterAll public static void stopServer() { - JettyTestServer.getInstance().stopServer(); + mockOaipmhServer.stop(); + } + + @Test + public void testOAIPMH() throws Exception { + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMessageCount(45); + mock.assertIsSatisfied(5 * 1000); } @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { public void configure() { - from("oaipmh:localhost:" + JettyTestServer.getInstance().port + "/index.php?page=oai&" + from("oaipmh:localhost:" + mockOaipmhServer.getHttpPort() + "/index.php?page=oai&" + "delay=1000&" + "from=2020-02-01T00:00:00Z&" + "initialDelay=1000") diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerTest.java index c0234f9..6b59a37 100644 --- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerTest.java +++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentConsumerTest.java @@ -16,11 +16,9 @@ */ package org.apache.camel.oaipmh; -import java.io.IOException; - import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.oaipmh.utils.JettyTestServer; +import org.apache.camel.oaipmh.utils.MockOaipmhServer; import org.apache.camel.support.builder.Namespaces; import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.AfterAll; @@ -29,23 +27,24 @@ import org.junit.jupiter.api.Test; public class OAIPMHComponentConsumerTest extends CamelTestSupport { - @Test - public void testOAIPMH() throws Exception { - MockEndpoint mock = getMockEndpoint("mock:result"); - mock.expectedMessageCount(532); - mock.assertIsSatisfied(10 * 1000); - } + private static MockOaipmhServer mockOaipmhServer; @BeforeAll - public static void startServer() throws IOException { - //Mocked data taken from https://dspace.ucuenca.edu.ec/oai/request - July 21, 2020 - JettyTestServer.getInstance().context = "test1"; - JettyTestServer.getInstance().startServer(); + public static void startServer() { + mockOaipmhServer = MockOaipmhServer.create(); + mockOaipmhServer.start(); } @AfterAll public static void stopServer() { - JettyTestServer.getInstance().stopServer(); + mockOaipmhServer.stop(); + } + + @Test + public void testOAIPMH() throws Exception { + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMessageCount(532); + mock.assertIsSatisfied(10 * 1000); } @Override @@ -53,7 +52,7 @@ public class OAIPMHComponentConsumerTest extends CamelTestSupport { return new RouteBuilder() { public void configure() { - from("oaipmh://localhost:" + JettyTestServer.getInstance().port + "/oai/request?" + from("oaipmh://localhost:" + mockOaipmhServer.getHttpPort() + "/oai/request?" + "delay=1000&" + "from=2020-06-01T00:00:00Z&" + "initialDelay=1000") diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerGetRecordTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerGetRecordTest.java index df04861..3ec2a01 100644 --- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerGetRecordTest.java +++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerGetRecordTest.java @@ -16,11 +16,9 @@ */ package org.apache.camel.oaipmh; -import java.io.IOException; - import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.oaipmh.utils.JettyTestServer; +import org.apache.camel.oaipmh.utils.MockOaipmhServer; import org.apache.camel.support.builder.Namespaces; import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.AfterAll; @@ -29,24 +27,25 @@ import org.junit.jupiter.api.Test; public class OAIPMHComponentProducerGetRecordTest extends CamelTestSupport { - @Test - public void testOAIPMH() throws Exception { - MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); - template.sendBody("direct:start", "foo"); - resultEndpoint.expectedMessageCount(1); - resultEndpoint.assertIsSatisfied(3 * 1000); - } + private static MockOaipmhServer mockOaipmhServer; @BeforeAll - public static void startServer() throws IOException { - //Mocked data taken from https://dspace.ucuenca.edu.ec/oai/request - July 21, 2020 - JettyTestServer.getInstance().context = "test2"; - JettyTestServer.getInstance().startServer(); + public static void startServer() { + mockOaipmhServer = MockOaipmhServer.create(); + mockOaipmhServer.start(); } @AfterAll public static void stopServer() { - JettyTestServer.getInstance().stopServer(); + mockOaipmhServer.stop(); + } + + @Test + public void testOAIPMH() throws Exception { + MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); + template.sendBody("direct:start", "foo"); + resultEndpoint.expectedMessageCount(1); + resultEndpoint.assertIsSatisfied(3 * 1000); } @Override @@ -57,7 +56,7 @@ public class OAIPMHComponentProducerGetRecordTest extends CamelTestSupport { from("direct:start") .setHeader("CamelOaimphVerb", constant("GetRecord")) .setHeader("CamelOaimphIdentifier", constant("oai:dspace.ucuenca.edu.ec:123456789/32374")) - .to("oaipmh://localhost:" + JettyTestServer.getInstance().port + "/oai/request") + .to("oaipmh://localhost:" + mockOaipmhServer.getHttpPort() + "/oai/request") .split(body()) .split(xpath( "/default:OAI-PMH/default:GetRecord/default:record/default:metadata/oai_dc:dc/dc:title/text()", diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstLoopTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstLoopTest.java index be6ea0f..7547e2e 100644 --- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstLoopTest.java +++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstLoopTest.java @@ -16,11 +16,9 @@ */ package org.apache.camel.oaipmh; -import java.io.IOException; - import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.oaipmh.utils.JettyTestServer; +import org.apache.camel.oaipmh.utils.MockOaipmhServer; import org.apache.camel.support.builder.Namespaces; import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.AfterAll; @@ -29,24 +27,25 @@ import org.junit.jupiter.api.Test; public class OAIPMHComponentProducerOnlyFirstLoopTest extends CamelTestSupport { - @Test - public void testOAIPMH() throws Exception { - MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); - template.sendBody("direct:start", "foo"); - resultEndpoint.expectedMessageCount(532); - resultEndpoint.assertIsSatisfied(3 * 1000); - } + private static MockOaipmhServer mockOaipmhServer; @BeforeAll - public static void startServer() throws IOException { - //Mocked data taken from https://dspace.ucuenca.edu.ec/oai/request - July 21, 2020 - JettyTestServer.getInstance().context = "test1"; - JettyTestServer.getInstance().startServer(); + public static void startServer() { + mockOaipmhServer = MockOaipmhServer.create(); + mockOaipmhServer.start(); } @AfterAll public static void stopServer() { - JettyTestServer.getInstance().stopServer(); + mockOaipmhServer.stop(); + } + + @Test + public void testOAIPMH() throws Exception { + MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); + template.sendBody("direct:start", "foo"); + resultEndpoint.expectedMessageCount(532); + resultEndpoint.assertIsSatisfied(3 * 1000); } @Override @@ -58,7 +57,7 @@ public class OAIPMHComponentProducerOnlyFirstLoopTest extends CamelTestSupport { .setHeader("CamelOaimphFrom", constant("2020-06-01T00:00:00Z")) .setHeader("CamelOaimphOnlyFirst", constant("true")) .loopDoWhile(simple("${in.header.CamelOaimphResumptionToken} || ${body} == 'foo'")) - .to("oaipmh://localhost:" + JettyTestServer.getInstance().port + "/oai/request") + .to("oaipmh://localhost:" + mockOaipmhServer.getHttpPort() + "/oai/request") .split(body()) .split(xpath( "/default:OAI-PMH/default:ListRecords/default:record/default:metadata/oai_dc:dc/dc:title/text()", diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstTest.java index 7a204fc..2201b80 100644 --- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstTest.java +++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerOnlyFirstTest.java @@ -16,11 +16,9 @@ */ package org.apache.camel.oaipmh; -import java.io.IOException; - import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.oaipmh.utils.JettyTestServer; +import org.apache.camel.oaipmh.utils.MockOaipmhServer; import org.apache.camel.support.builder.Namespaces; import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.AfterAll; @@ -29,24 +27,25 @@ import org.junit.jupiter.api.Test; public class OAIPMHComponentProducerOnlyFirstTest extends CamelTestSupport { - @Test - public void testOAIPMH() throws Exception { - MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); - template.sendBody("direct:start", "foo"); - resultEndpoint.expectedMessageCount(104); - resultEndpoint.assertIsSatisfied(3 * 1000); - } + private static MockOaipmhServer mockOaipmhServer; @BeforeAll - public static void startServer() throws IOException { - //Mocked data taken from https://dspace.ucuenca.edu.ec/oai/request - July 21, 2020 - JettyTestServer.getInstance().context = "test1"; - JettyTestServer.getInstance().startServer(); + public static void startServer() { + mockOaipmhServer = MockOaipmhServer.create(); + mockOaipmhServer.start(); } @AfterAll public static void stopServer() { - JettyTestServer.getInstance().stopServer(); + mockOaipmhServer.stop(); + } + + @Test + public void testOAIPMH() throws Exception { + MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); + template.sendBody("direct:start", "foo"); + resultEndpoint.expectedMessageCount(104); + resultEndpoint.assertIsSatisfied(3 * 1000); } @Override @@ -57,7 +56,7 @@ public class OAIPMHComponentProducerOnlyFirstTest extends CamelTestSupport { from("direct:start") .setHeader("CamelOaimphFrom", constant("2020-06-01T00:00:00Z")) .setHeader("CamelOaimphOnlyFirst", constant("true")) - .to("oaipmh://localhost:" + JettyTestServer.getInstance().port + "/oai/request") + .to("oaipmh://localhost:" + mockOaipmhServer.getHttpPort() + "/oai/request") .split(body()) .split(xpath( "/default:OAI-PMH/default:ListRecords/default:record/default:metadata/oai_dc:dc/dc:title/text()", diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerTest.java index 4bd97be..33c31fd 100644 --- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerTest.java +++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentProducerTest.java @@ -16,11 +16,9 @@ */ package org.apache.camel.oaipmh; -import java.io.IOException; - import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.oaipmh.utils.JettyTestServer; +import org.apache.camel.oaipmh.utils.MockOaipmhServer; import org.apache.camel.support.builder.Namespaces; import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.AfterAll; @@ -29,24 +27,25 @@ import org.junit.jupiter.api.Test; public class OAIPMHComponentProducerTest extends CamelTestSupport { - @Test - public void testOAIPMH() throws Exception { - MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); - template.sendBody("direct:start", "foo"); - resultEndpoint.expectedMessageCount(532); - resultEndpoint.assertIsSatisfied(5 * 1000); - } + private static MockOaipmhServer mockOaipmhServer; @BeforeAll - public static void startServer() throws IOException { - //Mocked data taken from https://dspace.ucuenca.edu.ec/oai/request - July 21, 2020 - JettyTestServer.getInstance().context = "test1"; - JettyTestServer.getInstance().startServer(); + public static void startServer() { + mockOaipmhServer = MockOaipmhServer.create(); + mockOaipmhServer.start(); } @AfterAll public static void stopServer() { - JettyTestServer.getInstance().stopServer(); + mockOaipmhServer.stop(); + } + + @Test + public void testOAIPMH() throws Exception { + MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); + template.sendBody("direct:start", "foo"); + resultEndpoint.expectedMessageCount(532); + resultEndpoint.assertIsSatisfied(5 * 1000); } @Override @@ -56,7 +55,7 @@ public class OAIPMHComponentProducerTest extends CamelTestSupport { public void configure() { from("direct:start") .setHeader("CamelOaimphFrom", constant("2020-06-01T00:00:00Z")) - .to("oaipmh://localhost:" + JettyTestServer.getInstance().port + "/oai/request") + .to("oaipmh://localhost:" + mockOaipmhServer.getHttpPort() + "/oai/request") .split(body()) .split(xpath( "/default:OAI-PMH/default:ListRecords/default:record/default:metadata/oai_dc:dc/dc:title/text()", diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentSpringTest.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentSpringTest.java index 34a4ea3..2aa7e43 100644 --- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentSpringTest.java +++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/OAIPMHComponentSpringTest.java @@ -16,10 +16,8 @@ */ package org.apache.camel.oaipmh; -import java.io.IOException; - import org.apache.camel.component.mock.MockEndpoint; -import org.apache.camel.oaipmh.utils.JettyTestServer; +import org.apache.camel.oaipmh.utils.MockOaipmhServer; import org.apache.camel.test.spring.junit5.CamelSpringTestSupport; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; @@ -29,26 +27,26 @@ import org.springframework.context.support.ClassPathXmlApplicationContext; public class OAIPMHComponentSpringTest extends CamelSpringTestSupport { - @Test - public void test() throws Exception { - MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); - - template.sendBodyAndHeader("direct:start", "", "port", JettyTestServer.getInstance().port); - resultEndpoint.expectedMessageCount(1); - resultEndpoint.assertIsSatisfied(3 * 1); - } + private static MockOaipmhServer mockOaipmhServer; @BeforeAll - public static void startServer() throws IOException { - //Mocked data taken from https://dspace.ucuenca.edu.ec/oai/request - July 21, 2020 - JettyTestServer.getInstance().context = "test2"; - JettyTestServer.getInstance().startServer(); - + public static void startServer() { + mockOaipmhServer = MockOaipmhServer.create(); + mockOaipmhServer.start(); } @AfterAll public static void stopServer() { - JettyTestServer.getInstance().stopServer(); + mockOaipmhServer.stop(); + } + + @Test + public void test() throws Exception { + MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); + + template.sendBodyAndHeader("direct:start", "", "port", mockOaipmhServer.getHttpPort()); + resultEndpoint.expectedMessageCount(1); + resultEndpoint.assertIsSatisfied(3 * 1); } @Override diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/JettyTestServer.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/JettyTestServer.java deleted file mode 100644 index c6b0152..0000000 --- a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/JettyTestServer.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.oaipmh.utils; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; -import java.util.Enumeration; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.camel.test.AvailablePortFinder; -import org.apache.camel.test.junit4.TestSupport; -import org.apache.commons.codec.digest.DigestUtils; -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; -import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.HttpConfiguration; -import org.eclipse.jetty.server.HttpConnectionFactory; -import org.eclipse.jetty.server.SecureRequestCustomizer; -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.server.SslConnectionFactory; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; -import org.eclipse.jetty.util.ssl.SslContextFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static org.junit.Assert.fail; - -public final class JettyTestServer { - - private static final Logger LOG = LoggerFactory.getLogger(JettyTestServer.class); - private static final int PORT = AvailablePortFinder.getNextAvailable(); - private static final int PORT_SSL = AvailablePortFinder.getNextAvailable(); - private static final String PASSWORD = "changeit"; - private static JettyTestServer instance; - - public int port; - public int portssl; - public String context; - public boolean https; - - private Server server; - - private JettyTestServer() { - } - - private void unzip() throws FileNotFoundException, IOException { - String fileZip = "src/test/resources/data.zip"; - File destDir = new File("src/test/resources"); - try (ZipFile zipFile = new ZipFile(fileZip)) { - Enumeration<? extends ZipEntry> entries = zipFile.entries(); - while (entries.hasMoreElements()) { - ZipEntry entry = entries.nextElement(); - File entryDestination = new File(destDir, entry.getName()); - if (entry.isDirectory()) { - entryDestination.mkdirs(); - } else { - entryDestination.getParentFile().mkdirs(); - try (InputStream in = zipFile.getInputStream(entry); - OutputStream out = new FileOutputStream(entryDestination)) { - IOUtils.copy(in, out); - } - } - } - } - } - - public void startServer() throws IOException { - unzip(); - server = new Server(PORT); - port = PORT; - - if (https) { - portssl = PORT_SSL; - ServerConnector connector = new ServerConnector(server); - connector.setPort(PORT); - HttpConfiguration https = new HttpConfiguration(); - https.addCustomizer(new SecureRequestCustomizer()); - SslContextFactory sslContextFactory = new SslContextFactory(); - sslContextFactory.setKeyStorePath(JettyTestServer.class.getResource( - "/jettyKS/localhost.p12").toExternalForm()); - sslContextFactory.setKeyStorePassword(PASSWORD); - sslContextFactory.setKeyManagerPassword(PASSWORD); - ServerConnector sslConnector = new ServerConnector( - server, - new SslConnectionFactory(sslContextFactory, "http/1.1"), - new HttpConnectionFactory(https)); - - sslConnector.setPort(PORT_SSL); - server.setConnectors(new Connector[] { connector, sslConnector }); - } - - ServletContextHandler servletContext = new ServletContextHandler(ServletContextHandler.SESSIONS); - servletContext.setContextPath("/"); - server.setHandler(servletContext); - servletContext.addServlet(new ServletHolder(new MyHttpServlet(this.context)), "/*"); - try { - server.start(); - } catch (Exception ex) { - LOG.error("Could not start Server!", ex); - fail(ex.getLocalizedMessage()); - } - } - - public void stopServer() { - if (server != null) { - try { - server.stop(); - } catch (Exception ex) { - LOG.warn("Server doesn't stop normal...", ex); - } finally { - server = null; - port = 0; - } - } - TestSupport.deleteDirectory("src/test/resources/data"); - } - - public static JettyTestServer getInstance() { - if (instance == null) { - instance = new JettyTestServer(); - } - return instance; - } - - private class MyHttpServlet extends HttpServlet { - - private static final long serialVersionUID = 5594945031962091041L; - - private String context; - - public MyHttpServlet(String context) { - this.context = context; - } - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - String qs = req.getRequestURI() + "?" + req.getQueryString(); - String sha256Hex = DigestUtils.sha256Hex(qs); - resp.getWriter().write(FileUtils.readFileToString( - new File("src/test/resources/data/" + this.context + "/" + sha256Hex + ".xml"), StandardCharsets.UTF_8)); - } - } - -} diff --git a/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/MockOaipmhServer.java b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/MockOaipmhServer.java new file mode 100644 index 0000000..de7349b --- /dev/null +++ b/components/camel-oaipmh/src/test/java/org/apache/camel/oaipmh/utils/MockOaipmhServer.java @@ -0,0 +1,132 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.oaipmh.utils; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + +import com.github.tomakehurst.wiremock.WireMockServer; +import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder; +import com.github.tomakehurst.wiremock.common.FileSource; +import com.github.tomakehurst.wiremock.core.WireMockConfiguration; +import com.github.tomakehurst.wiremock.extension.Parameters; +import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer; +import com.github.tomakehurst.wiremock.http.Request; +import com.github.tomakehurst.wiremock.http.ResponseDefinition; +import org.apache.camel.test.AvailablePortFinder; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; + +import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; + +public final class MockOaipmhServer { + + private static Map<String, String> responseCache; + private static final String PASSWORD = "changeit"; + + private int httpPort; + private int httpsPort; + private WireMockServer server; + + private MockOaipmhServer(int httpPort, int httpsPort) { + this.httpPort = httpPort; + this.httpsPort = httpsPort; + } + + public static MockOaipmhServer create() { + int httpPort = AvailablePortFinder.getNextAvailable(); + int httpsPort = AvailablePortFinder.getNextAvailable(); + MockOaipmhServer server = new MockOaipmhServer(httpPort, httpsPort); + return server; + } + + /** + * Gets the response cache from the mocked data ZIP file. + */ + private static synchronized Map<String, String> getResponseCache() { + try { + if (responseCache == null) { + HashMap<String, String> cache = new HashMap<String, String>(); + + ZipInputStream zis = new ZipInputStream(MockOaipmhServer.class.getResourceAsStream("/data.zip")); + + ZipEntry entry = zis.getNextEntry(); + while (entry != null) { + if (!entry.isDirectory()) { + cache.put(StringUtils.substringAfterLast(entry.getName(), "/"), + IOUtils.toString(zis, StandardCharsets.UTF_8)); + } + entry = zis.getNextEntry(); + } + responseCache = Collections.unmodifiableMap(cache); + } + } catch (IOException ioex) { + throw new RuntimeException("An issue occured while initializing the OAI-PMH mock server reponse cache", ioex); + } + return responseCache; + } + + public void start() { + OaipmhMockTransformer transformer = new OaipmhMockTransformer(); + WireMockConfiguration config = wireMockConfig().extensions(transformer); + + config.httpsPort(httpsPort); + String keyStorePath = MockOaipmhServer.class.getResource("/jettyKS/localhost.p12").toExternalForm(); + config.keystorePath(keyStorePath); + config.keystorePassword(PASSWORD); + config.keyManagerPassword(PASSWORD); + + config.port(httpPort); + + server = new WireMockServer(config); + server.start(); + } + + public void stop() { + server.stop(); + } + + public int getHttpPort() { + return this.httpPort; + } + + public int getHttpsPort() { + return this.httpsPort; + } + + public static final class OaipmhMockTransformer extends ResponseDefinitionTransformer { + + @Override + public ResponseDefinition transform( + Request request, ResponseDefinition responseDefinition, FileSource files, Parameters parameters) { + String sha256Hex = DigestUtils.sha256Hex(request.getUrl()); + return new ResponseDefinitionBuilder().withStatus(200).withBody(getResponseCache().get(sha256Hex + ".xml")).build(); + } + + @Override + public String getName() { + return "oaipmh-mock-transformer"; + } + } + +}