Browse Source

Polish Spring MVC Test code

Remove use of UriTemplate in MockMvcRequestBuilders.
Rely on UriComponentsBuilder instead.

Decode query params before setting them on MockHttpServletRequest.

Add more options to model result matching for the count of errors.

Ignore white spaces and comments when comparing XML.
pull/166/head
Rossen Stoyanchev 14 years ago
parent
commit
f7943786de
  1. 51
      spring-test-mvc/src/main/java/org/springframework/test/web/mock/servlet/request/MockHttpServletRequestBuilder.java
  2. 8
      spring-test-mvc/src/main/java/org/springframework/test/web/mock/servlet/request/MockMultipartHttpServletRequestBuilder.java
  3. 51
      spring-test-mvc/src/main/java/org/springframework/test/web/mock/servlet/request/MockMvcRequestBuilders.java
  4. 6
      spring-test-mvc/src/main/java/org/springframework/test/web/mock/servlet/result/ContentResultMatchers.java
  5. 66
      spring-test-mvc/src/main/java/org/springframework/test/web/mock/servlet/result/ModelResultMatchers.java
  6. 5
      spring-test-mvc/src/main/java/org/springframework/test/web/mock/support/XmlExpectationsHelper.java
  7. 49
      spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/request/MockHttpServletRequestBuilderTests.java
  8. 4
      spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/result/ContentResultMatchersTests.java
  9. 2
      spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/context/WebAppResourceTests.java
  10. 2
      spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/RequestParameterTests.java
  11. 2
      spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/ResponseBodyTests.java
  12. 8
      spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/ViewResolutionTests.java
  13. 8
      spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/resultmatchers/ContentAssertionTests.java
  14. 2
      spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/resultmatchers/JsonPathAssertionTests.java
  15. 2
      spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/resultmatchers/XmlContentAssertionTests.java
  16. 2
      spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/resultmatchers/XpathAssertionTests.java

51
spring-test-mvc/src/main/java/org/springframework/test/web/mock/servlet/request/MockHttpServletRequestBuilder.java

@ -16,8 +16,8 @@ @@ -16,8 +16,8 @@
package org.springframework.test.web.mock.servlet.request;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Constructor;
import java.net.URI;
import java.security.Principal;
import java.util.ArrayList;
import java.util.Arrays;
@ -31,9 +31,9 @@ import javax.servlet.ServletContext; @@ -31,9 +31,9 @@ import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
import javax.servlet.http.Cookie;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.Mergeable;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.BeanUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
@ -58,6 +58,7 @@ import org.springframework.web.servlet.FlashMapManager; @@ -58,6 +58,7 @@ import org.springframework.web.servlet.FlashMapManager;
import org.springframework.web.servlet.support.SessionFlashMapManager;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;
import org.springframework.web.util.UriUtils;
/**
* Default builder for {@link MockHttpServletRequest} required as input to
@ -72,7 +73,7 @@ import org.springframework.web.util.UriComponentsBuilder; @@ -72,7 +73,7 @@ import org.springframework.web.util.UriComponentsBuilder;
*/
public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable {
private final UriComponentsBuilder uriComponentsBuilder;
private final UriComponents uriComponents;
private final HttpMethod method;
@ -120,15 +121,15 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable @@ -120,15 +121,15 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable
* the {@code MockHttpServletRequest} can be plugged in via
* {@link #with(RequestPostProcessor)}.
*
* @param uri the URI for the request including any component (e.g. scheme, host, query)
* @param httpMethod the HTTP method for the request
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
MockHttpServletRequestBuilder(URI uri, HttpMethod httpMethod) {
MockHttpServletRequestBuilder(HttpMethod httpMethod, String urlTemplate, Object... urlVariables) {
Assert.notNull(uri, "uri is required");
Assert.notNull(urlTemplate, "uriTemplate is required");
Assert.notNull(httpMethod, "httpMethod is required");
this.uriComponentsBuilder = UriComponentsBuilder.fromUri(uri);
this.uriComponents = UriComponentsBuilder.fromUriString(urlTemplate).buildAndExpand(urlVariables).encode();
this.method = httpMethod;
}
@ -196,7 +197,7 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable @@ -196,7 +197,7 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable
*
* @param content the body content
*/
public MockHttpServletRequestBuilder body(byte[] content) {
public MockHttpServletRequestBuilder content(byte[] content) {
this.content = content;
return this;
}
@ -532,21 +533,19 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable @@ -532,21 +533,19 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable
MockHttpServletRequest request = createServletRequest(servletContext);
UriComponents uriComponents = this.uriComponentsBuilder.build();
String requestUri = uriComponents.getPath();
String requestUri = this.uriComponents.getPath();
request.setRequestURI(requestUri);
updatePathRequestProperties(request, requestUri);
if (uriComponents.getScheme() != null) {
request.setScheme(uriComponents.getScheme());
if (this.uriComponents.getScheme() != null) {
request.setScheme(this.uriComponents.getScheme());
}
if (uriComponents.getHost() != null) {
if (this.uriComponents.getHost() != null) {
request.setServerName(uriComponents.getHost());
}
if (uriComponents.getPort() != -1) {
request.setServerPort(uriComponents.getPort());
if (this.uriComponents.getPort() != -1) {
request.setServerPort(this.uriComponents.getPort());
}
request.setMethod(this.method.name());
@ -557,13 +556,23 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable @@ -557,13 +556,23 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable
}
}
request.setQueryString(uriComponents.getQuery());
try {
if (this.uriComponents.getQuery() != null) {
String query = UriUtils.decode(this.uriComponents.getQuery(), "UTF-8");
request.setQueryString(query);
}
for (Entry<String, List<String>> entry : uriComponents.getQueryParams().entrySet()) {
for (String value : entry.getValue()) {
request.addParameter(entry.getKey(), value);
for (Entry<String, List<String>> entry : this.uriComponents.getQueryParams().entrySet()) {
for (String value : entry.getValue()) {
request.addParameter(
UriUtils.decode(entry.getKey(), "UTF-8"),
UriUtils.decode(value, "UTF-8"));
}
}
}
catch (UnsupportedEncodingException ex) {
// shouldn't happen
}
for (String name : this.parameters.keySet()) {
for (String value : this.parameters.get(name)) {

8
spring-test-mvc/src/main/java/org/springframework/test/web/mock/servlet/request/MockMultipartHttpServletRequestBuilder.java

@ -17,7 +17,6 @@ @@ -17,7 +17,6 @@
package org.springframework.test.web.mock.servlet.request;
import java.lang.reflect.Constructor;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
@ -51,9 +50,12 @@ public class MockMultipartHttpServletRequestBuilder extends MockHttpServletReque @@ -51,9 +50,12 @@ public class MockMultipartHttpServletRequestBuilder extends MockHttpServletReque
* <p>For other ways to initialize a {@code MockMultipartHttpServletRequest},
* see {@link #with(RequestPostProcessor)} and the
* {@link RequestPostProcessor} extension point.
*
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
MockMultipartHttpServletRequestBuilder(URI uri) {
super(uri, HttpMethod.POST);
MockMultipartHttpServletRequestBuilder(String urlTemplate, Object... urlVariables) {
super(HttpMethod.POST, urlTemplate, urlVariables);
super.contentType(MediaType.MULTIPART_FORM_DATA);
}

51
spring-test-mvc/src/main/java/org/springframework/test/web/mock/servlet/request/MockMvcRequestBuilders.java

@ -15,11 +15,8 @@ @@ -15,11 +15,8 @@
*/
package org.springframework.test.web.mock.servlet.request;
import java.net.URI;
import org.springframework.http.HttpMethod;
import org.springframework.test.web.mock.servlet.RequestBuilder;
import org.springframework.web.util.UriTemplate;
/**
* Static factory methods for {@link RequestBuilder}s.
@ -39,69 +36,51 @@ public abstract class MockMvcRequestBuilders { @@ -39,69 +36,51 @@ public abstract class MockMvcRequestBuilders {
/**
* Create a {@link MockHttpServletRequestBuilder} for a GET request.
*
* @param urlTemplate a URI template including any component (e.g. scheme, host, query)
* @param urlVariables zero or more URI variables
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
public static MockHttpServletRequestBuilder get(String urlTemplate, Object... urlVariables) {
return request(HttpMethod.GET, urlTemplate, urlVariables);
return new MockHttpServletRequestBuilder(HttpMethod.GET, urlTemplate, urlVariables);
}
/**
* Create a {@link MockHttpServletRequestBuilder} for a POST request.
*
* @param urlTemplate a URI template including any component (e.g. scheme, host, query)
* @param urlVariables zero or more URI variables
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
public static MockHttpServletRequestBuilder post(String urlTemplate, Object... urlVariables) {
return request(HttpMethod.POST, urlTemplate, urlVariables);
return new MockHttpServletRequestBuilder(HttpMethod.POST, urlTemplate, urlVariables);
}
/**
* Create a {@link MockHttpServletRequestBuilder} for a PUT request.
*
* @param urlTemplate a URI template including any component (e.g. scheme, host, query)
* @param urlVariables zero or more URI variables
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
public static MockHttpServletRequestBuilder put(String urlTemplate, Object... urlVariables) {
return request(HttpMethod.PUT, urlTemplate, urlVariables);
return new MockHttpServletRequestBuilder(HttpMethod.PUT, urlTemplate, urlVariables);
}
/**
* Create a {@link MockHttpServletRequestBuilder} for a DELETE request.
*
* @param urlTemplate a URI template including any component (e.g. scheme, host, query)
* @param urlVariables zero or more URI variables
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
public static MockHttpServletRequestBuilder delete(String urlTemplate, Object... urlVariables) {
return request(HttpMethod.DELETE, urlTemplate, urlVariables);
return new MockHttpServletRequestBuilder(HttpMethod.DELETE, urlTemplate, urlVariables);
}
/**
* Create a {@link MockHttpServletRequestBuilder} for a multipart request.
*
* @param urlTemplate a URI template including any component (e.g. scheme, host, query)
* @param urlVariables zero or more URI variables
* @param urlTemplate a URL template; the resulting URL will be encoded
* @param urlVariables zero or more URL variables
*/
public static MockMultipartHttpServletRequestBuilder fileUpload(String urlTemplate, Object... urlVariables) {
URI url = expandUrl(urlTemplate, urlVariables);
return new MockMultipartHttpServletRequestBuilder(url);
}
/**
* Create a {@link MockHttpServletRequestBuilder} for any HTTP method.
*
* @param httpMethod the HTTP method
* @param urlTemplate a URI template including any component (e.g. scheme, host, query)
* @param urlVariables zero or more URI variables
*/
private static MockHttpServletRequestBuilder request(HttpMethod httpMethod, String urlTemplate, Object... urlVariables) {
URI url = expandUrl(urlTemplate, urlVariables);
return new MockHttpServletRequestBuilder(url, httpMethod);
}
private static URI expandUrl(String urlTemplate, Object[] urlVariables) {
UriTemplate uriTemplate = new UriTemplate(urlTemplate);
return uriTemplate.expand(urlVariables);
return new MockMultipartHttpServletRequestBuilder(urlTemplate, urlVariables);
}
}

6
spring-test-mvc/src/main/java/org/springframework/test/web/mock/servlet/result/ContentResultMatchers.java

@ -57,14 +57,14 @@ public class ContentResultMatchers { @@ -57,14 +57,14 @@ public class ContentResultMatchers {
/**
* Assert the ServletResponse content type.
*/
public ResultMatcher mimeType(String contentType) {
return mimeType(MediaType.parseMediaType(contentType));
public ResultMatcher contentType(String contentType) {
return contentType(MediaType.parseMediaType(contentType));
}
/**
* Assert the ServletResponse content type after parsing it as a MediaType.
*/
public ResultMatcher mimeType(final MediaType contentType) {
public ResultMatcher contentType(final MediaType contentType) {
return new ResultMatcher() {
public void match(MvcResult result) throws Exception {
String actual = result.getResponse().getContentType();

66
spring-test-mvc/src/main/java/org/springframework/test/web/mock/servlet/result/ModelResultMatchers.java

@ -24,7 +24,9 @@ import org.hamcrest.MatcherAssert; @@ -24,7 +24,9 @@ import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.springframework.test.web.mock.servlet.MvcResult;
import org.springframework.test.web.mock.servlet.ResultMatcher;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.validation.Errors;
import org.springframework.web.servlet.ModelAndView;
/**
@ -51,8 +53,7 @@ public class ModelResultMatchers { @@ -51,8 +53,7 @@ public class ModelResultMatchers {
return new ResultMatcher() {
@SuppressWarnings("unchecked")
public void match(MvcResult result) throws Exception {
ModelAndView mav = result.getModelAndView();
assertTrue("No ModelAndView found", mav != null);
ModelAndView mav = getModelAndView(result);
MatcherAssert.assertThat("Model attribute '" + name + "'", (T) mav.getModel().get(name), matcher);
}
};
@ -79,6 +80,20 @@ public class ModelResultMatchers { @@ -79,6 +80,20 @@ public class ModelResultMatchers {
};
}
/**
* Assert the given model attribute(s) have errors.
*/
public ResultMatcher attributeErrorCount(final String name, final int expectedCount) {
return new ResultMatcher() {
public void match(MvcResult result) throws Exception {
ModelAndView mav = getModelAndView(result);
Errors errors = getBindingResult(mav, name);
assertEquals("Binding/validation error count for attribute [" + name + "], ",
expectedCount, errors.getErrorCount());
}
};
}
/**
* Assert the given model attribute(s) have errors.
*/
@ -88,7 +103,7 @@ public class ModelResultMatchers { @@ -88,7 +103,7 @@ public class ModelResultMatchers {
ModelAndView mav = getModelAndView(mvcResult);
for (String name : names) {
BindingResult result = getBindingResult(mav, name);
assertTrue("No errors for attribute: " + name, result.hasErrors());
assertTrue("No errors for attribute [" + name + "]", result.hasErrors());
}
}
};
@ -103,7 +118,7 @@ public class ModelResultMatchers { @@ -103,7 +118,7 @@ public class ModelResultMatchers {
ModelAndView mav = getModelAndView(mvcResult);
for (String name : names) {
BindingResult result = getBindingResult(mav, name);
assertTrue("No errors for attribute: " + name, !result.hasErrors());
assertTrue("No errors for attribute [" + name + "]", !result.hasErrors());
}
}
};
@ -117,15 +132,39 @@ public class ModelResultMatchers { @@ -117,15 +132,39 @@ public class ModelResultMatchers {
public void match(MvcResult mvcResult) throws Exception {
ModelAndView mav = getModelAndView(mvcResult);
BindingResult result = getBindingResult(mav, name);
assertTrue("No errors for attribute: '" + name + "'", result.hasErrors());
assertTrue("No errors for attribute: [" + name + "]", result.hasErrors());
for (final String fieldName : fieldNames) {
assertTrue("No errors for field: '" + fieldName + "' of attribute: " + name,
assertTrue("No errors for field: [" + fieldName + "] of attribute [" + name + "]",
result.hasFieldErrors(fieldName));
}
}
};
}
/**
* Assert the total number of errors in the model.
*/
public <T> ResultMatcher errorCount(final int expectedCount) {
return new ResultMatcher() {
public void match(MvcResult result) throws Exception {
int actualCount = getErrorCount(getModelAndView(result).getModelMap());
assertEquals("Binding/validation error count", expectedCount, actualCount);
}
};
}
/**
* Assert the model has errors.
*/
public <T> ResultMatcher hasErrors() {
return new ResultMatcher() {
public void match(MvcResult result) throws Exception {
int count = getErrorCount(getModelAndView(result).getModelMap());
assertTrue("Expected binding/validation errors", count != 0);
}
};
}
/**
* Assert the model has no errors.
*/
@ -134,8 +173,9 @@ public class ModelResultMatchers { @@ -134,8 +173,9 @@ public class ModelResultMatchers {
public void match(MvcResult result) throws Exception {
ModelAndView mav = getModelAndView(result);
for (Object value : mav.getModel().values()) {
if (value instanceof BindingResult) {
assertTrue("Unexpected binding error(s): " + value, !((BindingResult) value).hasErrors());
if (value instanceof Errors) {
assertTrue("Unexpected binding/validation error(s) [" + value + "]",
!((Errors) value).hasErrors());
}
}
}
@ -172,4 +212,14 @@ public class ModelResultMatchers { @@ -172,4 +212,14 @@ public class ModelResultMatchers {
return result;
}
private int getErrorCount(ModelMap model) {
int count = 0;
for (Object value : model.values()) {
if (value instanceof Errors) {
count += ((Errors) value).getErrorCount();
}
}
return count;
}
}

5
spring-test-mvc/src/main/java/org/springframework/test/web/mock/support/XmlExpectationsHelper.java

@ -85,6 +85,11 @@ public class XmlExpectationsHelper { @@ -85,6 +85,11 @@ public class XmlExpectationsHelper {
* @see MockMvcResultMatchers#xpath(String, Map, Object...)
*/
public void assertXmlEqual(String expected, String actual) throws Exception {
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreComments(true);
XMLUnit.setIgnoreAttributeOrder(true);
Document control = XMLUnit.buildControlDocument(expected);
Document test = XMLUnit.buildTestDocument(actual);
Diff diff = new Diff(control, test);

49
spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/request/MockHttpServletRequestBuilderTests.java

@ -20,7 +20,6 @@ import static org.junit.Assert.assertEquals; @@ -20,7 +20,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.net.URI;
import java.security.Principal;
import java.util.Arrays;
import java.util.Collections;
@ -40,7 +39,6 @@ import org.springframework.http.MediaType; @@ -40,7 +39,6 @@ import org.springframework.http.MediaType;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpSession;
import org.springframework.mock.web.MockServletContext;
import org.springframework.test.web.mock.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.servlet.FlashMap;
import org.springframework.web.servlet.support.SessionFlashMapManager;
@ -59,7 +57,7 @@ public class MockHttpServletRequestBuilderTests { @@ -59,7 +57,7 @@ public class MockHttpServletRequestBuilderTests {
@Before
public void setUp() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/foo/bar"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo/bar");
servletContext = new MockServletContext();
}
@ -72,8 +70,8 @@ public class MockHttpServletRequestBuilderTests { @@ -72,8 +70,8 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void uri() throws Exception {
URI uri = new URI("https://java.sun.com:8080/javase/6/docs/api/java/util/BitSet.html?foo=bar#and(java.util.BitSet)");
this.builder = new MockHttpServletRequestBuilder(uri, HttpMethod.GET);
String uri = "https://java.sun.com:8080/javase/6/docs/api/java/util/BitSet.html?foo=bar#and(java.util.BitSet)";
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, uri);
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertEquals("https", request.getScheme());
@ -86,8 +84,8 @@ public class MockHttpServletRequestBuilderTests { @@ -86,8 +84,8 @@ public class MockHttpServletRequestBuilderTests {
}
@Test
public void requestUriEncodedPath() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/foo%20bar"), HttpMethod.GET);
public void requestUriWithEncoding() throws Exception {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo bar");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertEquals("/foo%20bar", request.getRequestURI());
@ -95,7 +93,7 @@ public class MockHttpServletRequestBuilderTests { @@ -95,7 +93,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void contextPathEmpty() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/foo"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -106,7 +104,7 @@ public class MockHttpServletRequestBuilderTests { @@ -106,7 +104,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void contextPathServletPathEmpty() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/travel/hotels/42"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/travel/hotels/42");
this.builder.contextPath("/travel");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
@ -118,7 +116,7 @@ public class MockHttpServletRequestBuilderTests { @@ -118,7 +116,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void contextPathServletPath() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/travel/main/hotels/42"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/travel/main/hotels/42");
this.builder.contextPath("/travel");
this.builder.servletPath("/main");
@ -131,7 +129,7 @@ public class MockHttpServletRequestBuilderTests { @@ -131,7 +129,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void contextPathServletPathInfoEmpty() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/travel/hotels/42"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/travel/hotels/42");
this.builder.contextPath("/travel");
this.builder.servletPath("/hotels/42");
@ -145,7 +143,7 @@ public class MockHttpServletRequestBuilderTests { @@ -145,7 +143,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void contextPathServletPathInfo() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/");
this.builder.servletPath("/index.html");
this.builder.pathInfo(null);
@ -181,7 +179,7 @@ public class MockHttpServletRequestBuilderTests { @@ -181,7 +179,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void requestUriAndFragment() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/foo#bar"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/foo#bar");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertEquals("/foo", request.getRequestURI());
@ -199,7 +197,7 @@ public class MockHttpServletRequestBuilderTests { @@ -199,7 +197,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void requestParameterFromQuery() throws Exception {
this.builder = new MockHttpServletRequestBuilder(new URI("/?foo=bar&foo=baz"), HttpMethod.GET);
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/?foo=bar&foo=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
Map<String, String[]> parameterMap = request.getParameterMap();
@ -209,13 +207,24 @@ public class MockHttpServletRequestBuilderTests { @@ -209,13 +207,24 @@ public class MockHttpServletRequestBuilderTests {
}
@Test
public void requestParametersFromQuery_i18n() throws Exception {
URI uri = new URI("/?foo=I%C3%B1t%C3%ABrn%C3%A2ti%C3%B4n%C3%A0liz%C3%A6ti%C3%B8n");
this.builder = new MockHttpServletRequestBuilder(uri, HttpMethod.GET);
public void requestParameterFromQueryList() throws Exception {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/?foo[0]=bar&foo[1]=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertEquals("foo[0]=bar&foo[1]=baz", request.getQueryString());
assertEquals("bar", request.getParameter("foo[0]"));
assertEquals("baz", request.getParameter("foo[1]"));
}
@Test
public void requestParameterFromQueryWithEncoding() throws Exception {
this.builder = new MockHttpServletRequestBuilder(HttpMethod.GET, "/?foo={value}", "bar=baz");
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
assertEquals("I%C3%B1t%C3%ABrn%C3%A2ti%C3%B4n%C3%A0liz%C3%A6ti%C3%B8n", request.getParameter("foo"));
assertEquals("foo=I%C3%B1t%C3%ABrn%C3%A2ti%C3%B4n%C3%A0liz%C3%A6ti%C3%B8n", request.getQueryString());
assertEquals("foo=bar=baz", request.getQueryString());
assertEquals("bar=baz", request.getParameter("foo"));
}
@Test
@ -247,7 +256,7 @@ public class MockHttpServletRequestBuilderTests { @@ -247,7 +256,7 @@ public class MockHttpServletRequestBuilderTests {
@Test
public void body() throws Exception {
byte[] body = "Hello World".getBytes("UTF-8");
this.builder.body(body);
this.builder.content(body);
MockHttpServletRequest request = this.builder.buildRequest(this.servletContext);
byte[] result = FileCopyUtils.copyToByteArray(request.getInputStream());

4
spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/result/ContentResultMatchersTests.java

@ -29,12 +29,12 @@ public class ContentResultMatchersTests { @@ -29,12 +29,12 @@ public class ContentResultMatchersTests {
@Test
public void typeMatches() throws Exception {
new ContentResultMatchers().mimeType("application/json;charset=UTF-8").match(getStubMvcResult());
new ContentResultMatchers().contentType("application/json;charset=UTF-8").match(getStubMvcResult());
}
@Test(expected=AssertionError.class)
public void typeNoMatch() throws Exception {
new ContentResultMatchers().mimeType("text/plain").match(getStubMvcResult());
new ContentResultMatchers().contentType("text/plain").match(getStubMvcResult());
}
@Test

2
spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/context/WebAppResourceTests.java

@ -68,7 +68,7 @@ public class WebAppResourceTests { @@ -68,7 +68,7 @@ public class WebAppResourceTests {
@Test
public void resourceRequest() throws Exception {
this.mockMvc.perform(get("/resources/Spring.js"))
.andExpect(content().mimeType("text/javascript"))
.andExpect(content().contentType("text/javascript"))
.andExpect(content().string(containsString("Spring={};")));
}

2
spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/RequestParameterTests.java

@ -42,7 +42,7 @@ public class RequestParameterTests { @@ -42,7 +42,7 @@ public class RequestParameterTests {
standaloneSetup(new PersonController()).build()
.perform(get("/search?name=George").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().mimeType("application/json;charset=UTF-8"))
.andExpect(content().contentType("application/json;charset=UTF-8"))
.andExpect(jsonPath("$.name").value("George"));
}

2
spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/ResponseBodyTests.java

@ -41,7 +41,7 @@ public class ResponseBodyTests { @@ -41,7 +41,7 @@ public class ResponseBodyTests {
standaloneSetup(new PersonController()).build()
.perform(get("/person/Lee").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().mimeType("application/json;charset=UTF-8"))
.andExpect(content().contentType("application/json;charset=UTF-8"))
.andExpect(jsonPath("$.name").value("Lee"));
}

8
spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/ViewResolutionTests.java

@ -77,7 +77,7 @@ public class ViewResolutionTests { @@ -77,7 +77,7 @@ public class ViewResolutionTests {
standaloneSetup(new PersonController()).setSingleView(new MappingJacksonJsonView()).build()
.perform(get("/person/Corea"))
.andExpect(status().isOk())
.andExpect(content().mimeType(MediaType.APPLICATION_JSON))
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$.person.name").value("Corea"));
}
@ -90,7 +90,7 @@ public class ViewResolutionTests { @@ -90,7 +90,7 @@ public class ViewResolutionTests {
standaloneSetup(new PersonController()).setSingleView(new MarshallingView(marshaller)).build()
.perform(get("/person/Corea"))
.andExpect(status().isOk())
.andExpect(content().mimeType(MediaType.APPLICATION_XML))
.andExpect(content().contentType(MediaType.APPLICATION_XML))
.andExpect(xpath("/person/name/text()").string(equalTo("Corea")));
}
@ -125,12 +125,12 @@ public class ViewResolutionTests { @@ -125,12 +125,12 @@ public class ViewResolutionTests {
mockMvc.perform(get("/person/Corea").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().mimeType(MediaType.APPLICATION_JSON))
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$.person.name").value("Corea"));
mockMvc.perform(get("/person/Corea").accept(MediaType.APPLICATION_XML))
.andExpect(status().isOk())
.andExpect(content().mimeType(MediaType.APPLICATION_XML))
.andExpect(content().contentType(MediaType.APPLICATION_XML))
.andExpect(xpath("/person/name/text()").string(equalTo("Corea")));
}

8
spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/resultmatchers/ContentAssertionTests.java

@ -52,12 +52,12 @@ public class ContentAssertionTests { @@ -52,12 +52,12 @@ public class ContentAssertionTests {
@Test
public void testContentType() throws Exception {
this.mockMvc.perform(get("/handle"))
.andExpect(content().mimeType(MediaType.TEXT_PLAIN))
.andExpect(content().mimeType("text/plain"));
.andExpect(content().contentType(MediaType.TEXT_PLAIN))
.andExpect(content().contentType("text/plain"));
this.mockMvc.perform(get("/handleUtf8"))
.andExpect(content().mimeType(MediaType.valueOf("text/plain;charset=UTF-8")))
.andExpect(content().mimeType("text/plain;charset=UTF-8"));
.andExpect(content().contentType(MediaType.valueOf("text/plain;charset=UTF-8")))
.andExpect(content().contentType("text/plain;charset=UTF-8"));
}
@Test

2
spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/resultmatchers/JsonPathAssertionTests.java

@ -57,7 +57,7 @@ public class JsonPathAssertionTests { @@ -57,7 +57,7 @@ public class JsonPathAssertionTests {
this.mockMvc = standaloneSetup(new MusicController())
.defaultRequest(get("/").accept(MediaType.APPLICATION_JSON))
.alwaysExpect(status().isOk())
.alwaysExpect(content().mimeType("application/json;charset=UTF-8"))
.alwaysExpect(content().contentType("application/json;charset=UTF-8"))
.build();
}

2
spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/resultmatchers/XmlContentAssertionTests.java

@ -67,7 +67,7 @@ public class XmlContentAssertionTests { @@ -67,7 +67,7 @@ public class XmlContentAssertionTests {
this.mockMvc = standaloneSetup(new MusicController())
.defaultRequest(get("/").accept(MediaType.APPLICATION_XML))
.alwaysExpect(status().isOk())
.alwaysExpect(content().mimeType(MediaType.APPLICATION_XML))
.alwaysExpect(content().contentType(MediaType.APPLICATION_XML))
.build();
}

2
spring-test-mvc/src/test/java/org/springframework/test/web/mock/servlet/samples/standalone/resultmatchers/XpathAssertionTests.java

@ -63,7 +63,7 @@ public class XpathAssertionTests { @@ -63,7 +63,7 @@ public class XpathAssertionTests {
this.mockMvc = standaloneSetup(new MusicController())
.defaultRequest(get("/").accept(MediaType.APPLICATION_XML))
.alwaysExpect(status().isOk())
.alwaysExpect(content().mimeType(MediaType.APPLICATION_XML))
.alwaysExpect(content().contentType(MediaType.APPLICATION_XML))
.build();
}

Loading…
Cancel
Save