You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by al...@apache.org on 2021/02/08 17:54:51 UTC
[camel] branch master updated: CAMEL-16168: Replaced the
JettyTestServer with wiremock
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 <al...@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";
+ }
+ }
+
+}