package org.mockserver.model; import junit.framework.TestCase; import org.junit.Test; import java.util.Arrays; import java.util.Collection; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotSame; import static org.mockserver.model.HttpRequest.request; import static org.mockserver.model.NottableString.string; /** * @author jamesdbloom */ public class HttpRequestTest { @Test public void shouldAlwaysCreateNewObject() { assertEquals(new HttpRequest().request(), HttpRequest.request()); assertNotSame(HttpRequest.request(), HttpRequest.request()); } @Test public void returnsPath() { assertEquals(string("somepath"), new HttpRequest().withPath("somepath").getPath()); } @Test public void returnsMethod() { assertEquals(string("POST"), new HttpRequest().withMethod("POST").getMethod()); } @Test public void returnsKeepAlive() { assertEquals(true, new HttpRequest().withKeepAlive(true).isKeepAlive()); assertEquals(false, new HttpRequest().withKeepAlive(false).isKeepAlive()); } @Test public void returnsSsl() { assertEquals(true, new HttpRequest().withSecure(true).isSecure()); assertEquals(false, new HttpRequest().withSecure(false).isSecure()); } @Test public void returnsQueryStringParameters() { assertEquals(new Parameter("name", "value"), new HttpRequest().withQueryStringParameters(new Parameter("name", "value")).getQueryStringParameters().get(0)); assertEquals(new Parameter("name", "value"), new HttpRequest().withQueryStringParameters(Arrays.asList(new Parameter("name", "value"))).getQueryStringParameters().get(0)); assertEquals(new Parameter("name", "value"), new HttpRequest().withQueryStringParameter(new Parameter("name", "value")).getQueryStringParameters().get(0)); assertEquals(new Parameter("name", "value"), new HttpRequest().withQueryStringParameter("name", "value").getQueryStringParameters().get(0)); assertEquals(new Parameter("name", "value_one", "value_two"), new HttpRequest().withQueryStringParameter(new Parameter("name", "value_one")).withQueryStringParameter(new Parameter("name", "value_two")).getQueryStringParameters().get(0)); assertEquals(new Parameter("name", "value_one", "value_two"), new HttpRequest().withQueryStringParameter(new Parameter("name", "value_one")).withQueryStringParameter("name", "value_two").getQueryStringParameters().get(0)); } @Test public void returnsBody() { assertEquals(new StringBody("somebody"), new HttpRequest().withBody(new StringBody("somebody")).getBody()); } @Test public void returnsHeaders() { assertEquals(new Header("name", "value"), new HttpRequest().withHeaders(new Header("name", "value")).getHeaders().get(0)); assertEquals(new Header("name", "value"), new HttpRequest().withHeaders(Arrays.asList(new Header("name", "value"))).getHeaders().get(0)); assertEquals(new Header("name", "value"), new HttpRequest().withHeader(new Header("name", "value")).getHeaders().get(0)); assertEquals(new Header("name", "value"), new HttpRequest().withHeader("name", "value").getHeaders().get(0)); assertEquals(new Header("name", "value_one", "value_two"), new HttpRequest().withHeader(new Header("name", "value_one")).withHeader(new Header("name", "value_two")).getHeaders().get(0)); assertEquals(new Header("name", "value_one", "value_two"), new HttpRequest().withHeader(new Header("name", "value_one")).withHeader("name", "value_two").getHeaders().get(0)); assertEquals(new Header("name", "value_one", "value_two"), new HttpRequest().withHeaders(new Header("name", "value_one", "value_two")).getHeaders().get(0)); assertEquals(new Header("name", (Collection<String>) null), new HttpRequest().withHeaders(new Header("name")).getHeaders().get(0)); assertEquals(new Header("name"), new HttpRequest().withHeaders(new Header("name")).getHeaders().get(0)); } @Test public void returnsFirstHeaders() { assertEquals("value1", new HttpRequest().withHeaders(new Header("name", "value1")).getFirstHeader("name")); assertEquals("value1", new HttpRequest().withHeaders(new Header("name", "value1", "value2")).getFirstHeader("name")); assertEquals("value1", new HttpRequest().withHeaders(new Header("name", "value1", "value2"), new Header("name", "value3")).getFirstHeader("name")); } @Test public void returnsCookies() { assertEquals(new Cookie("name", "value"), new HttpRequest().withCookies(new Cookie("name", "value")).getCookies().get(0)); assertEquals(new Cookie("name", ""), new HttpRequest().withCookies(new Cookie("name", "")).getCookies().get(0)); assertEquals(new Cookie("name", null), new HttpRequest().withCookies(new Cookie("name", null)).getCookies().get(0)); assertEquals(new Cookie("name", "value"), new HttpRequest().withCookies(Arrays.asList(new Cookie("name", "value"))).getCookies().get(0)); assertEquals(new Cookie("name", "value"), new HttpRequest().withCookie(new Cookie("name", "value")).getCookies().get(0)); assertEquals(new Cookie("name", "value"), new HttpRequest().withCookie("name", "value").getCookies().get(0)); assertEquals(new Cookie("name", ""), new HttpRequest().withCookie(new Cookie("name", "")).getCookies().get(0)); assertEquals(new Cookie("name", null), new HttpRequest().withCookie(new Cookie("name", null)).getCookies().get(0)); } @Test public void shouldReturnFormattedRequestInToString() { TestCase.assertEquals("{" + System.getProperty("line.separator") + " \"headers\" : [ {" + System.getProperty("line.separator") + " \"name\" : \"name\"," + System.getProperty("line.separator") + " \"values\" : [ \"value\" ]" + System.getProperty("line.separator") + " } ]," + System.getProperty("line.separator") + " \"cookies\" : [ {" + System.getProperty("line.separator") + " \"name\" : \"name\"," + System.getProperty("line.separator") + " \"value\" : \"[A-Z]{0,10}\"" + System.getProperty("line.separator") + " } ]," + System.getProperty("line.separator") + " \"body\" : \"some_body\"" + System.getProperty("line.separator") + "}", request() .withBody("some_body") .withHeaders(new Header("name", "value")) .withCookies(new Cookie("name", "[A-Z]{0,10}")) .toString() ); } }