/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.soapui.impl.wsdl.mock; import com.eviware.soapui.support.types.StringToStringsMap; import com.eviware.soapui.utils.ModelItemFactory; import org.apache.commons.httpclient.HttpStatus; import org.junit.Before; import org.junit.Test; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Enumeration; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; public class WsdlMockOperationTest { WsdlMockRequest restMockRequest; WsdlMockResponse mockResponse; WsdlMockOperation mockOperation; @Before public void setUp() throws Exception { restMockRequest = makeWsdlMockRequest(); mockResponse = ModelItemFactory.makeWsdlMockResponse(); mockOperation = mockResponse.getMockOperation(); mockOperation.addMockResponse(mockResponse); } @Test public void testDispatchRequestReturnsHttpStatus() throws Exception { mockResponse.setResponseHttpStatus(HttpStatus.SC_BAD_REQUEST); WsdlMockResult mockResult = mockOperation.dispatchRequest(restMockRequest); // HttpResponse is the response transferred over the wire. // So here we making sure the http status is actually set on the HttpResponse. verify(mockResult.getMockRequest().getHttpResponse()).setStatus(HttpStatus.SC_BAD_REQUEST); assertThat(mockResult.getMockResponse().getResponseHttpStatus(), is(HttpStatus.SC_BAD_REQUEST)); } @Test public void testDispatchRequestReturnsResponseContent() throws Exception { String responseContent = "mock response content"; mockResponse.setResponseContent(responseContent); WsdlMockResult mockResult = mockOperation.dispatchRequest(restMockRequest); assertThat(mockResult.getMockResponse().getResponseContent(), is(responseContent)); } @Test public void testDispatchRequestReturnsHttpHeader() throws Exception { StringToStringsMap responseHeaders = mockResponse.getResponseHeaders(); String headerKey = "awesomekey"; String headerValue = "awesomevalue"; responseHeaders.add(headerKey, headerValue); mockResponse.setResponseHeaders(responseHeaders); WsdlMockResult mockResult = mockOperation.dispatchRequest(restMockRequest); // HttpResponse is the response transferred over the wire. // So here we making sure the header is actually set on the HttpResponse. verify(mockResult.getMockRequest().getHttpResponse()).addHeader(headerKey, headerValue); assertThat(mockResult.getResponseHeaders().get(headerKey, ""), is(headerValue)); assertThat(mockResult.getMockResponse().getResponseHeaders().get(headerKey, ""), is(headerValue)); } @Test public void testDispatchRequestReturnsExpandedHttpHeader() throws Exception { String expandedValue = "application/json; charset=iso-8859-1"; mockResponse.getMockOperation().getMockService().setPropertyValue("ContentType", expandedValue); StringToStringsMap responseHeaders = mockResponse.getResponseHeaders(); String headerKey = "ContentType"; String headerValue = "${#MockService#ContentType}"; responseHeaders.add(headerKey, headerValue); mockResponse.setResponseHeaders(responseHeaders); WsdlMockResult mockResult = mockOperation.dispatchRequest(restMockRequest); // HttpResponse is the response transferred over the wire. // So here we making sure the header is actually set on the HttpResponse. verify(mockResult.getMockRequest().getHttpResponse()).addHeader(headerKey, expandedValue); assertThat(mockResult.getResponseHeaders().get(headerKey, ""), is(expandedValue)); assertThat(mockResult.getMockResponse().getResponseHeaders().get(headerKey, ""), is(headerValue)); } private WsdlMockRequest makeWsdlMockRequest() throws Exception { HttpServletRequest request = mock(HttpServletRequest.class); Enumeration enumeration = mock(Enumeration.class); when(request.getHeaderNames()).thenReturn(enumeration); HttpServletResponse response = mock(HttpServletResponse.class); ServletOutputStream os = mock(ServletOutputStream.class); when(response.getOutputStream()).thenReturn(os); WsdlMockRunContext context = mock(WsdlMockRunContext.class); return new WsdlMockRequest(request, response, context); } }