/** * Returns an port that matches the incoming parameters (soapProjectId and soapPortId) * @param soapProjectId The id of the project which the port belongs to * @param soapPortId The id of the port that should be returned * @param request The incoming servlet request. Used to extract the address used to invoke the SOAP operation * @return Returns an port that matches the incoming parameters (projectId and soapPortId) */ @PreAuthorize("hasAuthority('READER') or hasAuthority('MODIFIER') or hasAuthority('ADMIN')") @RequestMapping(value = "/{soapProjectId}/port/{soapPortId}", method = RequestMethod.GET) public ModelAndView getSoapPort(@PathVariable final String soapProjectId, @PathVariable final String soapPortId, final ServletRequest request) { final ReadSoapPortOutput readSoapPortOutput = serviceProcessor.process(ReadSoapPortInput.builder() .projectId(soapProjectId) .portId(soapPortId) .build()); final SoapPort soapPort = readSoapPortOutput.getPort(); final String protocol = getProtocol(request); final String invokeAddress = getSoapInvokeAddress(protocol, request.getServerPort(), soapProjectId, soapPort.getUri()); soapPort.setInvokeAddress(invokeAddress); final ModelAndView model = createPartialModelAndView(PAGE); model.addObject(SOAP_PROJECT_ID,soapProjectId); model.addObject(SOAP_PORT,soapPort); model.addObject(SOAP_OPERATION_STATUSES, getSoapOperationStatuses()); model.addObject(SOAP_OPERATION_MODIFIER_COMMAND, new SoapOperationModifierCommand()); return model; }
final String invokeAddress = getSoapInvokeAddress(protocol, request.getServerPort(), soapProjectId, soapPort.getUri()); soapOperation.setInvokeAddress(invokeAddress);
@Test public void testProcess(){ final String projectId = "ProjectId"; final SoapPort port = SoapPortGenerator.generateSoapPort(); final UpdateSoapPortInput input = UpdateSoapPortInput.builder() .projectId(projectId) .portId(port.getId()) .port(port) .build(); final ServiceTask<UpdateSoapPortInput> serviceTask = new ServiceTask<UpdateSoapPortInput>(input); Mockito.when(soapPortRepository.findOne(port.getId())).thenReturn(port); Mockito.when(soapPortRepository.update(Mockito.anyString(), Mockito.any(SoapPort.class))).thenReturn(port); final ServiceResult<UpdateSoapPortOutput> result = service.process(serviceTask); final UpdateSoapPortOutput output = result.getOutput(); final SoapPort returnedSoapPort = output.getPort(); Mockito.verify(soapPortRepository, Mockito.times(1)).findOne(port.getId()); Mockito.verify(soapPortRepository, Mockito.times(1)).update(port.getId(), port); Assert.assertEquals(port.getId(), returnedSoapPort.getId()); Assert.assertEquals(port.getName(), returnedSoapPort.getName()); Assert.assertEquals(port.getUri(), returnedSoapPort.getUri()); Assert.assertEquals(port.getProjectId(), returnedSoapPort.getProjectId()); } }
/** * 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<UpdateSoapPortOutput> process(final ServiceTask<UpdateSoapPortInput> serviceTask) { final UpdateSoapPortInput input = serviceTask.getInput(); final SoapPort updated = input.getSoapPort(); final SoapPort soapPort = this.portRepository.findOne(input.getPortId()); soapPort.setUri(updated.getUri()); final SoapPort updatedSoapPort = this.portRepository.update(input.getPortId(), soapPort); return createServiceResult(UpdateSoapPortOutput.builder() .port(updatedSoapPort) .build()); } }
private void verify(final SoapPort soapPort, final String name, final SoapVersion soapVersion){ Assert.assertEquals(name + ".Endpoint", soapPort.getName()); Assert.assertEquals(name + ".Endpoint", soapPort.getUri()); Assert.assertEquals(1, soapPort.getOperations().size()); SoapOperation soapOperation = soapPort.getOperations().get(0); Assert.assertEquals(name, soapOperation.getName()); Assert.assertEquals(SoapResponseStrategy.RANDOM, soapOperation.getResponseStrategy()); Assert.assertEquals(SoapOperationStatus.MOCKED, soapOperation.getStatus()); Assert.assertEquals(soapVersion, soapOperation.getSoapVersion()); Assert.assertEquals(HttpMethod.POST, soapOperation.getHttpMethod()); SoapOperationIdentifier operationIdentifier = soapOperation.getOperationIdentifier(); Assert.assertNotNull(operationIdentifier); Assert.assertEquals("Request", operationIdentifier.getName()); Assert.assertEquals("http://Services/ServiceExample/ServiceExample/1/Schema", operationIdentifier.getNamespace()); }
@Test public void testDefaultPage() throws Exception { final SoapProject soapProject = SoapProjectGenerator.generateSoapProject(); final SoapPort soapPort = SoapPortGenerator.generateSoapPort(); final SoapOperation soapOperation = SoapOperationGenerator.generateSoapOperation(); when(serviceProcessor.process(isA(ReadSoapPortInput.class))).thenReturn(ReadSoapPortOutput.builder() .port(soapPort) .build()); when(serviceProcessor.process(isA(ReadSoapOperationInput.class))).thenReturn(ReadSoapOperationOutput.builder() .operation(soapOperation) .build()); when(serviceProcessor.process(isA(ReadSoapEventsByOperationIdInput.class))).thenReturn(ReadSoapEventsByOperationIdOutput.builder() .soapEvents(new ArrayList<SoapEvent>()) .build()); final MockHttpServletRequestBuilder message = MockMvcRequestBuilders.get(SERVICE_URL + PROJECT + SLASH + soapProject.getId() + SLASH + PORT + SLASH + soapPort.getId() + SLASH + OPERATION + SLASH + soapOperation.getId() + SLASH); ResultActions result = mockMvc.perform(message) .andExpect(MockMvcResultMatchers.status().isOk()) .andExpect(MockMvcResultMatchers.model().size(6 + GLOBAL_VIEW_MODEL_COUNT)) .andExpect(MockMvcResultMatchers.forwardedUrl(INDEX)) .andExpect(MockMvcResultMatchers.model().attribute(PARTIAL, PAGE)) .andExpect(MockMvcResultMatchers.model().attribute(SOAP_PROJECT_ID, soapProject.getId())) .andExpect(MockMvcResultMatchers.model().attribute(SOAP_PORT_ID, soapPort.getId())) .andExpect(MockMvcResultMatchers.model().attribute(SOAP_OPERATION, soapOperation)); SoapOperation SoapOperationResponse = (SoapOperation) result.andReturn().getModelAndView().getModel().get(SOAP_OPERATION); String hostAddress = serviceController.getHostAddress(); Assert.assertEquals(HTTP + hostAddress + COLON + DEFAULT_PORT + CONTEXT + SLASH + MOCK + SLASH + SOAP + SLASH + PROJECT + SLASH + soapProject.getId() + SLASH + soapPort.getUri(), soapOperation.getInvokeAddress()); }