public static SoapMockResponse generateSoapMockResponse(){ final SoapXPathExpression soapXPathExpression1 = new SoapXPathExpression(); final SoapXPathExpression soapXPathExpression2 = new SoapXPathExpression(); soapXPathExpression1.setExpression("//Request/Name[text()='Input1']"); soapXPathExpression2.setExpression("//Request/Name[text()='Input2']"); final SoapMockResponse soapMockResponse = new SoapMockResponse(); soapMockResponse.setName("Soap mock response name"); soapMockResponse.setBody("Soap mock response body"); soapMockResponse.setId("SOAP MOCK RESPONSE"); soapMockResponse.setXpathExpression("//Request/Name[text()='Input1']"); soapMockResponse.setXpathExpressions(Arrays.asList(soapXPathExpression1, soapXPathExpression2)); soapMockResponse.setStatus(SoapMockResponseStatus.ENABLED); return soapMockResponse; } }
private Optional<SoapMockResponse> getDefaultMockResponse(final SoapOperation soapOperation, final List<SoapMockResponse> mockResponses){ final String defaultResponseId = soapOperation.getDefaultMockResponseId(); if(defaultResponseId != null && !defaultResponseId.isEmpty()){ LOGGER.info("Use the default response"); for (SoapMockResponse tmpMockResponse : mockResponses) { if(defaultResponseId.equals(tmpMockResponse.getId())){ return Optional.of(tmpMockResponse); } } LOGGER.error("Unable to find the default response"); } return Optional.empty(); }
/** * The process message is responsible for processing an incoming serviceTask and generate * a response based on the incoming serviceTask input * @param serviceTask The serviceTask that will be processed by the service * @return A result based on the processed incoming serviceTask * @see ServiceTask * @see ServiceResult */ @Override public ServiceResult<UpdateSoapMockResponseOutput> process(final ServiceTask<UpdateSoapMockResponseInput> serviceTask) { final UpdateSoapMockResponseInput input = serviceTask.getInput(); final SoapMockResponse updated = input.getMockResponse(); final SoapMockResponse mockResponse = this.mockResponseRepository.findOne(input.getMockResponseId()); mockResponse.setName(updated.getName()); mockResponse.setBody(updated.getBody()); mockResponse.setHttpStatusCode(updated.getHttpStatusCode()); mockResponse.setStatus(updated.getStatus()); mockResponse.setHttpHeaders(updated.getHttpHeaders()); mockResponse.setUsingExpressions(updated.isUsingExpressions()); mockResponse.setXpathExpressions(updated.getXpathExpressions()); final SoapMockResponse updatedSoapMockResponse = mockResponseRepository.update(input.getMockResponseId(), mockResponse); return createServiceResult(UpdateSoapMockResponseOutput.builder() .mockResponse(updatedSoapMockResponse) .build()); } }
private static SoapMockResponse createSoapMockResponse(final String defaultBody){ final SoapMockResponse mockResponse = new SoapMockResponse(); mockResponse.setBody(defaultBody); mockResponse.setStatus(SoapMockResponseStatus.ENABLED); mockResponse.setName(AUTO_GENERATED_MOCK_RESPONSE_DEFAULT_NAME); mockResponse.setHttpStatusCode(DEFAULT_HTTP_STATUS_CODE); return mockResponse; }
private SoapMockResponse createSoapMockResponse(String name) { SoapMockResponse dto = new SoapMockResponse(); dto.setName(name); return dto; } }
final SoapMockResponse soapMockResponse = new SoapMockResponse(); soapMockResponse.setBody(RESPONSE_BODY); soapMockResponse.setContentEncodings(new ArrayList<>()); soapMockResponse.setHttpHeaders(Arrays.asList(contentTypeHeader, acceptHeader)); soapMockResponse.setHttpStatusCode(200); soapMockResponse.setId("MockResponseId"); soapMockResponse.setName("Mocked response"); soapMockResponse.setStatus(SoapMockResponseStatus.ENABLED); soapMockResponse.setUsingExpressions(false);
.portId(portId) .operationId(operation) .mockResponseId(mockResponse.getId()) .mockResponse(mockResponse) .build(); Mockito.when(mockResponseRepository.findOne(mockResponse.getId())).thenReturn(mockResponse); Mockito.when(mockResponseRepository.update(Mockito.anyString(), Mockito.any(SoapMockResponse.class))).thenReturn(mockResponse); final SoapMockResponse returnedSoapMockResponse = output.getMockResponse(); Mockito.verify(mockResponseRepository, Mockito.times(1)).findOne(mockResponse.getId()); Mockito.verify(mockResponseRepository, Mockito.times(1)).update(mockResponse.getId(), mockResponse); Assert.assertEquals(mockResponse.getId(), returnedSoapMockResponse.getId()); Assert.assertEquals(mockResponse.getName(), returnedSoapMockResponse.getName()); Assert.assertEquals(mockResponse.getStatus(), returnedSoapMockResponse.getStatus()); Assert.assertEquals(mockResponse.getBody(), returnedSoapMockResponse.getBody()); Assert.assertEquals(mockResponse.getHttpStatusCode(), returnedSoapMockResponse.getHttpStatusCode()); Assert.assertEquals(mockResponse.getStatus(), returnedSoapMockResponse.getStatus()); Assert.assertEquals(mockResponse.isUsingExpressions(), returnedSoapMockResponse.isUsingExpressions()); Assert.assertEquals(mockResponse.getXpathExpressions(), returnedSoapMockResponse.getXpathExpressions());
@Test public void testProcess(){ final String projectId = "projectId"; final String portId = "portId"; final String operationId = "operationId"; final SoapMockResponse response1 = new SoapMockResponse(); response1.setId("Response1"); final SoapMockResponse response2 = new SoapMockResponse(); response2.setId("Response2"); final List<SoapMockResponse> responses = Arrays.asList(response1, response2); final DeleteSoapMockResponsesInput input = DeleteSoapMockResponsesInput.builder() .projectId(projectId) .portId(portId) .operationId(operationId) .mockResponses(responses) .build(); final ServiceTask<DeleteSoapMockResponsesInput> serviceTask = new ServiceTask<DeleteSoapMockResponsesInput>(input); final ServiceResult<DeleteSoapMockResponsesOutput> serviceResult = service.process(serviceTask); Mockito.verify(mockResponseRepository, Mockito.times(1)).delete("Response1"); Mockito.verify(mockResponseRepository, Mockito.times(1)).delete("Response2"); }
.build()); SoapMockResponse soapMockResponse = readSoapMockResponseOutput.getMockResponse(); soapMockResponse.setStatus(status); serviceProcessor.process(UpdateSoapMockResponseInput.builder() .projectId(soapProjectId) .build()); SoapMockResponse soapMockResponse = readSoapMockResponseOutput.getMockResponse(); soapMockResponse.setId(null); soapMockResponse.setName(String.format("%s %s", copyOfLabel, soapMockResponse.getName())); serviceProcessor.process(CreateSoapMockResponseInput.builder() .projectId(soapProjectId)
final List<SoapMockResponse> mockResponses = new ArrayList<SoapMockResponse>(); for(SoapMockResponse mockResponse : soapOperation.getMockResponses()){ if(mockResponse.getStatus().equals(SoapMockResponseStatus.ENABLED)){ mockResponses.add(mockResponse); } else if (soapOperation.getResponseStrategy().equals(SoapResponseStrategy.XPATH_INPUT)) { for (SoapMockResponse testedMockResponse : mockResponses) { for(SoapXPathExpression xPathExpression : testedMockResponse.getXpathExpressions()){ if (XPathUtility.isValidXPathExpr(request.getBody(), xPathExpression.getExpression())) { mockResponse = testedMockResponse; String body = mockResponse.getBody(); if(mockResponse.isUsingExpressions()){ response.setMockResponseName(mockResponse.getName()); response.setHttpHeaders(mockResponse.getHttpHeaders()); response.setHttpStatusCode(mockResponse.getHttpStatusCode()); response.setContentEncodings(mockResponse.getContentEncodings()); return response;
/** * The method returns a view used for creating a new mocked response * @param soapProjectId The id of the project which the operation belongs to * @param soapPortId The id of the port which the operation belongs to * @param soapOperationId The id of the operation that should get a new mocked response * @return Returns a view that displays all the required attributes needed for creating a mocked response */ @PreAuthorize("hasAuthority('MODIFIER') or hasAuthority('ADMIN')") @RequestMapping(value = "/{soapProjectId}/port/{soapPortId}/operation/{soapOperationId}/create/response", method = RequestMethod.GET) public ModelAndView dispayCreatePage(@PathVariable final String soapProjectId, @PathVariable final String soapPortId, @PathVariable final String soapOperationId) { final ReadSoapOperationOutput output = serviceProcessor.process(ReadSoapOperationInput.builder() .projectId(soapProjectId) .portId(soapPortId) .operationId(soapOperationId) .build()); final SoapOperation soapOperation = output.getOperation(); final SoapMockResponse mockResponse = new SoapMockResponse(); mockResponse.setBody(soapOperation.getDefaultBody()); mockResponse.setHttpStatusCode(DEFAULT_HTTP_STATUS_CODE); final ModelAndView model = createPartialModelAndView(PAGE); model.addObject(SOAP_OPERATION, soapOperation); model.addObject(SOAP_PROJECT_ID, soapProjectId); model.addObject(SOAP_PORT_ID, soapPortId); model.addObject(COMMAND, mockResponse); model.addObject(SOAP_MOCK_RESPONSE_STATUSES, SoapMockResponseStatus.values()); return model; }
if(this.mockResponseRepository.exists(mockResponse.getId())){ throw new IllegalArgumentException("A mocked response with the following key already exists: " + mockResponse.getId()); if(!Strings.isNullOrEmpty(mockResponse.getXpathExpression())){ final SoapXPathExpression xPathExpression = new SoapXPathExpression(); xPathExpression.setExpression(mockResponse.getXpathExpression()); mockResponse.getXpathExpressions().add(xPathExpression); mockResponse.setXpathExpression(null);
final String portId = this.operationRepository.getPortId(mockResponse.getOperationId()); final String projectId = this.portRepository.getProjectId(portId); final SearchResult searchResult = new SearchResult(); searchResult.setTitle(mockResponse.getName()); searchResult.setLink(SOAP + SLASH + PROJECT + SLASH + projectId + SLASH + PORT + SLASH + portId + SLASH + OPERATION + SLASH + mockResponse.getOperationId() + SLASH + RESPONSE + SLASH + mockResponse.getId()); searchResult.setDescription(SOAP_TYPE + COMMA + responseType); searchResults.add(searchResult);
SoapMockResponse mockResponse = new SoapMockResponse(); mockResponse.setId(mockResponseV1.getId()); mockResponse.setName(mockResponseV1.getName()); mockResponse.setBody(mockResponseV1.getBody()); mockResponse.setOperationId(operation.getId()); mockResponse.setStatus(mockResponseV1.getStatus()); mockResponse.setHttpStatusCode(mockResponseV1.getHttpStatusCode()); mockResponse.setUsingExpressions(mockResponseV1.isUsingExpressions()); mockResponse.setXpathExpression(mockResponseV1.getXpathExpression()); mockResponse.setHttpHeaders(httpHeaders); mockResponse.setContentEncodings(contentEncodings); operation.getMockResponses().add(mockResponse);
final SoapMockResponse mockResponse = new SoapMockResponse(); final Date date = new Date(); mockResponse.setBody(response.getBody()); mockResponse.setStatus(SoapMockResponseStatus.ENABLED); mockResponse.setName(RECORDED_RESPONSE_NAME + SPACE + DATE_FORMAT.format(date)); mockResponse.setHttpStatusCode(response.getHttpStatusCode()); mockResponse.setHttpHeaders(response.getHttpHeaders());
@Test public void testServiceFunctionalityUpdate() throws Exception { final String projectId = "projectId"; final String portId = "portId"; final String operationId = "operationId"; final String[] soapMockResponseIds = {"MockResponse1", "MockResponse2"}; final SoapMockResponse soapMockResponse1 = new SoapMockResponse(); soapMockResponse1.setId("MockResponseId1"); final SoapMockResponse soapMockResponse2 = new SoapMockResponse(); soapMockResponse2.setId("MockResponseId2"); Mockito.when(serviceProcessor.process(Mockito.any(ReadSoapMockResponseInput.class))) .thenReturn(ReadSoapMockResponseOutput.builder().mockResponse(soapMockResponse1).build()) .thenReturn(ReadSoapMockResponseOutput.builder().mockResponse(soapMockResponse2).build()); final SoapMockResponseModifierCommand command = new SoapMockResponseModifierCommand(); command.setSoapMockResponseIds(soapMockResponseIds); command.setSoapMockResponseStatus("ENABLED"); final MockHttpServletRequestBuilder message = MockMvcRequestBuilders.post(SERVICE_URL + PROJECT + SLASH + projectId + SLASH + PORT + SLASH + portId + SLASH + OPERATION + SLASH + operationId) .param("action", "update").flashAttr("command", command); mockMvc.perform(message) .andExpect(MockMvcResultMatchers.status().is3xxRedirection()) .andExpect(MockMvcResultMatchers.model().size(1)) .andExpect(MockMvcResultMatchers.redirectedUrl("/web/soap/project/" + projectId + "/port/" + portId + "/operation/" + operationId)); Mockito.verify(serviceProcessor, Mockito.times(2)).process(Mockito.isA(ReadSoapMockResponseInput.class)); Mockito.verify(serviceProcessor, Mockito.times(2)).process(Mockito.isA(UpdateSoapMockResponseInput.class)); }
@Test public void testProcessWithDefaultXPathResponse(){ final SoapOperation operation = SoapOperationGenerator.generateSoapOperation(); final SoapMockResponse mockResponse = SoapMockResponseGenerator.generateSoapMockResponse(); final String projectId = "SOAP PROJECT"; final String portId = "SOAP PORT"; operation.setDefaultMockResponseId(mockResponse.getId()); final ReadSoapOperationInput input = ReadSoapOperationInput.builder() .projectId(projectId) .portId(portId) .operationId(operation.getId()) .build(); final ServiceTask<ReadSoapOperationInput> serviceTask = new ServiceTask<ReadSoapOperationInput>(input); Mockito.when(operationRepository.findOne(operation.getId())).thenReturn(operation); Mockito.when(mockResponseRepository.findWithOperationId(operation.getId())).thenReturn(Arrays.asList(mockResponse)); final ServiceResult<ReadSoapOperationOutput> result = service.process(serviceTask); Mockito.verify(operationRepository, Mockito.times(1)).findOne(operation.getId()); Mockito.verify(mockResponseRepository, Mockito.times(1)).findWithOperationId(operation.getId()); Assert.assertNotNull(result.getOutput()); Assert.assertEquals(operation, result.getOutput().getOperation()); Assert.assertEquals(mockResponse.getName(), operation.getDefaultResponseName()); }
@Test public void testSearch() { soapMockResponseMongoRepository.save(createSoapMockResponse("aaXYZbb")); soapMockResponseMongoRepository.save(createSoapMockResponse("aaXYZ")); soapMockResponseMongoRepository.save(createSoapMockResponse("aaxyz")); soapMockResponseMongoRepository.save(createSoapMockResponse("xyz")); soapMockResponseMongoRepository.save(createSoapMockResponse("aaefg")); SearchQuery query = new SearchQuery(); query.setQuery("xyz"); List<SoapMockResponse> searchResults = soapMockResponseMongoRepository.search(query); assertThat(searchResults).hasSize(4); assertThat(searchResults).noneMatch(it -> it.getName().equals("aaefg")); }