private void writeHttpRequest(RecordedHttpRequest recordedHttpRequest) throws IOException { _jsonGenerator .writeStringField(SceneSerializationConstant.SCENE_TAG_HTTPMETHOD, recordedHttpRequest.getMethod().toString()); _jsonGenerator .writeStringField(SceneSerializationConstant.SCENE_TAG_HTTPURI, recordedHttpRequest.getUri().toString()); writeHttpMessage(recordedHttpRequest); }
@Override public String getMatchFailureDescriptionForRequests(RecordedHttpRequest incomingRequest, RecordedHttpRequest expectedRequest) { StringBuilder resultBuilder = new StringBuilder("URI Mismatch"); if (_transform instanceof MatchRuleBlacklistTransform) { resultBuilder.append(" (with Query Blacklist)"); } else if (_transform instanceof MatchRuleWhitelistTransform) { resultBuilder.append(" (with Query Whitelist)"); } try { URI modifiedIncomingUri = getModifiedUri(incomingRequest.getUri()); URI modifiedExpectedUri = getModifiedUri(expectedRequest.getUri()); resultBuilder.append("%n") .append(String.format("Incoming URI: %s%n", modifiedIncomingUri)) .append(String.format("Expected URI: %s%n", modifiedExpectedUri)); } catch (URISyntaxException | UnsupportedEncodingException e) { LOGGER.error("Caught exception " + e + " while constructing modified URI"); } return resultBuilder.toString(); }
public static FullHttpResponse generateNoMatchResponse(RecordedHttpRequest recordedHttpRequest) { StringBuilder bodyTextBuilder = new StringBuilder(); bodyTextBuilder.append("No Matching Request\n").append("Incoming Request Method: ") .append(recordedHttpRequest.getMethod()).append("\n").append("Incoming Request URI: ") .append(recordedHttpRequest.getUri()).append("\n").append("Incoming Request Headers: ") .append(recordedHttpRequest.getHeaders()).append("\n"); RecordedHttpBody incomingBody = recordedHttpRequest.getHttpBody(); if (incomingBody != null) { if (incomingBody instanceof RecordedEncodedHttpBody) { incomingBody = ((RecordedEncodedHttpBody) incomingBody).getDecodedBody(); } if (incomingBody instanceof RecordedStringHttpBody) { bodyTextBuilder.append("Incoming Request Body: ").append(((RecordedStringHttpBody) incomingBody).getContent()); } else { bodyTextBuilder.append("Incoming Request Body: (binary content)"); } } ByteBuf badRequestBody = Unpooled.wrappedBuffer(bodyTextBuilder.toString().getBytes(Charset.forName("UTF-8"))); return new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.BAD_REQUEST, badRequestBody); }
@Test public void testBuildRelativeUri() { String uri = "finance"; HttpRequest nettyRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_0, HttpMethod.GET, uri); nettyRequest.headers().set(HttpHeaders.Names.HOST, "www.google.com/"); RecordedHttpRequestBuilder recordedHttpRequestBuilder = new RecordedHttpRequestBuilder(nettyRequest); RecordedHttpRequest recordedHttpRequest = recordedHttpRequestBuilder.build(); Assert.assertEquals(recordedHttpRequest.getUri().toString(), "https://www.google.com/finance"); }
@Test public void testBuildAbsoluteUri() { String uri = "http://www.google.com"; HttpRequest nettyRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_0, HttpMethod.GET, uri); RecordedHttpRequestBuilder recordedHttpRequestBuilder = new RecordedHttpRequestBuilder(nettyRequest); RecordedHttpRequest recordedHttpRequest = recordedHttpRequestBuilder.build(); Assert.assertEquals(recordedHttpRequest.getUri().toString(), uri); }
@Test public void testBuildWithUriTwoLegs() { HttpRequest nettyRequest1 = new DefaultFullHttpRequest(HttpVersion.HTTP_1_0, HttpMethod.GET, "finance"); RecordedHttpRequestBuilder recordedHttpRequestBuilder = new RecordedHttpRequestBuilder(nettyRequest1); HttpRequest nettyRequest2 = new DefaultFullHttpRequest(HttpVersion.HTTP_1_0, HttpMethod.GET, "google.com"); nettyRequest2.headers().set(HttpHeaders.Names.HOST, "www.google.com/"); recordedHttpRequestBuilder.addHeaders(nettyRequest2); RecordedHttpRequest recordedHttpRequest = recordedHttpRequestBuilder.build(); Assert.assertEquals(recordedHttpRequest.getUri().toString(), "https://www.google.com/finance"); }