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.
This commit is contained in:
Rossen Stoyanchev 2012-10-11 22:11:00 -04:00
parent 1858ef10ff
commit f7943786de
16 changed files with 162 additions and 108 deletions

View File

@ -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;
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;
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;
*/
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
* 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
*
* @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
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,12 +556,22 @@ public class MockHttpServletRequestBuilder implements RequestBuilder, Mergeable
}
}
request.setQueryString(uriComponents.getQuery());
for (Entry<String, List<String>> entry : uriComponents.getQueryParams().entrySet()) {
for (String value : entry.getValue()) {
request.addParameter(entry.getKey(), value);
try {
if (this.uriComponents.getQuery() != null) {
String query = UriUtils.decode(this.uriComponents.getQuery(), "UTF-8");
request.setQueryString(query);
}
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()) {

View File

@ -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
* <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);
}

View File

@ -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 {
/**
* 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);
}
}

View File

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

View File

@ -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 {
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 {
};
}
/**
* 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 {
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 {
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 {
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 {
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 {
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;
}
}

View File

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

View File

@ -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;
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 {
@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 {
@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 {
}
@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 {
@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 {
@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 {
@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 {
@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 {
@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 {
@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 {
@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 {
}
@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("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[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("foo=bar=baz", request.getQueryString());
assertEquals("bar=baz", request.getParameter("foo"));
}
@Test
@ -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());

View File

@ -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

View File

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

View File

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

View File

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

View File

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

View File

@ -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

View File

@ -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();
}

View File

@ -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();
}

View File

@ -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();
}