From 809189be1a251bd84c2bd390d33b45564998a6b2 Mon Sep 17 00:00:00 2001 From: Drummond Dawson Date: Mon, 24 Jul 2017 21:07:47 -0400 Subject: [PATCH] URI variables with MockRestRequestMatchers requestToUriTemplate Issue: SPR-15819 --- .../web/client/match/MockRestRequestMatchers.java | 12 ++++++++++++ .../client/match/MockRestRequestMatchersTests.java | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/spring-test/src/main/java/org/springframework/test/web/client/match/MockRestRequestMatchers.java b/spring-test/src/main/java/org/springframework/test/web/client/match/MockRestRequestMatchers.java index 48ff16d7e3..0838f26c1d 100644 --- a/spring-test/src/main/java/org/springframework/test/web/client/match/MockRestRequestMatchers.java +++ b/spring-test/src/main/java/org/springframework/test/web/client/match/MockRestRequestMatchers.java @@ -86,6 +86,18 @@ public abstract class MockRestRequestMatchers { return request -> assertEquals("Request URI", expectedUri, request.getURI().toString()); } + /** + * Assert the request URI string. + * @param expectedUri the expected URI + * @param uriVars zero or more URI variables to populate the expected URI + * @return the request matcher + */ + public static RequestMatcher requestToUriTemplate(final String expectedUri, final Object... uriVars) { + Assert.notNull(expectedUri, "'uri' must not be null"); + String uri = UriComponentsBuilder.fromUriString(expectedUri).buildAndExpand(uriVars).encode().toString(); + return request -> assertEquals("Request URI", uri, request.getURI().toString()); + } + /** * Expect a request to the given URI. * @param uri the expected URI diff --git a/spring-test/src/test/java/org/springframework/test/web/client/match/MockRestRequestMatchersTests.java b/spring-test/src/test/java/org/springframework/test/web/client/match/MockRestRequestMatchersTests.java index da8360146f..c2d7f9c680 100644 --- a/spring-test/src/test/java/org/springframework/test/web/client/match/MockRestRequestMatchersTests.java +++ b/spring-test/src/test/java/org/springframework/test/web/client/match/MockRestRequestMatchersTests.java @@ -45,6 +45,13 @@ public class MockRestRequestMatchersTests { MockRestRequestMatchers.requestTo("http://foo.com/bar").match(this.request); } + @Test // SPR-15819 + public void requestToUriTemplate() throws Exception { + this.request.setURI(new URI("http://foo.com/bar")); + + MockRestRequestMatchers.requestToUriTemplate("http://foo.com/{bar}", "bar").match(this.request); + } + @Test(expected = AssertionError.class) public void requestToNoMatch() throws Exception { this.request.setURI(new URI("http://foo.com/bar"));