package org.mockserver.codec; import io.netty.handler.codec.http.FullHttpResponse; import io.netty.handler.codec.http.HttpHeaders; import org.junit.Before; import org.junit.Test; import org.mockserver.model.Cookie; import org.mockserver.model.Header; import org.mockserver.model.HttpResponse; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import static io.netty.handler.codec.http.HttpHeaderNames.CONTENT_LENGTH; import static io.netty.handler.codec.http.HttpHeaderNames.SET_COOKIE; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.mockserver.model.HttpResponse.response; /** * @author jamesdbloom */ public class MockServerResponseEncoderCookieHeaderTest { private MockServerResponseEncoder mockServerResponseEncoder; private List<Object> output; private HttpResponse httpResponse; @Before public void setupFixture() { mockServerResponseEncoder = new MockServerResponseEncoder(); output = new ArrayList<Object>(); httpResponse = response(); } @Test public void shouldOnlyMapACookieIfThereIsNoSetCookieHeader() throws UnsupportedEncodingException { // given // - an HttpResponse String cookieOne = "cookieName1=\"\"; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/"; String cookieTwo = "cookieName2=\"cookie==Value2\"; Version=1; Comment=\"Anonymous cookie for site\"; Max-Age=15552000; Expires=Sat, 19-Mar-2016 18:43:26 GMT; Path=/"; httpResponse.withHeaders( new Header("Set-Cookie", cookieOne), new Header("set-cookie", cookieTwo) ); httpResponse.withCookies( new Cookie("cookieName1", ""), new Cookie("cookieName2", "cookie==Value2"), new Cookie("cookieName3", "cookie==Value3") ); // when mockServerResponseEncoder.encode(null, httpResponse, output); // then HttpHeaders headers = ((FullHttpResponse) output.get(0)).headers(); assertThat(headers.names(), containsInAnyOrder("Set-Cookie", SET_COOKIE.toString(), CONTENT_LENGTH.toString(), SET_COOKIE.toString())); assertThat(headers.getAll("Set-Cookie"), containsInAnyOrder( cookieOne, cookieTwo, "cookieName3=cookie==Value3" )); } }