Skip to content

Commit 65e7592

Browse files
committed
WIP add test (#510)
1 parent 5aa1762 commit 65e7592

File tree

1 file changed

+196
-0
lines changed

1 file changed

+196
-0
lines changed
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
package org.metafacture.io;
2+
3+
import org.junit.*;
4+
import org.metafacture.framework.MetafactureException;
5+
import org.metafacture.framework.ObjectReceiver;
6+
7+
import com.github.tomakehurst.wiremock.client.MappingBuilder;
8+
import com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder;
9+
import com.github.tomakehurst.wiremock.client.WireMock;
10+
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
11+
import com.github.tomakehurst.wiremock.http.RequestMethod;
12+
import com.github.tomakehurst.wiremock.junit.WireMockRule;
13+
import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder;
14+
import com.github.tomakehurst.wiremock.matching.StringValuePattern;
15+
import com.github.tomakehurst.wiremock.matching.UrlPattern;
16+
import org.metafacture.framework.helpers.DefaultObjectPipe;
17+
import org.metafacture.framework.helpers.DefaultObjectReceiver;
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 static StringBuilder resultCollector = new StringBuilder();
34+
private static final String RESPONSE_BODY = "response bödy"; // UTF-8
35+
private static final String TEST_URL = "/test/path";
36+
private static SruOpener sruOpener = new SruOpener();
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+
@Before
55+
public void setUp() {
56+
sruOpener = new SruOpener();
57+
final char[] buffer = new char[ 1024 * 1024 * 16];
58+
sruOpener.setReceiver(new DefaultObjectPipe<Reader, ObjectReceiver<String>>() {
59+
@Override
60+
public void process(final Reader reader) {
61+
int size;
62+
try {
63+
while ((size = reader.read(buffer)) != -1) {
64+
int offset = 0;
65+
for (int i = 0; i < size; ++i) {
66+
resultCollector.append(buffer, offset, size - offset);
67+
offset = i + 1;
68+
}
69+
}
70+
}
71+
catch (final IOException e) {
72+
throw new MetafactureException(e);
73+
}
74+
}
75+
});
76+
}
77+
78+
79+
@Test
80+
public void test_(){
81+
82+
// sruOpener.setQuery("dnb.isil%3DDE-Sol1");
83+
sruOpener.setQuery("WVN%3D24A05");
84+
sruOpener.setRecordSchema("MARC21plus-xml");
85+
sruOpener.setVersion("1.1");
86+
sruOpener.setStartRecord("1890");
87+
sruOpener.setMaximumRecords("1");
88+
sruOpener.setTotal("3");
89+
sruOpener.process("https://services.dnb.de/sru/dnb");
90+
System.out.println(resultCollector.toString());
91+
}
92+
93+
/* @Test
94+
public void shouldPerformGetRequestWithInputAsUrlByDefault() throws IOException {
95+
SruOpener sruOpener = new SruOpener();
96+
sruOpener.setQuery("WVN%3D24A05");
97+
sruOpener.setRecordSchema("MARC21plus-xml");
98+
sruOpener.setVersion("1.1");
99+
sruOpener.setStartRecord("1890");
100+
sruOpener.setTotal("32");
101+
shouldPerformRequest(TEST_URL,sruOpener);
102+
}*/
103+
104+
105+
//mach lieber wie in metafix/src/test/java/org/metafacture/metafix/MetafixLookupTest.java wiremock
106+
/* private void shouldPerformRequest(String input, SruOpener sruOpener) throws IOException { // checkstyle-disable-line ParameterNumber
107+
108+
final BiConsumer<SruOpener, String> consumer = null;
109+
final Consumer<MappingBuilder> stubConsumer;
110+
final Consumer<RequestPatternBuilder> requestConsumer;
111+
final Consumer<ResponseDefinitionBuilder> responseConsumer = null;
112+
final String responseBody;
113+
final ResponseDefinitionBuilder response = WireMock.ok().withBody(RESPONSE_BODY);
114+
if (responseConsumer != null) {
115+
responseConsumer.accept(response);
116+
}
117+
118+
final String baseUrl = wireMockRule.baseUrl();
119+
final String url = String.format(TEST_URL, baseUrl);
120+
121+
final UrlPattern urlPattern = WireMock.urlPathEqualTo(TEST_URL);
122+
123+
final SruOpener opener = new SruOpener();
124+
opener.setReceiver(receiver);
125+
final MappingBuilder stub = WireMock.request("GET", urlPattern).willReturn(response);
126+
if (stubConsumer != null) {
127+
stubConsumer.accept(stub);
128+
}
129+
130+
final RequestPatternBuilder request = new RequestPatternBuilder(RequestMethod.fromString("GET"), urlPattern)
131+
.withRequestBody(method.getRequestHasBody() ? WireMock.equalTo(REQUEST_BODY) : WireMock.absent());
132+
if (requestConsumer != null) {
133+
requestConsumer.accept(request);
134+
}
135+
136+
WireMock.stubFor(stub);
137+
138+
opener.process(String.format(input, baseUrl));
139+
140+
// use the opener a second time in a workflow:
141+
opener.process(String.format(input, baseUrl));
142+
143+
opener.closeStream();
144+
145+
146+
WireMock.verify(request);
147+
}
148+
*/
149+
150+
@Test
151+
public void test(){
152+
SruOpener sruOpener = new SruOpener();
153+
RecordReader recordReader = new RecordReader();
154+
recordReader.setReceiver(new ObjectStdoutWriter<String>());
155+
sruOpener.setReceiver(recordReader);// {
156+
157+
158+
/* @Override
159+
public void process(final XmlReceiver obj) {
160+
BufferedReader in = new BufferedReader(obj);
161+
String line = null;
162+
StringBuilder rslt = new StringBuilder();
163+
while (true) {
164+
try {
165+
if (!((line = in.readLine()) != null)) break;
166+
}
167+
catch (IOException e) {
168+
throw new RuntimeException(e);
169+
}final InOrder ordered = Mockito.inOrder(receiver);
170+
171+
rslt.append(line);
172+
}*/
173+
/* StreamLiteralFormatter streamLiteralFormatter = new StreamLiteralFormatter();
174+
ObjectStdoutWriter<String> objectStdoutWriter = new ObjectStdoutWriter<String>();
175+
XmlElementSplitter xmlElementSplitter = new XmlElementSplitter();
176+
streamLiteralFormatter.setReceiver(objectStdoutWriter);
177+
xmlElementSplitter.setReceiver(streamLiteralFormatter);
178+
xmlDecoder.setReceiver(xmlElementSplitter);*/
179+
// System.out.println(rslt.toString());
180+
// resultCollector.append(obj);
181+
//}
182+
183+
sruOpener.setQuery("dnb.isil%3DDE-Sol1");
184+
// sruOpener.setQuery("WVN%3D24A05");
185+
sruOpener.setRecordSchema("MARC21plus-xml");
186+
sruOpener.setVersion("1.1");
187+
sruOpener.setStartRecord("3029");
188+
sruOpener.setMaximumRecords("1");
189+
sruOpener.setTotal("1");
190+
// sruOpener.process("https://services.dnb.de/sru/dnb");
191+
sruOpener.process("https://services.dnb.de/sru/zdb");
192+
// sruOpener.process("https://amsquery.stadt-zuerich.ch/sru/");
193+
194+
// System.out.println(resultCollector.toString());
195+
}
196+
}

0 commit comments

Comments
 (0)