use of com.eviware.soapui.impl.wsdl.teststeps.RestTestRequest in project microcks by microcks.
the class SoapUIProjectImporter method buildRequest.
/**
* Build a domain Request from SoapUI RestTestRequest.
*/
private Request buildRequest(RestTestRequest rtr) {
Request request = new Request();
request.setName(rtr.getName());
request.setContent(rtr.getRequestContent());
request.setHeaders(buildHeaders(rtr.getRequestHeaders()));
// Add query parameters only (template are holded by the operation itself.)
RestParamsPropertyHolder paramsHolder = rtr.getParams();
for (int i = 0; i < paramsHolder.getPropertyCount(); i++) {
// if (paramsHolder.getPropertyAt(i).getStyle() == ParameterStyle.QUERY){
Parameter param = new Parameter();
param.setName(paramsHolder.getPropertyAt(i).getName());
param.setValue(paramsHolder.getPropertyAt(i).getValue());
request.addQueryParameter(param);
// }
}
return request;
}
use of com.eviware.soapui.impl.wsdl.teststeps.RestTestRequest in project microcks by microcks.
the class SoapUIProjectImporter method getRestMessageDefinitions.
/**
* Get message definition for an operation of a Rest mock service.
*/
private List<Exchange> getRestMessageDefinitions(RestMockService mockService, Operation operation) {
Map<Request, Response> result = new HashMap<Request, Response>();
// Collect mock responses for MockOperation corresponding to operation (it may be many).
List<MockResponse> mockResponses = new ArrayList<MockResponse>();
for (MockOperation mockOperation : mockService.getMockOperationList()) {
if (mockOperation.getName().equals(operation.getName())) {
mockResponses.addAll(mockOperation.getMockResponses());
}
}
// Collect also mock action configs, organizing them within a map with response name as key.
Map<String, RESTMockActionConfig> mockRestActionConfigsForResponses = new HashMap<String, RESTMockActionConfig>();
for (RESTMockActionConfig mockActionConfig : mockService.getConfig().getRestMockActionList()) {
if (mockActionConfig.getName().equals(operation.getName())) {
for (RESTMockResponseConfig mockRestResponse : mockActionConfig.getResponseList()) {
mockRestActionConfigsForResponses.put(mockRestResponse.getName(), mockActionConfig);
}
}
}
// Collect available test requests for this operation.
Map<String, RestTestRequest> availableRequests = collectRestTestRequests(operation);
// Then find only those that are candidates to mock response matching.
Map<RestTestRequest, MockResponse> requestToResponse = new HashMap<RestTestRequest, MockResponse>();
for (MockResponse mockResponse : mockResponses) {
// Check if there's a corresponding request in test cases.
RestTestRequest matchingRequest = availableRequests.get(mockResponse.getName());
if (matchingRequest == null) {
matchingRequest = availableRequests.get(mockResponse.getName() + " Request");
}
if (matchingRequest == null && mockResponse.getName().contains("Response")) {
matchingRequest = availableRequests.get(mockResponse.getName().replace("Response", "Request"));
}
if (matchingRequest == null) {
log.warn("No request found for response " + mockResponse.getName() + " into SoapUI project " + project.getName());
continue;
}
requestToResponse.put(matchingRequest, mockResponse);
}
for (Map.Entry<RestTestRequest, MockResponse> entry : requestToResponse.entrySet()) {
RestTestRequest rtr = entry.getKey();
MockResponse mr = entry.getValue();
String dispatchCriteria = null;
if (DispatchStyles.SEQUENCE.equals(operation.getDispatcher())) {
// Build a dispatch criteria from operation name projected onto resourcePath pattern
// eg. /deployment/byComponent/{component}/{version}.json => /deployment/byComponent/testREST/1.2.json
// for producing /component=testREST/version=1.2
RESTMockActionConfig actionConfig = mockRestActionConfigsForResponses.get(mr.getName());
dispatchCriteria = DispatchCriteriaHelper.extractFromURIPattern(operation.getName(), actionConfig.getResourcePath());
} else if (DispatchStyles.SCRIPT.equals(operation.getDispatcher())) {
// Build a dispatch criteria that is equal to response name (that script evaluation should return...)
dispatchCriteria = mr.getName();
}
Response response = buildResponse((RestMockResponse) mr, dispatchCriteria);
Request request = buildRequest(rtr);
result.put(request, response);
}
// Adapt map to list of Exchanges.
return result.entrySet().stream().map(entry -> new RequestResponsePair(entry.getKey(), entry.getValue())).collect(Collectors.toList());
}
use of com.eviware.soapui.impl.wsdl.teststeps.RestTestRequest in project microcks by microcks.
the class SoapUIProjectImporter method collectRestTestRequests.
/**
* Collect and filter by operation all the WsldTestrequest from the current project.
*/
private Map<String, RestTestRequest> collectRestTestRequests(Operation operation) {
Map<String, RestTestRequest> result = new HashMap<String, RestTestRequest>();
for (TestSuite testsuite : project.getTestSuiteList()) {
for (TestCase testcase : testsuite.getTestCaseList()) {
for (TestStep teststep : testcase.getTestStepList()) {
if (teststep instanceof RestTestRequestStep) {
RestTestRequestStep rs = (RestTestRequestStep) teststep;
RestTestRequest rr = rs.getTestRequest();
if (rs.getResourcePath().equals(operation.getName())) {
result.put(rr.getName(), rr);
}
}
}
}
}
return result;
}
Aggregations