MockRestRequestMatchers can match query params

Issue: SPR-14995
This commit is contained in:
schjan79
2016-12-07 23:56:30 +01:00
committed by Rossen Stoyanchev
parent ba47d06cbb
commit ba826f1026
2 changed files with 155 additions and 9 deletions

View File

@@ -16,15 +16,20 @@
package org.springframework.test.web.client.match;
import org.junit.Test;
import org.springframework.http.HttpMethod;
import org.springframework.mock.http.client.MockClientHttpRequest;
import org.springframework.test.web.client.RequestMatcher;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.util.UriComponentsBuilder;
import java.net.URI;
import java.util.Arrays;
import org.junit.Test;
import org.springframework.http.HttpMethod;
import org.springframework.mock.http.client.MockClientHttpRequest;
import static org.hamcrest.Matchers.*;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
/**
* Unit tests for {@link MockRestRequestMatchers}.
@@ -129,4 +134,74 @@ public class MockRestRequestMatchersTests {
MockRestRequestMatchers.header("foo", "bar", "baz").match(this.request);
}
@Test
public void queryParameter() throws Exception {
this.request.setURI(createUriWithQueryParameters("foo", "bar", "baz"));
RequestMatcher requestMatcher = MockRestRequestMatchers.queryParameter("foo", "bar", "baz");
assertThat("Factory method did not create any request matcher", requestMatcher, notNullValue());
requestMatcher.match(this.request);
}
@Test(expected = AssertionError.class)
public void queryParameterMissing() throws Exception {
this.request.setURI(UriComponentsBuilder
.fromUriString("http://foo.com")
.path("/bar")
.build().encode()
.toUri());
MockRestRequestMatchers.queryParameter("foo", "bar").match(this.request);
}
@Test(expected = AssertionError.class)
public void queryParameterMissingValue() throws Exception {
this.request.setURI(createUriWithQueryParameters("foo", "bar", "baz"));
MockRestRequestMatchers.queryParameter("foo", "bad").match(this.request);
}
@Test
public void queryParameterContains() throws Exception {
this.request.setURI(createUriWithQueryParameters("foo", "bar", "baz"));
RequestMatcher requestMatcher = MockRestRequestMatchers.queryParameter("foo", containsString("ba"));
assertThat("Factory method did not create any request matcher", requestMatcher, notNullValue());
requestMatcher.match(this.request);
}
@Test(expected = AssertionError.class)
public void queryParameterContainsWithMissingValue() throws Exception {
this.request.setURI(createUriWithQueryParameters("foo", "bar", "baz"));
MockRestRequestMatchers.queryParameter("foo", containsString("bx")).match(this.request);
}
@Test
public void queryParameters() throws Exception {
this.request.setURI(createUriWithQueryParameters("foo", "bar", "baz"));
RequestMatcher requestMatcher = MockRestRequestMatchers.queryParameter("foo", "bar", "baz");
assertThat("Factory method did not create any request matcher", requestMatcher, notNullValue());
requestMatcher.match(this.request);
}
@Test(expected = AssertionError.class)
public void queryParametersWithMissingValue() throws Exception {
this.request.setURI(createUriWithQueryParameters("foo", "bar"));
MockRestRequestMatchers.queryParameter("foo", "bar", "baz").match(this.request);
}
private URI createUriWithQueryParameters(String key, String ... values) {
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.put(key, Arrays.asList(values));
return UriComponentsBuilder
.fromUriString("http://foo.com")
.path("/bar")
.queryParams(params)
.build().encode().toUri();
}
}