Skip to content

Commit 253e25c

Browse files
committed
Add wiremock to test RDF url (metafacture-core#415)
This tests a redirected URL handled in org.metafacture.metafix.maps.RdfMap#read.
1 parent c81ae7d commit 253e25c

File tree

4 files changed

+6866
-5
lines changed

4 files changed

+6866
-5
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ subprojects {
4646
'mockito': '2.27.0',
4747
'requirejs': '2.3.6',
4848
'slf4j': '1.7.21',
49+
'wiremock': '2.33.2',
4950
'xtext': '2.26.0',
5051
'guava': '29.0-jre'
5152
]

metafix/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ dependencies {
2626
testImplementation "org.junit.platform:junit-platform-launcher:${versions.junit_platform}"
2727
testImplementation "org.eclipse.xtext:org.eclipse.xtext.testing:${versions.xtext}"
2828
testImplementation "org.eclipse.xtext:org.eclipse.xtext.xbase.testing:${versions.xtext}"
29+
testImplementation "com.github.tomakehurst:wiremock-jre8:${versions.wiremock}"
2930

3031
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${versions.junit_jupiter}"
3132

metafix/src/test/java/org/metafacture/metafix/MetafixLookupTest.java

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,23 @@
1919
import org.metafacture.framework.StreamReceiver;
2020
import org.metafacture.metamorph.api.MorphExecutionException;
2121

22+
import com.github.tomakehurst.wiremock.WireMockServer;
23+
import com.github.tomakehurst.wiremock.client.WireMock;
24+
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
25+
import com.github.tomakehurst.wiremock.junit.WireMockRule;
26+
import com.github.tomakehurst.wiremock.matching.UrlPattern;
27+
import org.junit.jupiter.api.AfterAll;
28+
import org.junit.jupiter.api.BeforeAll;
2229
import org.junit.jupiter.api.Test;
2330
import org.junit.jupiter.api.extension.ExtendWith;
2431
import org.mockito.Mock;
2532
import org.mockito.junit.jupiter.MockitoExtension;
2633

34+
import java.io.BufferedReader;
2735
import java.io.IOException;
36+
import java.io.InputStreamReader;
2837
import java.util.Arrays;
38+
import java.util.stream.Collectors;
2939

3040
/**
3141
* Tests Metafix lookup. Following the cheat sheet examples at
@@ -37,13 +47,16 @@
3747
public class MetafixLookupTest {
3848
private static final String CSV_MAP = "src/test/resources/org/metafacture/metafix/maps/test.csv";
3949
private static final String RDF_MAP = "src/test/resources/org/metafacture/metafix/maps/test.ttl";
40-
4150
private static final String HCRT_RDF_MAP = "src/test/resources/org/metafacture/metafix/maps/hcrt.ttl";
42-
private static final String RDF_URL = "http://purl.org/lobid/rpb";
51+
private static final String RDF_PATH = "/maps/rpb.ttl";
52+
private static final String RDF_URL = "%s" + RDF_PATH;
4353
private static final String TSV_MAP = "src/test/resources/org/metafacture/metafix/maps/test.tsv";
44-
4554
private static final String LOOKUP = "lookup('title.*',";
4655

56+
private static final WireMockServer WIRE_MOCK_SERVER = new WireMockRule(WireMockConfiguration.wireMockConfig()
57+
.jettyAcceptors(Runtime.getRuntime().availableProcessors())
58+
.dynamicPort());
59+
4760
@Mock
4861
private StreamReceiver streamReceiver;
4962

@@ -1028,8 +1041,11 @@ public void shouldLookupInExternalRdfMapGetObjectOfSubjectWithTargetedPredicate(
10281041

10291042
@Test
10301043
public void shouldExplicitLookupRdfUrlWithRedirection() {
1044+
final String baseUrl = WIRE_MOCK_SERVER.baseUrl();
1045+
final String mockedRdfUrl = String.format(RDF_URL, baseUrl);
1046+
10311047
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
1032-
"put_rdfmap('" + RDF_URL + "', 'testMapSkosNotation', target: 'skos:prefLabel')",
1048+
"put_rdfmap('" + mockedRdfUrl + "', 'testMapSkosNotation', target: 'skos:prefLabel')",
10331049
"lookup('prefLabel', 'testMapSkosNotation' , target: 'skos:prefLabel')"
10341050
),
10351051
i -> {
@@ -1047,8 +1063,11 @@ public void shouldExplicitLookupRdfUrlWithRedirection() {
10471063

10481064
@Test
10491065
public void shouldLookupRdfUrlWithRedirection() {
1066+
final String baseUrl = WIRE_MOCK_SERVER.baseUrl();
1067+
final String mockedRdfUrl = String.format(RDF_URL, baseUrl);
1068+
10501069
MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList(
1051-
"lookup('prefLabel', '" + RDF_URL + "', target: 'skos:prefLabel')"
1070+
"lookup('prefLabel', '" + mockedRdfUrl + "', target: 'skos:prefLabel')"
10521071
),
10531072
i -> {
10541073
i.startRecord("1");
@@ -1287,4 +1306,25 @@ private void assertRdfMapWithDifferentTargets(final String... fixDef) {
12871306
);
12881307
}
12891308

1309+
@BeforeAll
1310+
static void setStubForWireMock() {
1311+
WIRE_MOCK_SERVER.start();
1312+
final UrlPattern urlPattern = WireMock.urlPathEqualTo(RDF_PATH);
1313+
final String redirectToUrl = "/redirect" + RDF_PATH;
1314+
final UrlPattern urlPatternRedirectToUrl = WireMock.urlPathEqualTo(redirectToUrl);
1315+
1316+
WIRE_MOCK_SERVER.stubFor(WireMock.get(urlPattern)
1317+
.willReturn(WireMock.temporaryRedirect(redirectToUrl)));
1318+
final String responseBody = new BufferedReader(new InputStreamReader(MetafixLookupTest.class.getResourceAsStream("." + RDF_PATH))).lines()
1319+
.collect(Collectors.joining("\n"));
1320+
WIRE_MOCK_SERVER.stubFor(WireMock.get(urlPatternRedirectToUrl)
1321+
.willReturn(WireMock.aResponse()
1322+
.withHeader("Content-Type", "text/turtle")
1323+
.withBody(responseBody)));
1324+
}
1325+
1326+
@AfterAll
1327+
static void tearDownWireMock() {
1328+
WIRE_MOCK_SERVER.stop();
1329+
}
12901330
}

0 commit comments

Comments
 (0)