use of ee.ria.xroad.common.conf.serverconf.model.DescriptionType in project X-Road by nordic-institute.
the class RestMetadataServiceHandlerTest method init.
/**
* Init data for tests
*/
@Before
public void init() {
GlobalConf.reload(new TestSuiteGlobalConf());
KeyConf.reload(new TestSuiteKeyConf());
ServerConf.reload(new TestSuiteServerConf() {
@Override
public DescriptionType getDescriptionType(ServiceId service) {
return DescriptionType.OPENAPI3;
}
@Override
public String getServiceDescriptionURL(ServiceId service) {
if (SUBSYSTEM_FOR_JSON_FILE.equals(service.getSubsystemCode())) {
return "http://localhost:9858/petstore.json";
} else if (SUBSYSTEM_FOR_UNSUPPORTED_YAML_FILE.equals(service.getSubsystemCode())) {
return "http://localhost:9858/openapi_incompatible_version.yaml";
} else {
return "http://localhost:9858/petstore.yaml";
}
}
});
httpClientMock = mock(HttpClient.class);
mockRequest = mock(HttpServletRequest.class);
mockResponse = mock(HttpServletResponse.class);
mockProxyMessage = mock(ProxyMessage.class);
mockServer = new WireMockServer(options().port(MOCK_SERVER_PORT));
mockServer.stubFor(WireMock.any(urlPathEqualTo("/petstore.json")).willReturn(aResponse().withBodyFile("petstore.json")));
mockServer.stubFor(WireMock.any(urlPathEqualTo("/petstore.yaml")).willReturn(aResponse().withBodyFile("petstore.yaml")));
mockServer.start();
}
use of ee.ria.xroad.common.conf.serverconf.model.DescriptionType in project X-Road by nordic-institute.
the class AllowedMethodsMessage method startUp.
@Override
protected void startUp() throws Exception {
super.startUp();
ServerConf.reload(new TestSuiteServerConf() {
@Override
public List<ServiceId> getAllowedServicesByDescriptionType(ClientId serviceProvider, ClientId client, DescriptionType descriptionType) {
assertThat("Wrong client in query", client, is(expectedClientQuery));
assertThat("Wrong service provider in query", serviceProvider, is(expectedProviderQuery));
return expectedServices;
}
});
}
use of ee.ria.xroad.common.conf.serverconf.model.DescriptionType in project X-Road by nordic-institute.
the class ListMethodsMessage method startUp.
@Override
protected void startUp() throws Exception {
super.startUp();
ServerConf.reload(new TestSuiteServerConf() {
@Override
public List<ServiceId> getServicesByDescriptionType(ClientId serviceProvider, DescriptionType descriptionType) {
assertThat("Client id does not match expected", serviceProvider, is(expectedClientId));
return expectedServices;
}
});
}
use of ee.ria.xroad.common.conf.serverconf.model.DescriptionType in project X-Road by nordic-institute.
the class RestMetadataServiceHandlerImpl method handleGetOpenApi.
private void handleGetOpenApi(ProxyMessage requestProxyMessage) throws IOException, HttpClientCreator.HttpClientCreatorException, URISyntaxException {
List<NameValuePair> pairs = URLEncodedUtils.parse(requestProxyMessage.getRest().getQuery(), Charset.forName("UTF-8"));
String targetServiceCode = null;
for (NameValuePair pair : pairs) {
log.trace("{} : {}", pair.getName(), pair.getValue());
if (pair.getName().equalsIgnoreCase(QUERY_PARAM_SERVICECODE)) {
targetServiceCode = pair.getValue();
}
}
if (targetServiceCode == null || targetServiceCode.isEmpty()) {
throw new CodedException(X_INVALID_REQUEST, "Missing serviceCode in message body");
}
ServiceId targetServiceId = ServiceId.create(requestProxyMessage.getRest().getServiceId().getClientId(), targetServiceCode);
log.trace("targetServiceId={}", targetServiceId);
DescriptionType descriptionType = ServerConf.getDescriptionType(targetServiceId);
if (descriptionType == null) {
throw new CodedException(X_INTERNAL_ERROR, String.format("Service not found: %s", targetServiceId.toString()));
}
if (descriptionType != DescriptionType.OPENAPI3) {
throw new CodedException(X_INTERNAL_ERROR, String.format("Invalid service type: %s", descriptionType.toString()));
}
String serviceDescriptionURL = ServerConf.getServiceDescriptionURL(targetServiceId);
HttpClient client = httpClientCreator.getHttpClient();
HttpContext httpContext = new BasicHttpContext();
// ServerMessageProcessor uses the same method to pass the ServiceId to CustomSSLSocketFactory
httpContext.setAttribute(ServiceId.class.getName(), targetServiceId);
URI uri = new URI(serviceDescriptionURL);
HttpResponse response = client.execute(new HttpGet(uri), httpContext);
StatusLine statusLine = response.getStatusLine();
if (HttpStatus.SC_OK != statusLine.getStatusCode()) {
throw new CodedException(X_INTERNAL_ERROR, String.format("Failed reading service description from %s. Status: %s Reason: %s", serviceDescriptionURL, statusLine.getStatusCode(), statusLine.getReasonPhrase()));
}
InputStream responseContent = response.getEntity().getContent();
try {
OpenapiDescriptionFiletype filetype = getFileType(response, uri);
Openapi3Anonymiser anonymiser = new Openapi3Anonymiser();
if (OpenapiDescriptionFiletype.JSON.equals(filetype)) {
anonymiser.anonymiseJson(responseContent, restResponseBody);
} else {
anonymiser.anonymiseYaml(responseContent, restResponseBody);
}
} catch (IOException e) {
throw new CodedException(X_INTERNAL_ERROR, String.format("Failed overwriting origin URL for the openapi servers for %s", serviceDescriptionURL));
}
if (response.containsHeader(MimeUtils.HEADER_CONTENT_TYPE)) {
restResponse.getHeaders().add(new BasicHeader(MimeUtils.HEADER_CONTENT_TYPE, response.getFirstHeader(MimeUtils.HEADER_CONTENT_TYPE).getValue()));
} else {
restResponse.getHeaders().add(new BasicHeader(MimeUtils.HEADER_CONTENT_TYPE, DEFAULT_GETOPENAPI_CONTENT_TYPE));
}
}
use of ee.ria.xroad.common.conf.serverconf.model.DescriptionType in project X-Road by nordic-institute.
the class RestProxyTest method shouldNotAllowCallingWSDLServices.
@Test
public void shouldNotAllowCallingWSDLServices() {
ServerConf.reload(new TestServerConf(servicePort) {
@Override
public DescriptionType getDescriptionType(ServiceId service) {
if ("wsdl".equals(service.getServiceCode())) {
return DescriptionType.WSDL;
}
return DescriptionType.REST;
}
});
given().baseUri("http://127.0.0.1").port(proxyClientPort).header("X-Road-Client", "EE/BUSINESS/consumer/subsystem").get(PREFIX + "/EE/BUSINESS/producer/sub/wsdl").then().statusCode(500).header("X-Road-Error", "Server.ServerProxy.ServiceType");
}
Aggregations