package org.mockserver.mappers; import org.junit.Test; import org.mockserver.model.Cookie; import org.mockserver.model.Header; import org.mockserver.model.HttpResponse; import org.mockserver.model.HttpStatusCode; import org.springframework.mock.web.MockHttpServletResponse; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Arrays; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.mockserver.model.HttpResponse.response; import static org.mockserver.model.JsonBody.json; import static org.mockserver.model.JsonSchemaBody.jsonSchema; import static org.mockserver.model.Parameter.param; import static org.mockserver.model.ParameterBody.params; import static org.mockserver.model.RegexBody.regex; /** * @author jamesdbloom */ public class MockServerResponseToHttpServletResponseEncoderBasicMappingTest { @Test public void shouldMapHttpResponseToHttpServletResponse() throws UnsupportedEncodingException { // given // - an HttpResponse HttpResponse httpResponse = new HttpResponse(); httpResponse.withStatusCode(HttpStatusCode.OK_200.code()); httpResponse.withBody("somebody"); httpResponse.withHeaders(new Header("headerName1", "headerValue1"), new Header("headerName2", "headerValue2")); httpResponse.withCookies(new Cookie("cookieName1", "cookieValue1"), new Cookie("cookieName2", "cookieValue2")); // - an HttpServletResponse MockHttpServletResponse httpServletResponse = new MockHttpServletResponse(); // when new MockServerResponseToHttpServletResponseEncoder().mapMockServerResponseToHttpServletResponse(httpResponse, httpServletResponse); // then assertEquals(HttpStatusCode.OK_200.code(), httpServletResponse.getStatus()); assertEquals("somebody", httpServletResponse.getContentAsString()); assertEquals("headerValue1", httpServletResponse.getHeader("headerName1")); assertEquals("headerValue2", httpServletResponse.getHeader("headerName2")); assertEquals(Arrays.asList( "cookieName1=cookieValue1", "cookieName2=cookieValue2" ), httpServletResponse.getHeaders("Set-Cookie")); } @Test(expected = RuntimeException.class) public void shouldHandleExceptionWhenReadingBody() throws IOException { // given // - an HttpResponse HttpResponse httpResponse = new HttpResponse(); httpResponse.withStatusCode(HttpStatusCode.OK_200.code()); httpResponse.withBody("somebody"); httpResponse.withHeaders(new Header("headerName1", "headerValue1"), new Header("headerName2", "headerValue2")); httpResponse.withCookies(new Cookie("cookieName1", "cookieValue1"), new Cookie("cookieName2", "cookieValue2")); // - an HttpServletResponse HttpServletResponse httpServletResponse = mock(HttpServletResponse.class); when(httpServletResponse.getOutputStream()).thenThrow(new IOException("TEST EXCEPTION")); // when new MockServerResponseToHttpServletResponseEncoder().mapMockServerResponseToHttpServletResponse(httpResponse, httpServletResponse); } }