@Test public void shouldUnmarshallYamlIntoObjectTree_WhenYAMLValid_WitQueryParamIsArrayHavingSingleQuotes() throws Exception { final String expectedParamOne = "fruits"; final String expectedParamOneValue = "['apple','orange','banana']"; final String fullQueryOne = String.format("%s=%s", expectedParamOne, expectedParamOneValue); final String yaml = YAML_BUILDER .newStubbedRequest() .withMethodGet() .withUrl("/some/uri") .withQuery(expectedParamOne, String.format("\"%s\"", expectedParamOneValue)) .newStubbedResponse() .withStatus("201") .build(); final List<StubHttpLifecycle> loadedHttpCycles = unmarshall(yaml); final StubHttpLifecycle actualHttpLifecycle = loadedHttpCycles.get(0); final StubRequest actualRequest = actualHttpLifecycle.getRequest(); final MapEntry queryEntryOne = MapEntry.entry(expectedParamOne, expectedParamOneValue); assertThat(actualRequest.getUrl()).contains(fullQueryOne); assertThat(actualRequest.getQuery()).contains(queryEntryOne); }
@Test public void shouldUnmarshallYamlIntoObjectTree_WhenYAMLValid_WithMultipleQueryParams() throws Exception { final String expectedParamOne = "paramOne"; final String expectedParamOneValue = "one"; final String fullQueryOne = String.format("%s=%s", expectedParamOne, expectedParamOneValue); final String expectedParamTwo = "paramTwo"; final String expectedParamTwoValue = "two"; final String fullQueryTwo = String.format("%s=%s", expectedParamTwo, expectedParamTwoValue); final String yaml = YAML_BUILDER .newStubbedRequest() .withMethodGet() .withUrl("/some/uri") .withQuery(expectedParamOne, expectedParamOneValue) .withQuery(expectedParamTwo, expectedParamTwoValue) .newStubbedResponse() .withStatus("500") .build(); final List<StubHttpLifecycle> loadedHttpCycles = unmarshall(yaml); final StubHttpLifecycle actualHttpLifecycle = loadedHttpCycles.get(0); final StubRequest actualRequest = actualHttpLifecycle.getRequest(); final MapEntry queryEntryOne = MapEntry.entry(expectedParamOne, expectedParamOneValue); final MapEntry queryEntryTwo = MapEntry.entry(expectedParamTwo, expectedParamTwoValue); assertThat(actualRequest.getUrl()).contains(fullQueryOne); assertThat(actualRequest.getUrl()).contains(fullQueryTwo); assertThat(actualRequest.getQuery()).contains(queryEntryOne, queryEntryTwo); }
@Override public boolean equals(final Object o) { if (this == o) { return true; } else if (o instanceof StubRequest) { final StubRequest dataStoreRequest = (StubRequest) o; if (!urlsMatch(dataStoreRequest.url, url)) { return false; } if (!arraysIntersect(dataStoreRequest.getMethod(), getMethod())) { ANSITerminal.dump( String.format( "METHOD %s failed match for %s", dataStoreRequest.getMethod(), getMethod())); return false; } if (!postBodiesMatch(dataStoreRequest.getPostBody(), getPostBody())) { ANSITerminal.dump( String.format( "POST BODY %s failed match for %s", dataStoreRequest.getPostBody(), getPostBody())); return false; } if (!headersMatch(dataStoreRequest.getHeaders(), getHeaders())) { ANSITerminal.dump( String.format( "HEADERS %s failed match for %s", dataStoreRequest.getHeaders(), getHeaders())); return false; } if (!queriesMatch(dataStoreRequest.getQuery(), getQuery())) { ANSITerminal.dump( String.format("QUERY %s failed match for %s", dataStoreRequest.getQuery(), getQuery())); return false; } return true; } return false; }
public static StubRequest createFromHttpServletRequest(final HttpServletRequest request) throws IOException { final StubRequest assertionRequest = StubRequest.newStubRequest( request.getPathInfo(), HandlerUtils.extractPostRequestBody(request, "stubs")); assertionRequest.addMethod(request.getMethod()); final Enumeration<String> headerNamesEnumeration = request.getHeaderNames(); final List<String> headerNames = ObjectUtils.isNotNull(headerNamesEnumeration) ? Collections.list(request.getHeaderNames()) : new LinkedList<String>(); for (final String headerName : headerNames) { final String headerValue = request.getHeader(headerName); assertionRequest.getHeaders().put(StringUtils.toLower(headerName), headerValue); } assertionRequest.getQuery().putAll(CollectionUtils.constructParamMap(request.getQueryString())); return assertionRequest; }