1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.test.web.servlet.setup;
18
19 import java.io.IOException;
20 import javax.servlet.Filter;
21 import javax.servlet.FilterChain;
22 import javax.servlet.ServletException;
23 import javax.servlet.http.HttpServletRequest;
24 import javax.servlet.http.HttpServletResponse;
25
26 import org.junit.Test;
27
28 import org.springframework.mock.web.test.MockHttpServletRequest;
29 import org.springframework.stereotype.Controller;
30 import org.springframework.web.bind.annotation.RequestMapping;
31 import org.springframework.web.context.WebApplicationContext;
32 import org.springframework.web.context.support.WebApplicationContextUtils;
33 import org.springframework.web.filter.OncePerRequestFilter;
34 import org.springframework.web.method.HandlerMethod;
35 import org.springframework.web.servlet.HandlerExecutionChain;
36 import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
37
38 import static org.junit.Assert.*;
39
40
41
42
43
44
45
46
47 public class StandaloneMockMvcBuilderTests {
48
49 @Test
50 public void placeHoldersInRequestMapping() throws Exception {
51
52 TestStandaloneMockMvcBuilder builder = new TestStandaloneMockMvcBuilder(new PlaceholderController());
53 builder.addPlaceHolderValue("sys.login.ajax", "/foo");
54 builder.build();
55
56 RequestMappingHandlerMapping hm = builder.wac.getBean(RequestMappingHandlerMapping.class);
57
58 MockHttpServletRequest request = new MockHttpServletRequest("GET", "/foo");
59 HandlerExecutionChain chain = hm.getHandler(request);
60
61 assertNotNull(chain);
62 assertEquals("handleWithPlaceholders", ((HandlerMethod) chain.getHandler()).getMethod().getName());
63 }
64
65 @Test
66 public void applicationContextAttribute() {
67 TestStandaloneMockMvcBuilder builder = new TestStandaloneMockMvcBuilder(new PlaceholderController());
68 builder.addPlaceHolderValue("sys.login.ajax", "/foo");
69 WebApplicationContext wac = builder.initWebAppContext();
70 assertEquals(wac, WebApplicationContextUtils
71 .getRequiredWebApplicationContext(wac.getServletContext()));
72 }
73
74
75 @Test(expected = IllegalArgumentException.class)
76 public void addFiltersFiltersNull() {
77 StandaloneMockMvcBuilder builder = MockMvcBuilders.standaloneSetup(new PersonController());
78 builder.addFilters((Filter[]) null);
79 }
80
81 @Test(expected = IllegalArgumentException.class)
82 public void addFiltersFiltersContainsNull() {
83 StandaloneMockMvcBuilder builder = MockMvcBuilders.standaloneSetup(new PersonController());
84 builder.addFilters(new ContinueFilter(), (Filter) null);
85 }
86
87 @Test(expected = IllegalArgumentException.class)
88 public void addFilterPatternsNull() {
89 StandaloneMockMvcBuilder builder = MockMvcBuilders.standaloneSetup(new PersonController());
90 builder.addFilter(new ContinueFilter(), (String[]) null);
91 }
92
93 @Test(expected = IllegalArgumentException.class)
94 public void addFilterPatternContainsNull() {
95 StandaloneMockMvcBuilder builder = MockMvcBuilders.standaloneSetup(new PersonController());
96 builder.addFilter(new ContinueFilter(), (String) null);
97 }
98
99
100 @Controller
101 private static class PlaceholderController {
102
103 @RequestMapping(value = "${sys.login.ajax}")
104 private void handleWithPlaceholders() { }
105 }
106
107
108 private static class TestStandaloneMockMvcBuilder extends StandaloneMockMvcBuilder {
109
110 private WebApplicationContext wac;
111
112 private TestStandaloneMockMvcBuilder(Object... controllers) {
113 super(controllers);
114 }
115
116 @Override
117 protected WebApplicationContext initWebAppContext() {
118 this.wac = super.initWebAppContext();
119 return this.wac;
120 }
121 }
122
123 @Controller
124 private static class PersonController {
125 @RequestMapping(value="/forward")
126 public String forward() {
127 return "forward:/persons";
128 }
129 }
130
131 private class ContinueFilter extends OncePerRequestFilter {
132 @Override
133 protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response,
134 FilterChain filterChain) throws ServletException, IOException {
135 filterChain.doFilter(request, response);
136 }
137 }
138
139 }