Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
0e92271a
Commit
0e92271a
authored
Nov 08, 2016
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '1.5.x'
parents
70c5b830
5878e5ee
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
96 additions
and
2 deletions
+96
-2
MockMvcAutoConfiguration.java
...t/autoconfigure/web/servlet/MockMvcAutoConfiguration.java
+32
-2
ExampleControllerAdvice.java
...st/autoconfigure/web/servlet/ExampleControllerAdvice.java
+11
-0
WebMvcTestCustomDispatcherServletIntegrationTests.java
...et/WebMvcTestCustomDispatcherServletIntegrationTests.java
+53
-0
No files found.
spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/servlet/MockMvcAutoConfiguration.java
View file @
0e92271a
...
@@ -22,34 +22,41 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter;
...
@@ -22,34 +22,41 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication
;
import
org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration
;
import
org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration
;
import
org.springframework.boot.autoconfigure.web.WebMvcProperties
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.test.web.servlet.DispatcherServletCustomizer
;
import
org.springframework.test.web.servlet.MockMvc
;
import
org.springframework.test.web.servlet.MockMvc
;
import
org.springframework.test.web.servlet.MockMvcBuilder
;
import
org.springframework.test.web.servlet.MockMvcBuilder
;
import
org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder
;
import
org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder
;
import
org.springframework.test.web.servlet.setup.MockMvcBuilders
;
import
org.springframework.test.web.servlet.setup.MockMvcBuilders
;
import
org.springframework.web.context.WebApplicationContext
;
import
org.springframework.web.context.WebApplicationContext
;
import
org.springframework.web.servlet.DispatcherServlet
;
/**
/**
* Auto-configuration for {@link MockMvc}.
* Auto-configuration for {@link MockMvc}.
*
*
* @author Phillip Webb
* @author Phillip Webb
* @author Andy Wilkinson
* @author Andy Wilkinson
* @author Stephane Nicoll
* @see AutoConfigureWebMvc
* @see AutoConfigureWebMvc
* @since 1.4.0
* @since 1.4.0
*/
*/
@Configuration
@Configuration
@ConditionalOnWebApplication
@ConditionalOnWebApplication
@AutoConfigureAfter
(
WebMvcAutoConfiguration
.
class
)
@AutoConfigureAfter
(
WebMvcAutoConfiguration
.
class
)
@EnableConfigurationProperties
@EnableConfigurationProperties
(
WebMvcProperties
.
class
)
public
class
MockMvcAutoConfiguration
{
public
class
MockMvcAutoConfiguration
{
private
final
WebApplicationContext
context
;
private
final
WebApplicationContext
context
;
private
final
WebMvcProperties
webMvcProperties
;
MockMvcAutoConfiguration
(
WebApplicationContext
context
)
{
MockMvcAutoConfiguration
(
WebApplicationContext
context
,
WebMvcProperties
webMvcProperties
)
{
this
.
context
=
context
;
this
.
context
=
context
;
this
.
webMvcProperties
=
webMvcProperties
;
}
}
@Bean
@Bean
...
@@ -57,6 +64,8 @@ public class MockMvcAutoConfiguration {
...
@@ -57,6 +64,8 @@ public class MockMvcAutoConfiguration {
public
DefaultMockMvcBuilder
mockMvcBuilder
(
public
DefaultMockMvcBuilder
mockMvcBuilder
(
List
<
MockMvcBuilderCustomizer
>
customizers
)
{
List
<
MockMvcBuilderCustomizer
>
customizers
)
{
DefaultMockMvcBuilder
builder
=
MockMvcBuilders
.
webAppContextSetup
(
this
.
context
);
DefaultMockMvcBuilder
builder
=
MockMvcBuilders
.
webAppContextSetup
(
this
.
context
);
builder
.
addDispatcherServletCustomizer
(
new
MockMvcDispatcherServletCustomizer
(
this
.
webMvcProperties
));
for
(
MockMvcBuilderCustomizer
customizer
:
customizers
)
{
for
(
MockMvcBuilderCustomizer
customizer
:
customizers
)
{
customizer
.
customize
(
builder
);
customizer
.
customize
(
builder
);
}
}
...
@@ -75,4 +84,25 @@ public class MockMvcAutoConfiguration {
...
@@ -75,4 +84,25 @@ public class MockMvcAutoConfiguration {
return
builder
.
build
();
return
builder
.
build
();
}
}
private
static
class
MockMvcDispatcherServletCustomizer
implements
DispatcherServletCustomizer
{
private
final
WebMvcProperties
webMvcProperties
;
MockMvcDispatcherServletCustomizer
(
WebMvcProperties
webMvcProperties
)
{
this
.
webMvcProperties
=
webMvcProperties
;
}
@Override
public
void
customize
(
DispatcherServlet
dispatcherServlet
)
{
dispatcherServlet
.
setDispatchOptionsRequest
(
this
.
webMvcProperties
.
isDispatchOptionsRequest
());
dispatcherServlet
.
setDispatchTraceRequest
(
this
.
webMvcProperties
.
isDispatchTraceRequest
());
dispatcherServlet
.
setThrowExceptionIfNoHandlerFound
(
this
.
webMvcProperties
.
isThrowExceptionIfNoHandlerFound
());
}
}
}
}
spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/servlet/ExampleControllerAdvice.java
View file @
0e92271a
...
@@ -16,14 +16,18 @@
...
@@ -16,14 +16,18 @@
package
org
.
springframework
.
boot
.
test
.
autoconfigure
.
web
.
servlet
;
package
org
.
springframework
.
boot
.
test
.
autoconfigure
.
web
.
servlet
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.ResponseStatus
;
import
org.springframework.web.servlet.NoHandlerFoundException
;
/**
/**
* Example {@link ControllerAdvice} used with {@link WebMvcTest} tests.
* Example {@link ControllerAdvice} used with {@link WebMvcTest} tests.
*
*
* @author Phillip Webb
* @author Phillip Webb
* @author Stephane Nicoll
*/
*/
@ControllerAdvice
@ControllerAdvice
public
class
ExampleControllerAdvice
{
public
class
ExampleControllerAdvice
{
...
@@ -33,4 +37,11 @@ public class ExampleControllerAdvice {
...
@@ -33,4 +37,11 @@ public class ExampleControllerAdvice {
return
ResponseEntity
.
ok
(
"recovered"
);
return
ResponseEntity
.
ok
(
"recovered"
);
}
}
@ExceptionHandler
(
NoHandlerFoundException
.
class
)
@ResponseStatus
(
HttpStatus
.
BAD_REQUEST
)
public
ResponseEntity
<
String
>
noHandlerFoundHandler
(
NoHandlerFoundException
exception
)
{
return
ResponseEntity
.
badRequest
()
.
body
(
"Invalid request: "
+
exception
.
getRequestURL
());
}
}
}
spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/servlet/WebMvcTestCustomDispatcherServletIntegrationTests.java
0 → 100644
View file @
0e92271a
/*
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
test
.
autoconfigure
.
web
.
servlet
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.test.context.TestPropertySource
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
org.springframework.test.web.servlet.MockMvc
;
import
org.springframework.web.servlet.DispatcherServlet
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
request
.
MockMvcRequestBuilders
.
get
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
result
.
MockMvcResultMatchers
.
content
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
result
.
MockMvcResultMatchers
.
status
;
/**
* Tests for Test {@link DispatcherServlet} customizations.
*
* @author Stephane Nicoll
*/
@RunWith
(
SpringRunner
.
class
)
@WebMvcTest
(
secure
=
false
)
@TestPropertySource
(
properties
=
{
"spring.mvc.throw-exception-if-no-handler-found=true"
,
"spring.mvc.static-path-pattern=/static/**"
})
public
class
WebMvcTestCustomDispatcherServletIntegrationTests
{
@Autowired
private
MockMvc
mvc
;
@Test
public
void
dispatcherServletIsCustomized
()
throws
Exception
{
this
.
mvc
.
perform
(
get
(
"/does-not-exist"
))
.
andExpect
(
status
().
isBadRequest
())
.
andExpect
(
content
().
string
(
"Invalid request: /does-not-exist"
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment