Class MockHttpServletRequestBuilder
- All Implemented Interfaces:
Mergeable
,ConfigurableSmartRequestBuilder<MockHttpServletRequestBuilder>
,RequestBuilder
,SmartRequestBuilder
- Direct Known Subclasses:
MockMultipartHttpServletRequestBuilder
MockHttpServletRequest
required as input to
perform requests in MockMvc
.
Application tests will typically access this builder through the static
factory methods in MockMvcRequestBuilders
.
This class is not open for extension. To apply custom initialization to
the created MockHttpServletRequest
, please use the
with(RequestPostProcessor)
extension point.
- Since:
- 3.2
- Author:
- Rossen Stoyanchev, Juergen Hoeller, Arjen Poutsma, Sam Brannen, Kamill Sokol
-
Method Summary
Modifier and TypeMethodDescriptionSet theAccept
header using raw String values, possibly not even well-formed (for testing purposes).Set the 'Accept' header to the given media type(s).final MockHttpServletRequest
buildRequest
(ServletContext servletContext) Build aMockHttpServletRequest
.characterEncoding
(String encoding) Set the character encoding of the request.characterEncoding
(Charset encoding) Set the character encoding of the request.content
(byte[] content) Set the request body.Set the request body as a UTF-8 String.contentType
(String contentType) Set the 'Content-Type' header of the request as a raw String value, possibly not even well-formed (for testing purposes).contentType
(MediaType contentType) Set the 'Content-Type' header of the request.contextPath
(String contextPath) Specify the portion of the requestURI that represents the context path.Add the given cookies to the request.protected MockHttpServletRequest
createServletRequest
(ServletContext servletContext) Create a newMockHttpServletRequest
based on the suppliedServletContext
.Set an "input" flash attribute.flashAttrs
(Map<String, Object> flashAttributes) Set flash attributes.Add a header to the request.headers
(HttpHeaders httpHeaders) Add all headers to the request.boolean
Is merging enabled for this particular instance?Set the locale of the request, overriding any previous locales.Add the specified locales as preferred request locales.Merges the properties of the "parent" RequestBuilder accepting values only if not already set in "this" instance.Add a request parameter toMockHttpServletRequest.getParameterMap()
.params
(MultiValueMap<String, String> params) Variant ofparam(String, String...)
with aMultiValueMap
.Specify the portion of the requestURI that represents the pathInfo.postProcessRequest
(MockHttpServletRequest request) Apply request post-processing.Set the principal of the request.queryParam
(String name, String... values) Append to the query string and also add to therequest parameters
map.queryParams
(MultiValueMap<String, String> params) Append to the query string and also add to therequest parameters
map.remoteAddress
(String remoteAddress) Set the remote address of the request.requestAttr
(String name, Object value) Set a request attribute.secure
(boolean secure) Set the secure property of theServletRequest
indicating use of a secure channel, such as HTTPS.servletPath
(String servletPath) Specify the portion of the requestURI that represents the path to which the Servlet is mapped.session
(MockHttpSession session) Set the HTTP session to use, possibly re-used across requests.sessionAttr
(String name, Object value) Set a session attribute.sessionAttrs
(Map<String, Object> sessionAttributes) Set session attributes.with
(RequestPostProcessor postProcessor) An extension point for further initialization ofMockHttpServletRequest
in ways not built directly into theMockHttpServletRequestBuilder
.
-
Method Details
-
contextPath
Specify the portion of the requestURI that represents the context path. The context path, if specified, must match to the start of the request URI.In most cases, tests can be written by omitting the context path from the requestURI. This is because most applications don't actually depend on the name under which they're deployed. If specified here, the context path must start with a "/" and must not end with a "/".
- See Also:
-
servletPath
Specify the portion of the requestURI that represents the path to which the Servlet is mapped. This is typically a portion of the requestURI after the context path.In most cases, tests can be written by omitting the servlet path from the requestURI. This is because most applications don't actually depend on the prefix to which a servlet is mapped. For example if a Servlet is mapped to
"/main/*"
, tests can be written with the requestURI"/accounts/1"
as opposed to"/main/accounts/1"
. If specified here, the servletPath must start with a "/" and must not end with a "/".- See Also:
-
pathInfo
Specify the portion of the requestURI that represents the pathInfo.If left unspecified (recommended), the pathInfo will be automatically derived by removing the contextPath and the servletPath from the requestURI and using any remaining part. If specified here, the pathInfo must start with a "/".
If specified, the pathInfo will be used as-is.
- See Also:
-
secure
Set the secure property of theServletRequest
indicating use of a secure channel, such as HTTPS.- Parameters:
secure
- whether the request is using a secure channel
-
characterEncoding
Set the character encoding of the request.- Parameters:
encoding
- the character encoding- Since:
- 5.3.10
- See Also:
-
characterEncoding
Set the character encoding of the request.- Parameters:
encoding
- the character encoding
-
content
Set the request body.If content is provided and
contentType(MediaType)
is set toapplication/x-www-form-urlencoded
, the content will be parsed and used to populate therequest parameters
map.- Parameters:
content
- the body content
-
content
Set the request body as a UTF-8 String.If content is provided and
contentType(MediaType)
is set toapplication/x-www-form-urlencoded
, the content will be parsed and used to populate therequest parameters
map.- Parameters:
content
- the body content
-
contentType
Set the 'Content-Type' header of the request.If content is provided and
contentType
is set toapplication/x-www-form-urlencoded
, the content will be parsed and used to populate therequest parameters
map.- Parameters:
contentType
- the content type
-
contentType
Set the 'Content-Type' header of the request as a raw String value, possibly not even well-formed (for testing purposes).- Parameters:
contentType
- the content type- Since:
- 4.1.2
-
accept
Set the 'Accept' header to the given media type(s).- Parameters:
mediaTypes
- one or more media types
-
accept
Set theAccept
header using raw String values, possibly not even well-formed (for testing purposes).- Parameters:
mediaTypes
- one or more media types; internally joined as comma-separated String
-
header
Add a header to the request. Values are always added.- Parameters:
name
- the header namevalues
- one or more header values
-
headers
Add all headers to the request. Values are always added.- Parameters:
httpHeaders
- the headers and values to add
-
param
Add a request parameter toMockHttpServletRequest.getParameterMap()
.In the Servlet API, a request parameter may be parsed from the query string and/or from the body of an
application/x-www-form-urlencoded
request. This method simply adds to the request parameter map. You may also use add Servlet request parameters by specifying the query or form data through one of the following:- Supply a URL with a query to
MockMvcRequestBuilders
. - Add query params via
queryParam(java.lang.String, java.lang.String...)
orqueryParams
. - Provide
content
withcontentType
application/x-www-form-urlencoded
.
- Parameters:
name
- the parameter namevalues
- one or more values
- Supply a URL with a query to
-
params
Variant ofparam(String, String...)
with aMultiValueMap
.- Parameters:
params
- the parameters to add- Since:
- 4.2.4
-
queryParam
Append to the query string and also add to therequest parameters
map. The parameter name and value are encoded when they are added to the query string.- Parameters:
name
- the parameter namevalues
- one or more values- Since:
- 5.2.2
-
queryParams
Append to the query string and also add to therequest parameters
map. The parameter name and value are encoded when they are added to the query string.- Parameters:
params
- the parameters to add- Since:
- 5.2.2
-
cookie
Add the given cookies to the request. Cookies are always added.- Parameters:
cookies
- the cookies to add
-
locale
Add the specified locales as preferred request locales.- Parameters:
locales
- the locales to add- Since:
- 4.3.6
- See Also:
-
locale
Set the locale of the request, overriding any previous locales.- Parameters:
locale
- the locale, ornull
to reset it- See Also:
-
requestAttr
Set a request attribute.- Parameters:
name
- the attribute namevalue
- the attribute value
-
sessionAttr
Set a session attribute.- Parameters:
name
- the session attribute namevalue
- the session attribute value
-
sessionAttrs
Set session attributes.- Parameters:
sessionAttributes
- the session attributes
-
flashAttr
Set an "input" flash attribute.- Parameters:
name
- the flash attribute namevalue
- the flash attribute value
-
flashAttrs
Set flash attributes.- Parameters:
flashAttributes
- the flash attributes
-
session
Set the HTTP session to use, possibly re-used across requests.Individual attributes provided via
sessionAttr(String, Object)
override the content of the session provided here.- Parameters:
session
- the HTTP session
-
principal
Set the principal of the request.- Parameters:
principal
- the principal
-
remoteAddress
Set the remote address of the request.- Parameters:
remoteAddress
- the remote address (IP)- Since:
- 6.0.10
-
with
An extension point for further initialization ofMockHttpServletRequest
in ways not built directly into theMockHttpServletRequestBuilder
. Implementation of this interface can have builder-style methods themselves and be made accessible through static factory methods.- Specified by:
with
in interfaceConfigurableSmartRequestBuilder<MockHttpServletRequestBuilder>
- Parameters:
postProcessor
- a post-processor to add
-
isMergeEnabled
public boolean isMergeEnabled()Is merging enabled for this particular instance?- Specified by:
isMergeEnabled
in interfaceMergeable
- Returns:
- always returns
true
.
-
merge
Merges the properties of the "parent" RequestBuilder accepting values only if not already set in "this" instance. -
buildRequest
Build aMockHttpServletRequest
.- Specified by:
buildRequest
in interfaceRequestBuilder
- Parameters:
servletContext
- theServletContext
to use to create the request- Returns:
- the request
-
createServletRequest
Create a newMockHttpServletRequest
based on the suppliedServletContext
.Can be overridden in subclasses.
-
postProcessRequest
Description copied from interface:SmartRequestBuilder
Apply request post-processing. Typically, that means invoking one or moreorg.springframework.test.web.servlet.request.RequestPostProcessors
.- Specified by:
postProcessRequest
in interfaceSmartRequestBuilder
- Parameters:
request
- the request to initialize- Returns:
- the request to use, either the one passed in or a wrapped one
-