1+ /*package org.metafacture.biblio;
2+
3+ import org.metafacture.framework.ObjectReceiver;
4+
5+ import com.github.tomakehurst.wiremock.client.MappingBuilder;
6+ import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
7+ import com.github.tomakehurst.wiremock.client.WireMock;
8+ import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
9+ import com.github.tomakehurst.wiremock.http.RequestMethod;
10+ import com.github.tomakehurst.wiremock.junit.WireMockRule;
11+ import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder;
12+ import com.github.tomakehurst.wiremock.matching.StringValuePattern;
13+ import com.github.tomakehurst.wiremock.matching.UrlPattern;
14+ import org.junit.Assert;
15+ import org.junit.ComparisonFailure;
16+ import org.junit.Rule;
17+ import org.junit.Test;
18+ import org.mockito.Mock;
19+ import org.mockito.junit.MockitoJUnit;
20+ import org.mockito.junit.MockitoRule;
21+
22+
23+ import java.io.BufferedReader;
24+ import java.io.IOException;
25+ import java.io.Reader;
26+ import java.util.Arrays;
27+ import java.util.function.BiConsumer;
28+ import java.util.function.Consumer;
29+
30+
31+ public final class SruOpenerTest {
32+
33+ private StringBuilder resultCollector = new StringBuilder();
34+ private int resultCollectorsResetStreamCount;
35+ private static final String RESPONSE_BODY = "response bödy"; // UTF-8
36+ private static final String TEST_URL = "/test/path";
37+
38+
39+ @Rule
40+ public MockitoRule mockitoRule = MockitoJUnit.rule();
41+
42+ @Rule
43+ public WireMockRule wireMockRule = new WireMockRule(WireMockConfiguration.wireMockConfig().
44+ jettyAcceptors(Runtime.getRuntime()
45+ .availableProcessors())
46+ .dynamicPort());
47+
48+ @Mock
49+ private ObjectReceiver<Reader> receiver;
50+
51+ public SruOpenerTest() {
52+ }
53+
54+ // @Test
55+ public void test(){
56+ SruOpener sruOpener = new SruOpener();
57+ sruOpener.setReceiver(new ObjectReceiver<Reader> () {
58+
59+ @Override
60+ public void process(final Reader obj) {
61+ BufferedReader in = new BufferedReader(obj);
62+ String line = null;
63+ StringBuilder rslt = new StringBuilder();
64+ while (true) {
65+ try {
66+ if (!((line = in.readLine()) != null)) break;
67+ }
68+ catch (IOException e) {
69+ throw new RuntimeException(e);
70+ }
71+ rslt.append(line);
72+ }
73+ String result = rslt.toString();
74+ if (result.length() > 768) {
75+ System.out.println(rslt.toString().substring(768, 1024));
76+ }
77+ else System.out.println("Antwort zu klein, gehe von ende der Anzhal der Records aus");
78+ resultCollector.append(obj);
79+ }
80+
81+ @Override
82+ public void resetStream() {
83+ ++resultCollectorsResetStreamCount;
84+ }
85+
86+ @Override
87+ public void closeStream() {
88+
89+ }
90+ });
91+
92+ // sruOpener.setQuery("dnb.isil%3DDE-Sol1");
93+ sruOpener.setQuery("WVN%3D24A05");
94+ sruOpener.setRecordSchema("MARC21plus-xml");
95+ sruOpener.setVersion("1.1");
96+ sruOpener.setStartRecord("1890");
97+ sruOpener.setTotal("32");
98+ sruOpener.process("https://services.dnb.de/sru/dnb");
99+ // System.out.println(resultCollector.toString());
100+ }
101+
102+ @Test
103+ public void shouldPerformGetRequestWithInputAsUrlByDefault() throws IOException {
104+ SruOpener sruOpener = new SruOpener();
105+ sruOpener.setQuery("WVN%3D24A05");
106+ sruOpener.setRecordSchema("MARC21plus-xml");
107+ sruOpener.setVersion("1.1");
108+ sruOpener.setStartRecord("1890");
109+ sruOpener.setTotal("32");
110+ shouldPerformRequest(TEST_URL,sruOpener);
111+ }
112+
113+
114+ mach lieber wie in metafix/src/test/java/org/metafacture/metafix/MetafixLookupTest.java wiremock
115+ private void shouldPerformRequest(String input, SruOpener sruOpener) throws IOException { // checkstyle-disable-line ParameterNumber
116+
117+ final BiConsumer<SruOpener, String> consumer;
118+ final Consumer<MappingBuilder> stubConsumer;
119+ final Consumer<RequestPatternBuilder> requestConsumer;
120+ final Consumer<ResponseDefinitionBuilder> responseConsumer = null;
121+ final String responseBody;
122+ final ResponseDefinitionBuilder response = WireMock.ok().withBody(RESPONSE_BODY);
123+ if (responseConsumer != null) {
124+ responseConsumer.accept(response);
125+ }
126+
127+ final String baseUrl = wireMockRule.baseUrl();
128+ final String url = String.format(TEST_URL, baseUrl);
129+
130+ final UrlPattern urlPattern = WireMock.urlPathEqualTo(TEST_URL);
131+
132+ final SruOpener opener = new SruOpener();
133+ opener.setReceiver(receiver);
134+ consumer.accept(opener, url);
135+
136+ final MappingBuilder stub = WireMock.request("GET", urlPattern).willReturn(response);
137+ if (stubConsumer != null) {
138+ stubConsumer.accept(stub);
139+ }
140+
141+ final RequestPatternBuilder request = new RequestPatternBuilder(RequestMethod.fromString("GET"), urlPattern)
142+ .withRequestBody(method.getRequestHasBody() ? WireMock.equalTo(REQUEST_BODY) : WireMock.absent());
143+ if (requestConsumer != null) {
144+ requestConsumer.accept(request);
145+ }
146+
147+ WireMock.stubFor(stub);
148+
149+ opener.process(String.format(input, baseUrl));
150+
151+ // use the opener a second time in a workflow:
152+ opener.process(String.format(input, baseUrl));
153+
154+ opener.closeStream();
155+
156+
157+ WireMock.verify(request);
158+ }
159+
160+
161+ }
162+ */
0 commit comments