use of ee.ria.xroad.common.message.SoapParser in project X-Road by nordic-institute.
the class QueryRequestHandlerTest method handleHealthDataRequest.
/**
* Ensure that an health data response data is filtered and body is
* constructed correctly.
*/
@Test
public void handleHealthDataRequest() throws Exception {
InputStream is = new FileInputStream(HEALTH_DATA_REQUEST);
SoapParser parser = new SoapParserImpl();
SoapMessageImpl request = (SoapMessageImpl) parser.parse(MimeTypes.TEXT_XML_UTF8, is);
QueryRequestHandler handler = new HealthDataRequestHandler(new TestMetricsRegistry());
OutputStream out = new ByteArrayOutputStream();
handler.handle(request, out, ct -> testContentType = ct);
String baseContentType = MimeUtils.getBaseContentType(testContentType);
assertEquals(MimeTypes.TEXT_XML, baseContentType);
SoapMessageImpl response = (SoapMessageImpl) parser.parse(MimeTypes.TEXT_XML, IOUtils.toInputStream(out.toString()));
GetSecurityServerHealthDataResponseType responseData = JaxbUtils.createUnmarshaller(GetSecurityServerHealthDataResponseType.class).unmarshal(SoapUtils.getFirstChild(response.getSoap().getSOAPBody()), GetSecurityServerHealthDataResponseType.class).getValue();
assertEquals(TEST_TIMESTAMP, responseData.getMonitoringStartupTimestamp());
assertEquals(2, responseData.getServicesEvents().getServiceEvents().size());
assertEquals(ServiceId.create("XTEE-CI-XM", "GOV", "00000001", "System1", "xroad/GetRandom", "v2"), responseData.getServicesEvents().getServiceEvents().get(0).getService());
assertEquals(5, responseData.getServicesEvents().getServiceEvents().get(0).getLastPeriodStatistics().getSuccessfulRequestCount());
assertEquals(5, responseData.getServicesEvents().getServiceEvents().get(0).getLastPeriodStatistics().getUnsuccessfulRequestCount());
}
use of ee.ria.xroad.common.message.SoapParser in project X-Road by nordic-institute.
the class QueryRequestHandlerTest method handleOperationalDataRequest.
/**
* Ensure that an operational data response contains the required attachment
* that is correctly referenced from within the SOAP body.
*/
@Test
public void handleOperationalDataRequest() throws Exception {
InputStream is = new FileInputStream(OPERATIONAL_DATA_REQUEST);
SoapParser parser = new SoapParserImpl();
SoapMessageImpl request = (SoapMessageImpl) parser.parse(MimeTypes.TEXT_XML_UTF8, is);
QueryRequestHandler handler = new OperationalDataRequestHandler() {
@Override
protected OperationalDataRecords getOperationalDataRecords(ClientId filterByClient, long recordsFrom, long recordsTo, ClientId filterByServiceProvider, Set<String> outputFields) {
return new OperationalDataRecords(Collections.emptyList());
}
@Override
protected ClientId getClientForFilter(ClientId clientId, SecurityServerId serverId) throws Exception {
return null;
}
};
OutputStream out = new ByteArrayOutputStream();
handler.handle(request, out, ct -> testContentType = ct);
String baseContentType = MimeUtils.getBaseContentType(testContentType);
assertEquals(MimeTypes.MULTIPART_RELATED, baseContentType);
SoapMessageDecoder decoder = new SoapMessageDecoder(testContentType, new SoapMessageDecoder.Callback() {
@Override
public void soap(SoapMessage message, Map<String, String> headers) throws Exception {
assertEquals("cid:" + OperationalDataRequestHandler.CID, findRecordsContentId(message));
}
@Override
public void attachment(String contentType, InputStream content, Map<String, String> additionalHeaders) throws Exception {
String expectedCid = "<" + OperationalDataRequestHandler.CID + ">";
assertEquals(expectedCid, additionalHeaders.get("content-id"));
}
@Override
public void onCompleted() {
// Do nothing.
}
@Override
public void onError(Exception t) throws Exception {
throw t;
}
@Override
public void fault(SoapFault fault) throws Exception {
throw fault.toCodedException();
}
});
decoder.parse(IOUtils.toInputStream(out.toString()));
}
Aggregations