Merge pull request #1486 from drumonii/MockRestRequestMatchers-requestTo-UriVars

This commit is contained in:
Rossen Stoyanchev 2017-08-15 15:11:02 +02:00
commit 8bdaba913c
2 changed files with 25 additions and 3 deletions

View File

@ -31,9 +31,10 @@ import org.springframework.util.Assert;
import org.springframework.util.MultiValueMap;
import org.springframework.web.util.UriComponentsBuilder;
import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertNotNull;
import static org.springframework.test.util.AssertionErrors.*;
import static org.springframework.test.util.AssertionErrors.assertEquals;
import static org.springframework.test.util.AssertionErrors.assertTrue;
/**
* Static factory methods for {@link RequestMatcher} classes. Typically used to
@ -77,7 +78,7 @@ public abstract class MockRestRequestMatchers {
}
/**
* Assert the request URI string.
* Assert the request URI matches the given string.
* @param expectedUri the expected URI
* @return the request matcher
*/
@ -86,6 +87,20 @@ public abstract class MockRestRequestMatchers {
return request -> assertEquals("Request URI", expectedUri, request.getURI().toString());
}
/**
* Variant of {@link #requestTo(URI)} that prepares the URI from a URI
* template plus optional variables via {@link UriComponentsBuilder}
* including encoding.
* @param expectedUri the expected URI template
* @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");
URI uri = UriComponentsBuilder.fromUriString(expectedUri).buildAndExpand(uriVars).encode().toUri();
return requestTo(uri);
}
/**
* Expect a request to the given URI.
* @param uri the expected URI

View File

@ -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"));