@Override public boolean apply(MatchRule rule) { return rule.test(incomingRequest, expectedRequest); } });
@Override public String getMatchFailureDescriptionForRequests(RecordedHttpRequest incomingRequest, RecordedHttpRequest expectedRequest) { StringBuilder resultBuilder = new StringBuilder(); _matchRules.stream().forEach((rule) -> { if (!rule.test(incomingRequest, expectedRequest)) { resultBuilder.append(rule.getMatchFailureDescriptionForRequests(incomingRequest, expectedRequest)).append("\n"); } }); return resultBuilder.toString(); } }
@Test public void testUriBlacklistExactMatch() throws Exception { RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, new URI("http://www.google.com/?a=a"), null, null); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, new URI("http://www.google.com/?a=a"), null, null); MatchRule matchRule = MatchRuleUtils.matchUriWithQueryBlacklist(new HashSet<>()); Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testMatchDefaultPortHttps() throws Exception { RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, new URI("https://www.example.org/"), null, null); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, new URI("https://www.example.org:443/"), null, null); MatchRule matchRule = new MatchUri(); Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testNotMatchNonDefaultPort() throws Exception { RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, new URI("http://www.example.org/"), null, null); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, new URI("http://www.example.org:8080/"), null, null); MatchRule matchRule = new MatchUri(); Assert.assertFalse(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testIsNotMatch() throws URISyntaxException { RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, new URI("google.com"), null, null); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, new URI("yahoo.com"), null, null); MatchRule matchRule = new MatchUri(); Assert.assertFalse(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); } }
@Test public void testBodyMatchForDifferentRequestTypes() { RecordedHttpBody incomingHttpBody = new RecordedStringHttpBody("------wxyz1234abcd5e\nContent-Disposition: form-data; name=\"org\" \nMMM\n------wxyz1234abcd5e"); Multimap<String, String> headers1 = LinkedHashMultimap.create(); headers1.put(HttpHeaders.CONTENT_TYPE, "multipart/form-data; boundary=wxyz1234abcd5e"); Multimap<String, String> headers2 = LinkedHashMultimap.create(); RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest("POST", null, headers1, incomingHttpBody); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest("GET", null, headers2, null); MatchRule matchRule = new MatchBodyWithAnyBoundary(); Assert.assertFalse(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); } }
@Test public void testIsMatch() throws Exception { RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest("GET", null, null, null); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest("GET", null, null, null); MatchRule matchRule = new MatchMethod(); Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testIsMatch() throws Exception { RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest("GET", null, null, null); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest("GET", null, null, null); MatchRule matchRule = new MatchCaseInsensitiveMethod(); Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testBothNullBodyMatch() { RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, null); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, null); MatchRule matchRule = new MatchBodyWithAnyBoundary(); Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testIsNotMatch() throws Exception { RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest("GET", null, null, null); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest("get", null, null, null); MatchRule matchRule = new MatchMethod(); Assert.assertFalse(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); } }
@Test public void testBothNullBodyMatch() { RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, null); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, null); MatchRule matchRule = new MatchBody(); Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testDifferentParameters() throws Exception { RecordedStringHttpBody stringHttpBody1 = new RecordedStringHttpBody("a=a&b=b&c=c"); RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody("a=a&b=b&c=ccc"); Multimap<String, String> headers = LinkedHashMultimap.create(); headers.put("Content-Type", "application/x-www-form-urlencoded"); RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, headers, stringHttpBody1); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, headers, stringHttpBody2); MatchRule matchRule = new MatchBodyPostParameters(); Assert.assertFalse(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testExactMatch() throws Exception { RecordedStringHttpBody stringHttpBody1 = new RecordedStringHttpBody("a=a&b=b&c=c"); RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody("a=a&b=b&c=c"); Multimap<String, String> headers = LinkedHashMultimap.create(); headers.put("Content-Type", "application/x-www-form-urlencoded"); RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, headers, stringHttpBody1); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, headers, stringHttpBody2); MatchRule matchRule = new MatchBodyPostParameters(); Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testNullAndEmptyBodyMatch() { RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody(""); RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, null); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, stringHttpBody2); MatchRule matchRule = new MatchBody(); Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testNullAndNonEmptyBodyNotMatch() { RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody("abc"); RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, null); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, stringHttpBody2); MatchRule matchRule = new MatchBodyWithAnyBoundary(); Assert.assertFalse(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testNullAndEmptyBodyMatch() { RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody(""); RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, null); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, stringHttpBody2); MatchRule matchRule = new MatchBodyWithAnyBoundary(); Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testIsStringBodyNotMatch() throws Exception { RecordedStringHttpBody stringHttpBody1 = new RecordedStringHttpBody("abc"); RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody("abcd"); RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, stringHttpBody1); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, stringHttpBody2); MatchRule matchRule = new MatchBody(); Assert.assertFalse(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testIsStringBodyMatch() { RecordedStringHttpBody stringHttpBody1 = new RecordedStringHttpBody("abc"); RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody("abc"); RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, stringHttpBody1); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, stringHttpBody2); MatchRule matchRule = new MatchBodyWithAnyBoundary(); Assert.assertTrue(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }
@Test public void testIsStringBodyNotMatch() { RecordedStringHttpBody stringHttpBody1 = new RecordedStringHttpBody("abc"); RecordedStringHttpBody stringHttpBody2 = new RecordedStringHttpBody("abcd"); RecordedHttpRequest recordedHttpRequest1 = new RecordedHttpRequest(null, null, null, stringHttpBody1); RecordedHttpRequest recordedHttpRequest2 = new RecordedHttpRequest(null, null, null, stringHttpBody2); MatchRule matchRule = new MatchBodyWithAnyBoundary(); Assert.assertFalse(matchRule.test(recordedHttpRequest1, recordedHttpRequest2)); }