package org.mockserver.mock; import org.junit.Before; import org.junit.Test; import org.mockserver.matchers.TimeToLive; import org.mockserver.matchers.Times; import org.mockserver.model.Cookie; import org.mockserver.model.HttpRequest; import org.mockserver.model.HttpResponse; import static org.junit.Assert.assertEquals; /** * @author jamesdbloom */ public class MockServerMatcherOverlappingRequestsTest { private MockServerMatcher mockServerMatcher; private HttpResponse[] httpResponse; @Before public void prepareTestFixture() { httpResponse = new HttpResponse[]{ new HttpResponse(), new HttpResponse() }; mockServerMatcher = new MockServerMatcher(); } @Test public void respondWhenPathMatchesAlwaysReturnFirstMatching() { // when mockServerMatcher.when(new HttpRequest().withPath("somepath").withCookies(new Cookie("name", "value"))).thenRespond(httpResponse[0].withBody("somebody1")); mockServerMatcher.when(new HttpRequest().withPath("somepath")).thenRespond(httpResponse[1].withBody("somebody2")); // then assertEquals(httpResponse[1], mockServerMatcher.retrieveAction(new HttpRequest().withPath("somepath"))); assertEquals(httpResponse[1], mockServerMatcher.retrieveAction(new HttpRequest().withPath("somepath"))); } @Test public void respondWhenPathMatchesReturnFirstMatchingWithRemainingTimes() { // when mockServerMatcher.when(new HttpRequest().withPath("somepath").withCookies(new Cookie("name", "value")), Times.once(), TimeToLive.unlimited()).thenRespond(httpResponse[0].withBody("somebody1")); mockServerMatcher.when(new HttpRequest().withPath("somepath")).thenRespond(httpResponse[1].withBody("somebody2")); // then assertEquals(httpResponse[0], mockServerMatcher.retrieveAction(new HttpRequest().withPath("somepath").withCookies(new Cookie("name", "value")))); assertEquals(httpResponse[1], mockServerMatcher.retrieveAction(new HttpRequest().withPath("somepath").withCookies(new Cookie("name", "value")))); } }