19
19
import org .metafacture .framework .StreamReceiver ;
20
20
import org .metafacture .metamorph .api .MorphExecutionException ;
21
21
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 ;
22
29
import org .junit .jupiter .api .Test ;
23
30
import org .junit .jupiter .api .extension .ExtendWith ;
24
31
import org .mockito .Mock ;
25
32
import org .mockito .junit .jupiter .MockitoExtension ;
26
33
34
+ import java .io .BufferedReader ;
27
35
import java .io .IOException ;
36
+ import java .io .InputStreamReader ;
28
37
import java .util .Arrays ;
38
+ import java .util .stream .Collectors ;
29
39
30
40
/**
31
41
* Tests Metafix lookup. Following the cheat sheet examples at
37
47
public class MetafixLookupTest {
38
48
private static final String CSV_MAP = "src/test/resources/org/metafacture/metafix/maps/test.csv" ;
39
49
private static final String RDF_MAP = "src/test/resources/org/metafacture/metafix/maps/test.ttl" ;
40
-
41
50
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 ;
43
53
private static final String TSV_MAP = "src/test/resources/org/metafacture/metafix/maps/test.tsv" ;
44
-
45
54
private static final String LOOKUP = "lookup('title.*'," ;
46
55
56
+ private static final WireMockServer WIRE_MOCK_SERVER = new WireMockRule (WireMockConfiguration .wireMockConfig ()
57
+ .jettyAcceptors (Runtime .getRuntime ().availableProcessors ())
58
+ .dynamicPort ());
59
+
47
60
@ Mock
48
61
private StreamReceiver streamReceiver ;
49
62
@@ -1028,8 +1041,11 @@ public void shouldLookupInExternalRdfMapGetObjectOfSubjectWithTargetedPredicate(
1028
1041
1029
1042
@ Test
1030
1043
public void shouldExplicitLookupRdfUrlWithRedirection () {
1044
+ final String baseUrl = WIRE_MOCK_SERVER .baseUrl ();
1045
+ final String mockedRdfUrl = String .format (RDF_URL , baseUrl );
1046
+
1031
1047
MetafixTestHelpers .assertFix (streamReceiver , Arrays .asList (
1032
- "put_rdfmap('" + RDF_URL + "', 'testMapSkosNotation', target: 'skos:prefLabel')" ,
1048
+ "put_rdfmap('" + mockedRdfUrl + "', 'testMapSkosNotation', target: 'skos:prefLabel')" ,
1033
1049
"lookup('prefLabel', 'testMapSkosNotation' , target: 'skos:prefLabel')"
1034
1050
),
1035
1051
i -> {
@@ -1047,8 +1063,11 @@ public void shouldExplicitLookupRdfUrlWithRedirection() {
1047
1063
1048
1064
@ Test
1049
1065
public void shouldLookupRdfUrlWithRedirection () {
1066
+ final String baseUrl = WIRE_MOCK_SERVER .baseUrl ();
1067
+ final String mockedRdfUrl = String .format (RDF_URL , baseUrl );
1068
+
1050
1069
MetafixTestHelpers .assertFix (streamReceiver , Arrays .asList (
1051
- "lookup('prefLabel', '" + RDF_URL + "', target: 'skos:prefLabel')"
1070
+ "lookup('prefLabel', '" + mockedRdfUrl + "', target: 'skos:prefLabel')"
1052
1071
),
1053
1072
i -> {
1054
1073
i .startRecord ("1" );
@@ -1287,4 +1306,25 @@ private void assertRdfMapWithDifferentTargets(final String... fixDef) {
1287
1306
);
1288
1307
}
1289
1308
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
+ }
1290
1330
}
0 commit comments