package io.github.azagniotov.stubby4j.stubs;
import io.github.azagniotov.stubby4j.utils.FileUtils;
import io.github.azagniotov.stubby4j.yaml.ConfigurableYAMLProperty;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.regex.Pattern;
import static com.google.common.truth.Truth.assertThat;
import static io.github.azagniotov.stubby4j.stubs.StubbableAuthorizationType.BASIC;
import static io.github.azagniotov.stubby4j.stubs.StubbableAuthorizationType.BEARER;
import static io.github.azagniotov.stubby4j.stubs.StubbableAuthorizationType.CUSTOM;
import static io.github.azagniotov.stubby4j.utils.FileUtils.BR;
import static io.github.azagniotov.stubby4j.yaml.ConfigurableYAMLProperty.BODY;
@RunWith(MockitoJUnitRunner.class)
public class StubRequestBuilderTest {
private StubRequest.Builder builder;
@Before
public void setUp() throws Exception {
builder = new StubRequest.Builder();
}
@Test
public void shouldStage_WhenConfigurablePropertyAndFieldValuePresent() throws Exception {
final String expectedFieldValue = "Hello!";
final String orElse = "Boo!";
final Optional<ConfigurableYAMLProperty> propertyOptional = Optional.of(BODY);
final Optional<Object> fieldValueOptional = Optional.of(expectedFieldValue);
builder.stage(propertyOptional, fieldValueOptional);
assertThat(builder.getStaged(String.class, BODY, orElse)).isEqualTo(expectedFieldValue);
}
@Test
public void shouldNotStage_WhenConfigurablePropertyMissingButFieldValuePresent() throws Exception {
final String expectedFieldValue = "Hello!";
final String orElse = "Boo!";
final Optional<ConfigurableYAMLProperty> propertyOptional = Optional.empty();
final Optional<Object> fieldValueOptional = Optional.of(expectedFieldValue);
builder.stage(propertyOptional, fieldValueOptional);
assertThat(builder.getStaged(String.class, BODY, orElse)).isEqualTo(orElse);
}
@Test
public void shouldNotStage_WhenConfigurablePropertyPresentButFieldValueMissing() throws Exception {
final String orElse = "Boo!";
final Optional<ConfigurableYAMLProperty> propertyOptional = Optional.of(BODY);
final Optional<Object> fieldValueOptional = Optional.ofNullable(null);
builder.stage(propertyOptional, fieldValueOptional);
assertThat(builder.getStaged(String.class, BODY, orElse)).isEqualTo(orElse);
}
@Test
public void shouldNotStage_WhenConfigurablePropertyMissingAndFieldValueMissing() throws Exception {
final String orElse = "Boo!";
final Optional<ConfigurableYAMLProperty> propertyOptional = Optional.ofNullable(null);
final Optional<Object> fieldValueOptional = Optional.ofNullable(null);
builder.stage(propertyOptional, fieldValueOptional);
assertThat(builder.getStaged(String.class, BODY, orElse)).isEqualTo(orElse);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenNullUrlStubbed_AndNullUrlSubmitted() throws Exception {
final StubRequest expectedRequest = builder.withUrl(null).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl(null).withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenEmptyUrlStubbed_AndEmptyUrlSubmitted() throws Exception {
final StubRequest expectedRequest = builder.withUrl("").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenNullUrlStubbed_ButUrlSubmitted() throws Exception {
final StubRequest expectedRequest = builder.withUrl(null).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("invoice/123").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenUrlStubbed_ButNullUrlSubmitted() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/invoice/123").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl(null).withMethodGet().build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenUrlStubbed_ButNoUrlSubmitted() throws Exception {
final String url = "/invoice/123";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withMethodGet().build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenUrlNotStubbed_ButUrlSubmitted() throws Exception {
final String url = "/invoice/123";
final StubRequest expectedRequest = builder.withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl(url).withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenRootUrlsEquals() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenStubbedRootUrlStartsWithRegex_ButSubmittedUrlRoot() throws Exception {
final StubRequest expectedRequest = builder.withUrl("^/$").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenStubbedUrlHasOptionalTrailingSlash_ButNoSlashSubmitted() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/invoice/123/?").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/invoice/123").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenStubbedUrlHasOptionalTrailingSlash_ButSlashSubmitted() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/invoice/123/?").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/invoice/123/").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenStubbedUrlHasRequiredTrailingSlash_ButNoSlashSubmitted() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/invoice/123/").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/invoice/123").withMethodGet().build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenStubbedUrlRegexExact_AndUrlsEqual() throws Exception {
final StubRequest expectedRequest = builder.withUrl("^/invoice/123$").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/invoice/123").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenStubbedUrlRegexBeginsWith() throws Exception {
final StubRequest expectedRequest = builder.withUrl("^/invoice/123.*").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/invoice/12345").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenSubmittedUrlLonger() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/invoice/123").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/invoice/12345").withMethodGet().build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenStubbedUrlRegexBeginsWith_AndSubmittedUrlWrong() throws Exception {
final StubRequest expectedRequest = builder.withUrl("^/invoice/123").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/invoice/1").withMethodGet().build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenSubmittedUrlShorter() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/invoice/123").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/invoice/1").withMethodGet().build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenUrlsEquals() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/invoice/123").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/invoice/123").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenStubbedUrlRegexEndsWith_AndSubmittedUrlHasExtraBeggining() throws Exception {
final StubRequest expectedRequest = builder.withUrl(".*/invoice/123$").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/some/beggining/invoice/123").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenStubbedUrlRegexAnythingAround_AndUrlsEqual() throws Exception {
final StubRequest expectedRequest = builder.withUrl(".*/invoice/123.*").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/invoice/123").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenStubbedUrlRegexGroups_AndUrlsEqual() throws Exception {
final StubRequest expectedRequest = builder.withUrl("(.*)(/invoice/123)(.*)").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/invoice/123").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenDifferentUri() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "two";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue).build();
final StubRequest assertingRequest =
builder.withUrl("/invoice/788")
.withMethodGet()
.withMethodHead()
.withQuery(paramTwo, paramTwoValue)
.withQuery(paramOne, paramOneValue).build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenMethodStubbed_ButLowerCasedMethodSubmitted() throws Exception {
final String url = "/invoice/123";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl(url).withMethod("get").build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenMethodStubbed_ButNoMethodSubmitted() throws Exception {
final String url = "/invoice/123";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl(url).build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenNoMethodStubbed_ButMethodSubmitted() throws Exception {
final String url = "/invoice/123";
final StubRequest expectedRequest = builder.withUrl(url).build();
final StubRequest assertingRequest = builder.withUrl(url).withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void shouldAddMethod_WhenGivenMethodArgumentSet() throws Exception {
final StubRequest expectedRequest = builder
.withMethod("GET")
.withMethod("POST")
.withMethod("HEAD").build();
assertThat(expectedRequest.getMethod().size()).isEqualTo(3);
assertThat(expectedRequest.getMethod()).containsExactly("GET", "POST", "HEAD");
}
@Test
public void shouldAddMethod_WhenGivenMethodArgumentEmpty() throws Exception {
final StubRequest expectedRequest = builder
.withMethod("GET")
.withMethod("")
.withMethod("HEAD").build();
assertThat(expectedRequest.getMethod().size()).isEqualTo(2);
assertThat(expectedRequest.getMethod()).containsExactly("GET", "HEAD");
}
@Test
public void shouldAddMethod_WhenGivenMethodArgumentNull() throws Exception {
final StubRequest expectedRequest = builder
.withMethod("GET")
.withMethod(null)
.withMethod("HEAD").build();
assertThat(expectedRequest.getMethod().size()).isEqualTo(2);
assertThat(expectedRequest.getMethod()).containsExactly("GET", "HEAD");
}
@Test
public void shouldGetPostBody_WhenPostProvided_ButFileIsNull() throws Exception {
final String url = "/invoice/789";
final String postBody = "Hello";
final StubRequest expectedRequest =
builder.withUrl(url)
.withPost(postBody)
.withMethodGet().build();
assertThat(expectedRequest.getPostBody()).isEqualTo(postBody);
}
@Test
public void shouldGetPostBody_WhenPostProvided_ButFileIsEmpty() throws Exception {
final String url = "/invoice/789";
final String postBody = "Hello";
final StubRequest expectedRequest =
builder.withUrl(url)
.withPost(postBody)
.withFile(File.createTempFile("tmp", "tmp"))
.withMethodGet().build();
assertThat(expectedRequest.getPostBody()).isEqualTo(postBody);
}
@Test
public void shouldGetPostBody_WhenPostNotProvided_ButFileSet() throws Exception {
final String url = "/invoice/789";
final String fileContent = "Hello World!";
final StubRequest expectedRequest =
builder.withUrl(url)
.withFile(FileUtils.fileFromString(fileContent))
.withMethodGet().build();
assertThat(expectedRequest.getPostBody()).isEqualTo(fileContent);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenDifferentHttpMethod() throws Exception {
final String url = "/invoice/789";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl(url).withMethodPost().build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenDifferentPostBody() throws Exception {
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodPost()
.withPost("some post").build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodPost()
.withPost("different post").build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenPostBodyWasStubbed_ButNoPostBodySubmitted() throws Exception {
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodPost()
.withPost("some stubbed post").build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodPost().build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenNoPostBodyWasStubbed_ButPostBodyWasSubmitted() throws Exception {
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodPost().build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodPost()
.withPost("some post").build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void isSecured_WhenAuthorizationBasicStubbed() throws Exception {
final StubRequest stubRequest =
builder.withUrl("/invoice/123")
.withMethodGet()
.withHeader(BASIC.asYAMLProp(), "123").build();
assertThat(stubRequest.isSecured()).isTrue();
}
@Test
public void isSecured_WhenAuthorizationBearerStubbed() throws Exception {
final StubRequest stubRequest =
builder.withUrl("/invoice/123")
.withMethodGet()
.withHeader(BEARER.asYAMLProp(), "123").build();
assertThat(stubRequest.isSecured()).isTrue();
}
@Test
public void isSecured_WhenAuthorizationCustomStubbed() throws Exception {
final StubRequest stubRequest =
builder.withUrl("/invoice/123")
.withMethodGet()
.withHeader(CUSTOM.asYAMLProp(), "Custom 123").build();
assertThat(stubRequest.isSecured()).isTrue();
}
@Test
public void isNotSecured_WhenNoAuthorizationStubbed() throws Exception {
final StubRequest stubRequest =
builder.withUrl("/invoice/123")
.withMethodGet().build();
assertThat(stubRequest.isSecured()).isFalse();
}
@Test
public void shouldGetAuthorizationTypeBasic_WhenBasicAuthorizationStubbed() throws Exception {
final StubRequest stubRequest =
builder.withUrl("/invoice/123")
.withMethodGet()
.withHeader(BASIC.asYAMLProp(), "123").build();
assertThat(stubRequest.getStubbedAuthorizationType()).isEqualTo(BASIC);
}
@Test
public void shouldGetAuthorizationTypeBearer_WhenBearerAuthorizationStubbed() throws Exception {
final StubRequest stubRequest =
builder.withUrl("/invoice/123")
.withMethodGet()
.withHeader(BEARER.asYAMLProp(), "123").build();
assertThat(stubRequest.getStubbedAuthorizationType()).isEqualTo(BEARER);
}
@Test
public void shouldGetAuthorizationTypeCustom_WhenCustomAuthorizationStubbed() throws Exception {
final StubRequest stubRequest =
builder.withUrl("/invoice/123")
.withMethodGet()
.withHeader(CUSTOM.asYAMLProp(), "Custom 123").build();
assertThat(stubRequest.getStubbedAuthorizationType()).isEqualTo(CUSTOM);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenAllHttpHeadersMatch() throws Exception {
final String url = "/invoice/123";
final String contentLength = "30";
final String contentLanguage = "en-US";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenHeadersWereStubbed_ButNoHeadersSetToAssert() throws Exception {
final String url = "/invoice/123";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withApplicationXmlContentType()
.withHeaderContentLength("30")
.withHeaderContentLanguage("en-US").build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet().build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenNoHeadersWereStubbed_ButHeadersWereSetToAssert() throws Exception {
final String url = "/invoice/123";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet().build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withApplicationXmlContentType()
.withHeaderContentLength("30")
.withHeaderContentLanguage("en-US").build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenAllHeadersSubmittedCamelCased() throws Exception {
final String contentLength = "30";
final String contentLanguage = "en-US";
final String url = "/invoice/123";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withApplicationXmlContentType()
.withHeader("Content-Length", contentLength)
.withHeader("Content-Language", contentLanguage).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenAllHeadersStubbedCamelCased() throws Exception {
final String contentLength = "30";
final String contentLanguage = "en-US";
final String url = "/invoice/123";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withApplicationXmlContentType()
.withHeader("Content-Length", contentLength)
.withHeader("Content-Language", contentLanguage).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenSomeHeadersMismatches() throws Exception {
final String contentLength = "30";
final String contentLanguage = "en-US";
final String url = "/invoice/123";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withHeaderContentType("application/xml")
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withApplicationJsonContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenNotAllHeadersSetToAssert() throws Exception {
final String contentLength = "30";
final String contentLanguage = "en-US";
final String url = "/invoice/123";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenAllStubbedHeadersMatch() throws Exception {
final String contentLength = "30";
final String contentLanguage = "en-US";
final String url = "/invoice/123";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage)
.withHeaderContentEncoding("UTF-8")
.withHeaderPragma("no-cache").build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenNoQueryParamsWereStubbed_ButQueryParamsWereSetToAssert() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "two";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead().build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenQueryParamsWereStubbed_ButNoQueryParamsWereSetToAssert() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "two";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead().build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenAllQueryParamsMatch() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "two";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenAllStubbedQueryParamsMatch() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "two";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue)
.withQuery("paramThree", "three").build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenNotAllQueryParamsSetToAssert() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "two";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue)
.withQuery("paramThree", "three").build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue).build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenQueryParamsMismatch() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "two";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, "three").build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenQueryParamsInDifferentOrder() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "two";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramTwo, paramTwoValue)
.withQuery(paramOne, paramOneValue).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenQueryParamIsArray() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "[\"alex\",\"tracy\"]";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenThereLargeSetupOfStubbedProperties() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "[%22alex%22,%22tracy%22]";
final String contentType = "application/blah";
final String contentLength = "30";
final String contentLanguage = "en-US";
final String url = "/invoice/123";
final String postBody = "this is a post body";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodPost()
.withMethodPut()
.withPost(postBody)
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue)
.withHeaderContentType(contentType)
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodPost()
.withPost(postBody)
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue)
.withHeaderContentType(contentType)
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage)
.withHeaderContentEncoding("UTF-8")
.withHeaderPragma("no-cache").build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenQueryParamRegexIsMatching() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "session_id";
final String paramTwoRegex = "^user_\\d{32}_(local|remote)";
final String paramTwoAssertingValue = "user_29898678635097503927398653027523_remote";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoAssertingValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenQueryParamRegexDoesNotMatch() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "session_id";
final String paramTwoRegex = "^user_\\d{32}_local";
final String paramTwoAssertingValue = "user_12345_local";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoAssertingValue).build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenHeaderRegexIsMatching() throws Exception {
final String headerOne = "headerOne";
final String headerOneValue = "one";
final String headerTwo = "headerTwo";
final String headerTwoRegex = "^[a-z]{4}_\\d{32}_(local|remote)";
final String headerTwoAssertingValue = "user_29898678635097503927398653027523_remote";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withHeader(headerOne, headerOneValue)
.withHeader(headerTwo, headerTwoRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withHeader(headerOne, headerOneValue)
.withHeader(headerTwo, headerTwoAssertingValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenHeaderRegexDoesNotMatch() throws Exception {
final String headerOne = "headerOne";
final String headerOneValue = "one";
final String headerTwo = "headerTwo";
final String headerTwoRegex = "^[a-z]{4}_\\d{32}_(local|remote)";
final String headerTwoAssertingValue = "usEr_29898678635097503927398653027523_remote";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withHeader(headerOne, headerOneValue)
.withHeader(headerTwo, headerTwoRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withHeader(headerOne, headerOneValue)
.withHeader(headerTwo, headerTwoAssertingValue).build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenPostRegexMatchingAnyPostWithoutNewLineCharacter() throws Exception {
final String postRegex = ".*";
final String postAssertingValue =
"Here's the story of a lovely lady, " +
"Who was bringing up three very lovely girls. " +
"All of them had hair of gold, like their mother, " +
"The youngest one in curls. " +
"Here's the story, of a man named Brady, " +
"Who was busy with three boys of his own. " +
"They were four men, living all together, " +
"Yet they were all alone.";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withPost(postRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withPost(postAssertingValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenPostRegexDoesNotMatchLineChar() throws Exception {
final String postRegex = ".*";
final String postAssertingValue =
"Here's the story of a lovely lady," + BR +
"Who was bringing up three very lovely girls." + BR +
"All of them had hair of gold, like their mother," + BR +
"The youngest one in curls." + BR +
"Here's the story, of a man named Brady," + BR +
"Who was busy with three boys of his own." + BR +
"They were four men, living all together," + BR +
"Yet they were all alone.";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodPost()
.withMethodHead()
.withPost(postRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodPost()
.withMethodHead()
.withPost(postAssertingValue).build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenPostRegexMatchingPostWithLineChar() throws Exception {
final String postRegex = "^[\\.,'a-zA-Z\\s+]*$";
final String postAssertingValue =
"Here's the story of a lovely lady," + BR +
"Who was bringing up three very lovely girls." + BR +
"All of them had hair of gold, like their mother," + BR +
"The youngest one in curls." + BR +
"Here's the story, of a man named Brady," + BR +
"Who was busy with three boys of his own." + BR +
"They were four men, living all together," + BR +
"Yet they were all alone.";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withPost(postRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withPost(postAssertingValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenPostRegexMatchingPostWithCarriageReturnChar() throws Exception {
final String postRegex = "^[\\.,'a-zA-Z\\s+]*$";
final String postAssertingValue =
"Here's the story of a lovely lady,\r" +
"Who was bringing up three very lovely girls.\r" +
"All of them had hair of gold, like their mother,\r" +
"The youngest one in curls.\r" +
"Here's the story, of a man named Brady,\r" +
"Who was busy with three boys of his own.\r" +
"They were four men, living all together,\r" +
"Yet they were all alone.";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withPost(postRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withPost(postAssertingValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenPlainPostRegexStubbedAndPlainTextPosted() throws Exception {
final String postRegex = "This is a text with (.*) the end of summer!";
final String postAssertingValue = "This is a text with DANCING IN THE RAIN, the end of summer!";
final String url = "/post";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodPost()
.withPost(postRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodPost()
.withPost(postAssertingValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenJsonPostRegexStubbedAndJsonPosted() throws Exception {
final String postRegex = "{\"userId\":\"19\",\"requestId\":\"(.*)\",\"transactionDate\":\"(.*)\",\"transactionTime\":\"(.*)\"}";
final String postAssertingValue = "{\"userId\":\"19\",\"requestId\":\"12345\",\"transactionDate\":\"98765\",\"transactionTime\":\"11111\"}";
final String url = "/post";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodPost()
.withApplicationJsonContentType()
.withPost(postRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodPost()
.withApplicationJsonContentType()
.withPost(postAssertingValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
final Map<String, String> regexGroups = assertingRequest.getRegexGroups();
assertThat(regexGroups.get("post.0")).isEqualTo(postAssertingValue);
assertThat(regexGroups.get("post.1")).isEqualTo("12345");
assertThat(regexGroups.get("post.2")).isEqualTo("98765");
assertThat(regexGroups.get("post.3")).isEqualTo("11111");
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenComplexJsonPostRegexStubbedAndJsonPosted() throws Exception {
final String postRegex = "{\"objects\": [{\"key\": \"value\"}, {\"key\": \"value\"}, {\"key\": {\"key\": \"(.*)\"}}]}";
final String postAssertingValue = "{\"objects\": [{\"key\": \"value\"}, {\"key\": \"value\"}, {\"key\": {\"key\": \"12345\"}}]}";
final String url = "/post";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodPost()
.withApplicationJsonContentType()
.withPost(postRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodPost()
.withApplicationJsonContentType()
.withPost(postAssertingValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
final Map<String, String> regexGroups = assertingRequest.getRegexGroups();
assertThat(regexGroups.get("post.0")).isEqualTo(postAssertingValue);
assertThat(regexGroups.get("post.1")).isEqualTo("12345");
}
@Test
public void shouldComputeRegexPatterns() throws Exception {
RegexParser.PATTERN_CACHE.clear();
final String url = "^/resources/asn/.*$";
final String post = "{\"objects\": [{\"key\": \"value\"}, {\"key\": \"value\"}, {\"key\": {\"key\": \"(.*)\"}}]}";
final StubRequest stubRequest =
builder.withUrl(url)
.withMethodPost()
.withApplicationJsonContentType()
.withPost(post).build();
stubRequest.compileRegexPatternsAndCache();
assertThat(RegexParser.PATTERN_CACHE.size()).isEqualTo(2);
assertThat(RegexParser.PATTERN_CACHE.get(url.hashCode())).isInstanceOf(Pattern.class);
assertThat(RegexParser.PATTERN_CACHE.get(post.hashCode())).isInstanceOf(Pattern.class);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenPostRegexMatchingSubsectionOfMultiLineJsonPost() throws Exception {
final String postRegex = ".*(\"id\": \"123\").*";
final String postAssertingValue =
"{" +
" \"products\": [" +
" {" +
" \"id\": \"123\"," +
" }," +
" {" +
" \"id\": \"789\"," +
" }" +
" ]" +
"}";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withPost(postRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withPost(postAssertingValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenPostRegexMatchingSingleLinePost() throws Exception {
final String postRegex = "^This is an invoice: \\d{3} from today";
final String postValue = "This is an invoice: 889 from today";
final String url = "/invoice/789";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withPost(postRegex).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodHead()
.withPost(postValue).build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenThereLargeSetupOfStubbedProperties_ButNotAllHeadersSetToAssert() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "[%22alex%22,%22tracy%22]";
final String contentLength = "30";
final String contentLanguage = "en-US";
final String url = "/invoice/123";
final String postBody = "this is a post body";
final StubRequest expectedRequest =
builder.withUrl(url)
.withMethodGet()
.withMethodPost()
.withMethodPut()
.withPost(postBody)
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue)
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
final StubRequest assertingRequest =
builder.withUrl(url)
.withMethodPost()
.withPost(postBody)
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue)
.withApplicationXmlContentType()
.withHeaderContentLength("888")
.withHeaderContentLanguage(contentLanguage)
.withHeaderContentEncoding("UTF-8")
.withHeaderPragma("no-cache").build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenRegexifiedUrlDoesNotBeginWithRegexSign_ItsNotProcessedAsRegex() throws Exception {
final String url = ".*account.*";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/some/products/account/").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenRegexifiedUrlBeginsWithRegexSign_ItsProcessedAsRegex() throws Exception {
final String url = "^.*account.*";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/some/products/account/").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenUrlPartiallyRegexified_ButGoodAssertionUrlConfigured() throws Exception {
final String url = "^/products/[0-9]+/?$";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/products/12345/").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenUrlRegexified_ButGoodAssertionUrlConfigured() throws Exception {
final String url = "^/[a-z]{3}/[0-9]+/?$";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/abc/12345/").withMethodGet().build();
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenUrlConditionallyRegexified_ButGoodAssertionUrlConfigured() throws Exception {
final String url = "^/(cats|dogs)/?(.*)";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final List<StubRequest> assertingRequests = new LinkedList<StubRequest>() {{
add(builder.withUrl("/cats/blah/again/").withMethodGet().build());
add(builder.withUrl("/cats/blah/").withMethodGet().build());
add(builder.withUrl("/dogs/blah/").withMethodGet().build());
add(builder.withUrl("/dogs/").withMethodGet().build());
add(builder.withUrl("/dogs").withMethodGet().build());
}};
for (final StubRequest assertingRequest : assertingRequests) {
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenUrlConditionallyRegexified_ButGoodAssertionUrlConfigured_v2() throws Exception {
final String url = "^/(account|profile)/user/session/[a-zA-Z0-9]{32}/?";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final List<StubRequest> assertingRequests = new LinkedList<StubRequest>() {{
add(builder.withUrl("/account/user/session/d41d8cd98f00b204e9800998ecf8427e").withMethodGet().build());
add(builder.withUrl("/account/user/session/d41d8cd98f00b204e9800998ecf8427e/").withMethodGet().build());
add(builder.withUrl("/profile/user/session/d41d8cd98f00b204e9800998ecf8427e").withMethodGet().build());
add(builder.withUrl("/profile/user/session/d41d8cd98f00b204e9800998ecf8427e/").withMethodGet().build());
}};
for (final StubRequest assertingRequest : assertingRequests) {
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenUrlRegexified_ButBadAssertionUrlConfigured() throws Exception {
final String url = "^/[a-z]{3}/[0-9]+/?$";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/abcm/12345/").withMethodGet().build();
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenComplexUrlRegexified_ButGoodAssertionUrlConfigured() throws Exception {
final String url = "^/[a-z]{3}-[a-z]{3}/[0-9]{2}/[A-Z]{2}/[a-z0-9]+$";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final List<StubRequest> assertingRequests = new LinkedList<StubRequest>() {{
add(builder.withUrl("/abc-efg/12/KM/jhgjkhg234234l2").withMethodGet().build());
add(builder.withUrl("/abc-efg/12/KM/23423").withMethodGet().build());
add(builder.withUrl("/aaa-aaa/00/AA/qwerty").withMethodGet().build());
}};
for (final StubRequest assertingRequest : assertingRequests) {
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenComplexUrlRegexified_ButBadAssertionUrlConfigured() throws Exception {
final String url = "^/[a-z]{3}-[a-z]{3}/[0-9]{2}/[A-Z]{2}/[a-z0-9]+$";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final List<StubRequest> assertingRequests = new LinkedList<StubRequest>() {{
add(builder.withUrl("/abca-efg/12/KM/jhgjkhg234234l2").withMethodGet().build());
add(builder.withUrl("/abcefg/12/KM/23423").withMethodGet().build());
add(builder.withUrl("/aaa-aaa/00/Af/qwerty").withMethodGet().build());
add(builder.withUrl("/aaa-aaa/00/AA/qwerTy").withMethodGet().build());
add(builder.withUrl("/aaa-aaa/009/AA/qwerty").withMethodGet().build());
add(builder.withUrl("/AAA-AAA/00/AA/qwerty").withMethodGet().build());
}};
for (final StubRequest assertingRequest : assertingRequests) {
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
}
@Test
public void stubbedRequestShouldReturnEmptyRegexGroup_WhenValidRegexHasNoMatcherGroups() throws Exception {
final String url = "^/[a-z]{3}-[a-z]{3}/[0-9]{2}/[A-Z]{2}/[a-z0-9]+$";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/abc-efg/12/KM/jhgjkhg234234l2").withMethodGet().build();
final boolean equals = assertingRequest.equals(expectedRequest);
assertThat(equals).isTrue();
assertThat(assertingRequest.getRegexGroups().size()).isEqualTo(1);
assertThat(assertingRequest.getRegexGroups().toString()).isEqualTo("{url.0=/abc-efg/12/KM/jhgjkhg234234l2}");
}
@Test
public void stubbedRequestShouldReturnOneRegexGroup_WhenValidRegexHasMatcherGroups() throws Exception {
final String url = "^/[a-z]{3}-[a-z]{3}/[0-9]{2}/[A-Z]{2}/([a-z0-9]+)$";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/abc-efg/12/KM/jhgjkhg234234l2").withMethodGet().build();
final boolean equals = assertingRequest.equals(expectedRequest);
assertThat(equals).isTrue();
assertThat(assertingRequest.getRegexGroups().keySet().size()).isEqualTo(2);
assertThat(assertingRequest.getRegexGroups().values().size()).isEqualTo(2);
assertThat(assertingRequest.getRegexGroups().toString()).isEqualTo("{url.0=/abc-efg/12/KM/jhgjkhg234234l2, url.1=jhgjkhg234234l2}");
}
@Test
public void stubbedRequestShouldReturnMultipleRegexGroups_WhenValidRegexHasMatcherGroups() throws Exception {
final String url = "^/([a-z]{3}-[a-z]{3})/[0-9]{2}/[A-Z]{2}/([a-z0-9]+)$";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/abc-efg/12/KM/jhgjkhg234234l2").withMethodGet().build();
final boolean equals = assertingRequest.equals(expectedRequest);
assertThat(equals).isTrue();
assertThat(assertingRequest.getRegexGroups().keySet().size()).isEqualTo(3);
assertThat(assertingRequest.getRegexGroups().values().size()).isEqualTo(3);
assertThat(assertingRequest.getRegexGroups().toString()).isEqualTo("{url.0=/abc-efg/12/KM/jhgjkhg234234l2, url.1=abc-efg, url.2=jhgjkhg234234l2}");
}
@Test
public void stubbedRequestShouldReturnMultipleRegexGroups_WhenRegexHasCapturingGroupWhichIsAlsoFullRegex() throws Exception {
final String url = "^([a-z]{3})$";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("abc").withMethodGet().build();
final boolean equals = assertingRequest.equals(expectedRequest);
assertThat(equals).isTrue();
assertThat(assertingRequest.getRegexGroups().keySet().size()).isEqualTo(2);
assertThat(assertingRequest.getRegexGroups().values().size()).isEqualTo(2);
assertThat(assertingRequest.getRegexGroups().toString()).isEqualTo("{url.0=abc, url.1=abc}");
}
@Test
public void stubbedRequestShouldReturnMultipleRegexGroups_WhenValidRegexHasCapturingGroupsInMultipleProperties() throws Exception {
final String url = "^/([a-z]{3}-[a-z]{3})/[0-9]{2}/[A-Z]{2}/([a-z0-9]+)$";
final StubRequest expectedRequest =
builder.withUrl(url).withMethodGet().withQuery("paramOne", "(\\d{1,})").build();
final StubRequest assertingRequest =
builder.withUrl("/abc-efg/12/KM/jhgjkhg234234l2").withQuery("paramOne", "12345").withMethodGet().build();
final boolean equals = assertingRequest.equals(expectedRequest);
assertThat(equals).isTrue();
assertThat(assertingRequest.getRegexGroups().keySet().size()).isEqualTo(5);
assertThat(assertingRequest.getRegexGroups().values().size()).isEqualTo(5);
assertThat(assertingRequest.getRegexGroups()
.toString()).isEqualTo("{query.paramOne.0=12345, query.paramOne.1=12345, url.0=/abc-efg/12/KM/jhgjkhg234234l2, url.1=abc-efg, url.2=jhgjkhg234234l2}");
}
@Test
public void stubbedRequestShouldReturnMultipleRegexGroups_WhenValidRegexHasCapturingGroupsInQuery() throws Exception {
final String url = "^/([a-z]{3}-[a-z]{3})/[0-9]{2}/[A-Z]{2}/([a-z0-9]+)$";
final StubRequest expectedRequest =
builder.withUrl(url).withMethodGet().withQuery("paramOne", "(\\d{1,})").withQuery("paramTwo", "([A-Z]{5})").build();
final StubRequest assertingRequest =
builder.withUrl("/abc-efg/12/KM/jhgjkhg234234l2").withQuery("paramOne", "12345").withQuery("paramTwo", "ABCDE").withMethodGet().build();
final boolean equals = assertingRequest.equals(expectedRequest);
assertThat(equals).isTrue();
assertThat(assertingRequest.getRegexGroups().keySet().size()).isEqualTo(7);
assertThat(assertingRequest.getRegexGroups().values().size()).isEqualTo(7);
assertThat(assertingRequest.getRegexGroups()
.toString()).isEqualTo("{query.paramOne.0=12345, query.paramOne.1=12345, query.paramTwo.0=ABCDE, query.paramTwo.1=ABCDE, url.0=/abc-efg/12/KM/jhgjkhg234234l2, url.1=abc-efg, url.2=jhgjkhg234234l2}");
}
@Test
public void stubbedRequestShouldReturnMultipleRegexGroups_WhenValidRegexHasOneSubCapturingGroup() throws Exception {
final String url = "^/([a-z]{3}-([a-z]{3}))/([a-z0-9]+)$";
final StubRequest expectedRequest =
builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest =
builder.withUrl("/abc-efg/jhgjkhg234234l2").withMethodGet().build();
final boolean equals = assertingRequest.equals(expectedRequest);
assertThat(equals).isTrue();
assertThat(assertingRequest.getRegexGroups().keySet().size()).isEqualTo(4);
assertThat(assertingRequest.getRegexGroups().values().size()).isEqualTo(4);
assertThat(assertingRequest.getRegexGroups()
.toString()).isEqualTo("{url.0=/abc-efg/jhgjkhg234234l2, url.1=abc-efg, url.2=efg, url.3=jhgjkhg234234l2}");
}
@Test
public void stubbedRequestShouldReturnMultipleRegexGroups_WhenValidRegexHasMultipleSubCapturingGroups() throws Exception {
final String url = "^/(([a-z]{3})-([a-z]{3}))/([a-z0-9]+)$";
final StubRequest expectedRequest =
builder.withUrl(url).withMethodGet().build();
final StubRequest assertingRequest =
builder.withUrl("/abc-efg/jhgjkhg234234l2").withMethodGet().build();
final boolean equals = assertingRequest.equals(expectedRequest);
assertThat(equals).isTrue();
assertThat(assertingRequest.getRegexGroups().keySet().size()).isEqualTo(5);
assertThat(assertingRequest.getRegexGroups().values().size()).isEqualTo(5);
assertThat(assertingRequest.getRegexGroups()
.toString()).isEqualTo("{url.0=/abc-efg/jhgjkhg234234l2, url.1=abc-efg, url.2=abc, url.3=efg, url.4=jhgjkhg234234l2}");
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenUrlRegexifiedDoesNotAccommodateForQueryString() throws Exception {
final String url = "^/[a-z]{3}-[a-z]{3}/[0-9]{2}/[A-Z]{2}/[a-z0-9]+";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final List<StubRequest> assertingRequests = new LinkedList<StubRequest>() {{
add(builder
.withUrl("/abc-efg/12/KM/jhgjkhg234234l2")
.withMethodGet()
.withQuery("paramOne", "valueOne")
.withQuery("paramTwo", "valueTwo").build());
add(builder.withUrl("/abc-efg/12/KM/23423")
.withMethodGet()
.withQuery("paramOne", "valueOne")
.withQuery("paramTwo", "valueTwo").build());
add(builder.withUrl("/aaa-aaa/00/AA/qwerty")
.withMethodGet()
.withQuery("paramOne", "valueOne")
.withQuery("paramTwo", "valueTwo").build());
}};
for (final StubRequest assertingRequest : assertingRequests) {
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenUrlRegexifiedHasQueryString() throws Exception {
final String url = "^/[a-z]{3}-[a-z]{3}/[0-9]{2}/[A-Z]{2}/[a-z0-9]+\\?paramOne=[a-zA-Z]{8}¶mTwo=[a-zA-Z]{8}";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final List<StubRequest> assertingRequests = new LinkedList<StubRequest>() {{
add(builder
.withUrl("/abc-efg/12/KM/jhgjkhg234234l2")
.withMethodGet()
.withQuery("paramOne", "wqePwrew")
.withQuery("paramTwo", "valueTwo").build());
add(builder.withUrl("/abc-efg/12/KM/23423")
.withMethodGet()
.withQuery("paramOne", "valueOne")
.withQuery("paramTwo", "valueTwo").build());
add(builder.withUrl("/aaa-aaa/00/AA/qwerty")
.withMethodGet()
.withQuery("paramOne", "aaaaaaaa")
.withQuery("paramTwo", "QwErTyUi").build());
}};
for (final StubRequest assertingRequest : assertingRequests) {
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
}
@Test
public void stubbedRequestEqualsAssertingRequest_WhenStaticUrlHasRegexifiedQueryString() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/atom/feed")
.withMethodGet()
.withQuery("min-results", "\\d+")
.withQuery("max-results", "\\d+").build();
final List<StubRequest> assertingRequests = new LinkedList<StubRequest>() {{
add(builder
.withUrl("/atom/feed")
.withMethodGet()
.withQuery("min-results", "0")
.withQuery("max-results", "0").build());
add(builder.withUrl("/atom/feed")
.withMethodGet()
.withQuery("min-results", "1")
.withQuery("max-results", "5").build());
add(builder.withUrl("/atom/feed")
.withMethodGet()
.withQuery("min-results", "4654645756756")
.withQuery("max-results", "5675675686786786785675464564564").build());
}};
for (final StubRequest assertingRequest : assertingRequests) {
assertThat(assertingRequest).isEqualTo(expectedRequest);
}
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenUrlRegexifiedWithStaticQueryString() throws Exception {
final String url = "^/[a-z]{3}-[a-z]{3}/[0-9]{2}/[A-Z]{2}/[a-z0-9]+\\?paramOne=valueOne¶mTwo=valueTwo";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final List<StubRequest> assertingRequests = new LinkedList<StubRequest>() {{
add(builder
.withUrl("/abc-efg/12/KM/jhgjkhg234234l2")
.withMethodGet()
.withQuery("paramOne", "valueOne")
.withQuery("paramTwo", "valueTwo").build());
add(builder.withUrl("/abc-efg/12/KM/23423")
.withMethodGet()
.withQuery("paramOne", "valueOne")
.withQuery("paramTwo", "valueTwo").build());
add(builder.withUrl("/aaa-aaa/00/AA/qwerty")
.withMethodGet()
.withQuery("paramOne", "valueOne")
.withQuery("paramTwo", "valueTwo").build());
}};
for (final StubRequest assertingRequest : assertingRequests) {
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
}
@Test
public void stubbedRequestNotEqualsAssertingRequest_WhenUrlRegexifiedAccomodatesForQueryString_ButBadAssertionUrlConfigured() throws Exception {
final String url = "^/[a-z]{3}-[a-z]{3}/[0-9]{2}/[A-Z]{2}/[a-z0-9]+\\?paramOne=[a-zA-Z]{8}¶mTwo=[a-zA-Z]{8}";
final StubRequest expectedRequest = builder.withUrl(url).withMethodGet().build();
final List<StubRequest> assertingRequests = new LinkedList<StubRequest>() {{
add(builder
.withUrl("/abc-efg/12/KM/jhgjkhg234234l2")
.withMethodGet()
.withQuery("paramSix", "wqePwrew")
.withQuery("paramTwo", "valueTwo").build());
add(builder.withUrl("/abc-efg/12/KM/23423")
.withMethodGet()
.withQuery("paramOne", "12345678")
.withQuery("paramTwo", "valueTwo").build());
add(builder.withUrl("/aaa-aaa/00/AA/qwerty")
.withMethodGet()
.withQuery("paramOne", "aaa7aaaa")
.withQuery("paramTwo", "QwErTyUi").build());
}};
for (final StubRequest assertingRequest : assertingRequests) {
assertThat(assertingRequest).isNotEqualTo(expectedRequest);
}
}
@Test
public void shouldfindStubRequestNotEqual_WhenComparedToNull() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/products/12345/").withMethodGet().build();
assertThat(expectedRequest).isNotEqualTo(null);
}
@Test
public void shouldfindStubRequestNotEqual_WhenComparedToDifferentInstanceClass() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/products/12345/").withMethodGet().build();
final Object assertingObject = StubResponse.okResponse();
final boolean assertionResult = expectedRequest.equals(assertingObject);
assertThat(assertionResult).isFalse();
}
@Test
public void shouldfindStubRequestEqual_WhenComparedToSameInstanceClass() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/products/12345/").withMethodGet().build();
final Object assertingObject = builder.build();
final boolean assertionResult = assertingObject.equals(expectedRequest);
assertThat(assertionResult).isFalse();
}
@Test
public void shouldfindStubRequestEqual_WhenComparedToDifferentObjectWithSameProperties() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/products/12345/").withMethodGet().build();
final StubRequest assertingRequest = builder.withUrl("/products/12345/").withMethodGet().build();
final boolean assertionResultOne = assertingRequest.equals(expectedRequest);
final boolean assertionResultTwo = expectedRequest.equals(assertingRequest);
assertThat(assertionResultOne).isTrue();
assertThat(assertionResultTwo).isTrue();
}
@Test
public void shouldfindStubRequestEqual_WhenComparedToSameIdentity() throws Exception {
final StubRequest expectedRequest = builder.withUrl("/products/12345/").withMethodGet().build();
assertThat(expectedRequest).isEqualTo(expectedRequest);
}
@Test
public void shouldFindTwoHashCodesEqual_WhenTwoRequestAreTheSame() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "[%22alex%22,%22tracy%22]";
final String contentLength = "30";
final String contentLanguage = "en-US";
final String url = "/invoice/123";
final String postBody = "this is a post body";
final StubRequest requestOne =
builder.withUrl(url)
.withMethodGet()
.withMethodPost()
.withMethodPut()
.withPost(postBody)
.withFile(FileUtils.fileFromString("bytes"))
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue)
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
final StubRequest requestTwo =
builder.withUrl(url)
.withMethodGet()
.withMethodPost()
.withMethodPut()
.withPost(postBody)
.withFile(FileUtils.fileFromString("bytes"))
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue)
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
assertThat(requestOne.hashCode()).isEqualTo(requestTwo.hashCode());
}
@Test
public void shouldNotFindTwoHashCodesEqual_WhenTwoRequestHaveDifferentAmdNullPostBody() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "[%22alex%22,%22tracy%22]";
final String contentLength = "30";
final String contentLanguage = "en-US";
final String url = "/invoice/123";
final String postBody = "this is a post body";
final StubRequest requestOne =
builder.withUrl(url)
.withMethodGet()
.withMethodPost()
.withMethodPut()
.withPost(null)
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue)
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
final StubRequest requestTwo =
builder.withUrl(url)
.withMethodGet()
.withMethodPost()
.withMethodPut()
.withPost(postBody)
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue)
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
assertThat(requestOne.hashCode()).isNotEqualTo(requestTwo.hashCode());
}
@Test
public void shouldNotFindTwoHashCodesEqual_WhenTwoRequestHaveDifferentHeaderValue() throws Exception {
final String paramOne = "paramOne";
final String paramOneValue = "one";
final String paramTwo = "paramTwo";
final String paramTwoValue = "[%22alex%22,%22tracy%22]";
final String contentLength = "30";
final String contentLanguage = "en-US";
final String url = "/invoice/123";
final String postBody = "this is a post body";
final StubRequest requestOne =
builder.withUrl(url)
.withMethodGet()
.withMethodPost()
.withMethodPut()
.withPost(postBody)
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue)
.withApplicationXmlContentType()
.withHeaderContentLength(contentLength)
.withHeaderContentLanguage(contentLanguage).build();
final StubRequest requestTwo =
builder.withUrl(url)
.withMethodGet()
.withMethodPost()
.withMethodPut()
.withPost(postBody)
.withQuery(paramOne, paramOneValue)
.withQuery(paramTwo, paramTwoValue)
.withApplicationXmlContentType()
.withHeaderContentLength("31")
.withHeaderContentLanguage(contentLanguage).build();
assertThat(requestOne.hashCode()).isNotEqualTo(requestTwo.hashCode());
}
@Test
public void shouldFindTwoHashCodesEqual_WhenTwoRequestHaveMethodAndUrlNull() throws Exception {
final StubRequest requestOne =
builder.withUrl(null)
.withMethod(null).build();
final StubRequest requestTwo =
builder.withUrl(null)
.withMethod(null).build();
assertThat(requestOne.hashCode()).isEqualTo(requestTwo.hashCode());
}
@Test
public void shouldFindTwoHashCodesEqual_WhenTwoRequestHaveUrlNull() throws Exception {
final StubRequest requestOne =
builder.withUrl(null)
.withMethodGet().build();
final StubRequest requestTwo =
builder.withUrl(null)
.withMethodGet().build();
assertThat(requestOne.hashCode()).isEqualTo(requestTwo.hashCode());
}
@Test
public void shouldMatchExpectedToStringOutput_WhenActualRequestHasTheSameOutput() throws Exception {
final StubRequest actualRequest =
builder.withUrl("/invoice/123")
.withMethodGet()
.withMethodPost()
.withMethodPut()
.withPost("this is a post body")
.withQuery("paramOne", "paramOneValue")
.withQuery("paramTwo", "paramTwoValue")
.withHeader("headerThree", "headerThreeValue")
.withHeader("headerTwo", "headerTwoValue")
.withHeader("headerOne", "headerOneValue").build();
final String expectedToStringOutput = "StubRequest{" +
"url=/invoice/123, " +
"method=[GET, POST, PUT], " +
"post=this is a post body, " +
"query={paramOne=paramOneValue, paramTwo=paramTwoValue}, " +
"headers={headerthree=headerThreeValue, headertwo=headerTwoValue, headerone=headerOneValue}}";
assertThat(actualRequest.toString()).isEqualTo(expectedToStringOutput);
}
@Test
public void shouldMatchExpectedToStringOutput_WhenActualRequestHasNullBody() throws Exception {
final StubRequest actualRequest =
builder.withUrl("/invoice/123")
.withMethodGet()
.withMethodPost()
.withMethodPut()
.withPost(null)
.withQuery("paramOne", "paramOneValue")
.withQuery("paramTwo", "paramTwoValue")
.withHeader("headerThree", "headerThreeValue")
.withHeader("headerTwo", "headerTwoValue")
.withHeader("headerOne", "headerOneValue").build();
final String expectedToStringOutput = "StubRequest{" +
"url=/invoice/123, " +
"method=[GET, POST, PUT], " +
"query={paramOne=paramOneValue, paramTwo=paramTwoValue}, " +
"headers={headerthree=headerThreeValue, headertwo=headerTwoValue, headerone=headerOneValue}}";
assertThat(actualRequest.toString()).isEqualTo(expectedToStringOutput);
}
@Test
public void shouldMatchExpectedToStringOutput_WhenActualRequestHasNullHeaderValue() throws Exception {
final StubRequest actualRequest =
builder.withUrl("/invoice/123")
.withMethodGet()
.withMethodPost()
.withMethodPut()
.withPost(null)
.withQuery("paramOne", "paramOneValue")
.withQuery("paramTwo", "paramTwoValue")
.withHeader("headerThree", "headerThreeValue")
.withHeader("headerTwo", "headerTwoValue")
.withHeader("headerOne", null).build();
final String expectedToStringOutput = "StubRequest{" +
"url=/invoice/123, " +
"method=[GET, POST, PUT], " +
"query={paramOne=paramOneValue, paramTwo=paramTwoValue}, " +
"headers={headerthree=headerThreeValue, headertwo=headerTwoValue, headerone=null}}";
assertThat(actualRequest.toString()).isEqualTo(expectedToStringOutput);
}
@Test
public void shouldMatchExpectedToStringOutput_WhenActualRequestHasAllNullFields() throws Exception {
final StubRequest actualRequest =
builder.withUrl(null)
.withMethod(null)
.withPost(null).build();
final String expectedToStringOutput = "StubRequest{" +
"url=null, " +
"method=[], " +
"query={}, " +
"headers={}}";
assertThat(actualRequest.toString()).isEqualTo(expectedToStringOutput);
}
@Test
public void shouldFindPostNotStubbed_WhenPostNullAndMethodGet() throws Exception {
final StubRequest stubRequest =
builder.withUrl("fssefewf")
.withMethod("GET")
.withPost(null).build();
assertThat(stubRequest.isPostStubbed()).isFalse();
}
@Test
public void shouldFindPostNotStubbed_WhenPostStubbedAndMethodGet() throws Exception {
final StubRequest stubRequest =
builder.withUrl("fssefewf")
.withMethod("GET")
.withPost("stubbed").build();
assertThat(stubRequest.isPostStubbed()).isFalse();
}
@Test
public void shouldFindPostNotStubbed_WhenPostNullAndMethodPut() throws Exception {
final StubRequest stubRequest =
builder.withUrl("fssefewf")
.withMethod("PUT")
.withPost(null).build();
assertThat(stubRequest.isPostStubbed()).isFalse();
}
@Test
public void shouldFindPostNotStubbed_WhenPostEmptyAndMethodPut() throws Exception {
final StubRequest stubRequest =
builder.withUrl("fssefewf")
.withMethod("PUT")
.withPost("").build();
assertThat(stubRequest.isPostStubbed()).isFalse();
}
@Test
public void shouldFindPostStubbed_WhenPostStubbedAndMethodPut() throws Exception {
final StubRequest stubRequest =
builder.withUrl("fssefewf")
.withMethod("PUT")
.withPost("stubbed").build();
assertThat(stubRequest.isPostStubbed()).isTrue();
}
@Test
public void shouldFindPostNotStubbed_WhenPostNullAndMethodPost() throws Exception {
final StubRequest stubRequest =
builder.withUrl("fssefewf")
.withMethod("POST")
.withPost(null).build();
assertThat(stubRequest.isPostStubbed()).isFalse();
}
@Test
public void shouldFindPostNotStubbed_WhenPostEmptyAndMethodPost() throws Exception {
final StubRequest stubRequest =
builder.withUrl("fssefewf")
.withMethod("POST")
.withPost("").build();
assertThat(stubRequest.isPostStubbed()).isFalse();
}
@Test
public void shouldFindPostStubbed_WhenPostStubbedAndMethodPost() throws Exception {
final StubRequest stubRequest =
builder.withUrl("fssefewf")
.withMethod("POST")
.withPost("stubbed").build();
assertThat(stubRequest.isPostStubbed()).isTrue();
}
}