12
12
import org .apache .commons .lang3 .StringUtils ;
13
13
import static org .junit .Assert .assertEquals ;
14
14
import static org .junit .Assert .assertNull ;
15
+ import static org .springframework .test .web .servlet .request .MockMvcRequestBuilders .post ;
16
+
15
17
import org .junit .Before ;
16
18
import org .junit .Test ;
17
19
import org .springframework .beans .propertyeditors .CustomNumberEditor ;
@@ -33,6 +35,193 @@ public class MockMvcRequestBuilderUtilsTests {
33
35
public void setUp () {
34
36
this .servletContext = new MockServletContext ();
35
37
}
38
+
39
+ @ Test
40
+ public void withParamsNullForm () {
41
+ MockHttpServletRequestBuilder mockHttpServletRequestBuilder = post (POST_FORM_URL )
42
+ .with (MockMvcRequestBuilderUtils .form (null ));
43
+ final MockHttpServletRequest request = mockHttpServletRequestBuilder .buildRequest (this .servletContext );
44
+ mockHttpServletRequestBuilder .postProcessRequest (request );
45
+
46
+ assertEquals (0 , request .getParameterMap ().size ());
47
+ }
48
+
49
+ @ Test
50
+ public void withParamsNullAndEmptyFields () {
51
+ MockHttpServletRequestBuilder mockHttpServletRequestBuilder = post (POST_FORM_URL )
52
+ .with (MockMvcRequestBuilderUtils .form (new AddUserForm ("" , "" , null , null )));
53
+ final MockHttpServletRequest request = mockHttpServletRequestBuilder .buildRequest (this .servletContext );
54
+ mockHttpServletRequestBuilder .postProcessRequest (request );
55
+
56
+ assertEquals (StringUtils .EMPTY , request .getParameter ("name" ));
57
+ assertEquals (StringUtils .EMPTY , request .getParameter ("firstName" ));
58
+ assertNull (request .getParameter ("birthDate" ));
59
+ assertNull (request .getParameter ("currentAddress.city" ));
60
+ }
61
+
62
+ @ Test
63
+ public void withParamsSimpleFields () {
64
+ final AddUserForm addUserForm = AddUserForm .builder ()
65
+ .firstName ("John" ).name ("Doe" )
66
+ .currentAddress (new AddUserForm .Address (1 , "Street" , 5222 , "New York" ))
67
+ .build ();
68
+
69
+ MockHttpServletRequestBuilder mockHttpServletRequestBuilder = post (POST_FORM_URL )
70
+ .with (MockMvcRequestBuilderUtils .form (addUserForm ));
71
+ final MockHttpServletRequest request = mockHttpServletRequestBuilder .buildRequest (this .servletContext );
72
+ mockHttpServletRequestBuilder .postProcessRequest (request );
73
+
74
+ assertEquals ("John" , request .getParameter ("firstName" ));
75
+ assertEquals ("New York" , request .getParameter ("currentAddress.city" ));
76
+ }
77
+
78
+ @ Test
79
+ public void withParamsSimpleCollection () {
80
+ final AddUserForm addUserForm = AddUserForm .builder ().firstName ("John" ).name ("Doe" )
81
+ .usernames (Arrays .asList ("john.doe" , "jdoe" ))
82
+ .build ();
83
+
84
+ MockHttpServletRequestBuilder mockHttpServletRequestBuilder = post (POST_FORM_URL )
85
+ .with (MockMvcRequestBuilderUtils .form (addUserForm ));
86
+ final MockHttpServletRequest request = mockHttpServletRequestBuilder .buildRequest (this .servletContext );
87
+ mockHttpServletRequestBuilder .postProcessRequest (request );
88
+
89
+ assertEquals ("john.doe" , request .getParameter ("usernames[0]" ));
90
+ assertEquals ("jdoe" , request .getParameter ("usernames[1]" ));
91
+ }
92
+
93
+ @ Test
94
+ public void withParamsComplexCollection () {
95
+ final AddUserForm addUserForm = AddUserForm .builder ().firstName ("John" ).name ("Doe" ).build ();
96
+ MockMvcRequestBuilderUtils .registerPropertyEditor (LocalDate .class , new CustomLocalDatePropertyEditor (DATE_FORMAT_PATTERN ));
97
+ final LocalDate bachelorDate = LocalDate .now ().minusYears (2 );
98
+ final LocalDate masterDate = LocalDate .now ();
99
+ addUserForm .setDiplomas (Arrays .asList (new AddUserForm .Diploma ("License" , bachelorDate ), new AddUserForm .Diploma ("MSC" , masterDate )));
100
+
101
+ MockHttpServletRequestBuilder mockHttpServletRequestBuilder = post (POST_FORM_URL )
102
+ .with (MockMvcRequestBuilderUtils .form (addUserForm ));
103
+ MockHttpServletRequest request = mockHttpServletRequestBuilder .buildRequest (this .servletContext );
104
+ mockHttpServletRequestBuilder .postProcessRequest (request );
105
+
106
+ assertEquals ("License" , request .getParameter ("diplomas[0].name" ));
107
+ assertEquals (bachelorDate .format (DateTimeFormatter .ofPattern (DATE_FORMAT_PATTERN )), request .getParameter ("diplomas[0].date" ));
108
+ assertEquals ("MSC" , request .getParameter ("diplomas[1].name" ));
109
+ assertEquals (masterDate .format (DateTimeFormatter .ofPattern (DATE_FORMAT_PATTERN )), request .getParameter ("diplomas[1].date" ));
110
+ }
111
+
112
+ @ Test
113
+ public void withParamsSimpleArray () {
114
+ final AddUserForm addUserForm = AddUserForm .builder ().firstName ("John" ).name ("Doe" )
115
+ .usernamesArray (new String []{"john.doe" , "jdoe" })
116
+ .build ();
117
+ MockHttpServletRequestBuilder mockHttpServletRequestBuilder = post (POST_FORM_URL )
118
+ .with (MockMvcRequestBuilderUtils .form (addUserForm ));
119
+ MockHttpServletRequest request = mockHttpServletRequestBuilder .buildRequest (this .servletContext );
120
+ mockHttpServletRequestBuilder .postProcessRequest (request );
121
+
122
+ assertEquals ("john.doe" , request .getParameter ("usernamesArray[0]" ));
123
+ assertEquals ("jdoe" , request .getParameter ("usernamesArray[1]" ));
124
+ }
125
+
126
+ @ Test
127
+ public void withParamsComplexArray () {
128
+ final AddUserForm addUserForm = AddUserForm .builder ().firstName ("John" ).name ("Doe" )
129
+ .usernames (Arrays .asList ("john.doe" , "jdoe" ))
130
+ .formerAddresses (new AddUserForm .Address []{
131
+ new AddUserForm .Address (10 , "Street" , 5222 , "Chicago" ),
132
+ new AddUserForm .Address (20 , "Street" , 5222 , "Washington" )
133
+ })
134
+ .build ();
135
+ MockHttpServletRequestBuilder mockHttpServletRequestBuilder = post (POST_FORM_URL )
136
+ .with (MockMvcRequestBuilderUtils .form (addUserForm ));
137
+ MockHttpServletRequest request = mockHttpServletRequestBuilder .buildRequest (this .servletContext );
138
+ mockHttpServletRequestBuilder .postProcessRequest (request );
139
+
140
+ assertEquals ("john.doe" , request .getParameter ("usernames[0]" ));
141
+ assertEquals ("jdoe" , request .getParameter ("usernames[1]" ));
142
+ }
143
+
144
+ @ Test
145
+ public void withParamsEnumField () {
146
+ final AddUserForm addUserForm = AddUserForm .builder ()
147
+ .firstName ("John" ).name ("Doe" ).gender (AddUserForm .Gender .MALE )
148
+ .build ();
149
+ MockHttpServletRequestBuilder mockHttpServletRequestBuilder = post (POST_FORM_URL )
150
+ .with (MockMvcRequestBuilderUtils .form (addUserForm ));
151
+ MockHttpServletRequest request = mockHttpServletRequestBuilder .buildRequest (this .servletContext );
152
+ mockHttpServletRequestBuilder .postProcessRequest (request );
153
+
154
+ assertEquals ("MALE" , request .getParameter ("gender" ));
155
+ }
156
+
157
+ @ Test
158
+ public void withParamsSimpleMapField () {
159
+ final Map <String , String > metadatas = new HashMap <>();
160
+ metadatas .put ("firstName" , "John" );
161
+ metadatas .put ("name" , "Doe" );
162
+ metadatas .put ("gender" , null );
163
+ final AddUserForm addUserForm = AddUserForm .builder ()
164
+ .metadatas (metadatas )
165
+ .build ();
166
+ MockHttpServletRequestBuilder mockHttpServletRequestBuilder = post (POST_FORM_URL )
167
+ .with (MockMvcRequestBuilderUtils .form (addUserForm ));
168
+ MockHttpServletRequest request = mockHttpServletRequestBuilder .buildRequest (this .servletContext );
169
+ mockHttpServletRequestBuilder .postProcessRequest (request );
170
+
171
+ assertEquals ("John" , request .getParameter ("metadatas[firstName]" ));
172
+ assertEquals ("Doe" , request .getParameter ("metadatas[name]" ));
173
+ assertEquals ("" , request .getParameter ("metadatas[gender]" ));
174
+ }
175
+
176
+ @ Test
177
+ public void withParamsBigDecimal () {
178
+ final AddUserForm addUserForm = AddUserForm .builder ()
179
+ .identificationNumber (BigDecimal .TEN )
180
+ .build ();
181
+ MockHttpServletRequestBuilder mockHttpServletRequestBuilder = post (POST_FORM_URL )
182
+ .with (MockMvcRequestBuilderUtils .form (addUserForm ));
183
+ MockHttpServletRequest request = mockHttpServletRequestBuilder .buildRequest (this .servletContext );
184
+ mockHttpServletRequestBuilder .postProcessRequest (request );
185
+
186
+ assertEquals ("10" , request .getParameter ("identificationNumber" ));
187
+ }
188
+
189
+ @ Test
190
+ public void withParamsBigInteger () {
191
+ final AddUserForm addUserForm = AddUserForm .builder ()
192
+ .identificationNumberBigInt (BigInteger .TEN )
193
+ .build ();
194
+ MockHttpServletRequestBuilder mockHttpServletRequestBuilder = post (POST_FORM_URL )
195
+ .with (MockMvcRequestBuilderUtils .form (addUserForm ));
196
+ MockHttpServletRequest request = mockHttpServletRequestBuilder .buildRequest (this .servletContext );
197
+ mockHttpServletRequestBuilder .postProcessRequest (request );
198
+
199
+ assertEquals ("10" , request .getParameter ("identificationNumberBigInt" ));
200
+ }
201
+
202
+ @ Test
203
+ public void withParamsRegisterPropertyEditor () {
204
+ try {
205
+ // Registering a property editor should override default conversion strategy
206
+ MockMvcRequestBuilderUtils .registerPropertyEditor (BigInteger .class , new PropertyEditorSupport () {
207
+ @ Override
208
+ public String getAsText () {
209
+ return "textValue" ;
210
+ }
211
+ });
212
+
213
+ final AddUserForm build = AddUserForm .builder ().identificationNumberBigInt (BigInteger .TEN ).build ();
214
+ MockHttpServletRequestBuilder mockHttpServletRequestBuilder = post (POST_FORM_URL )
215
+ .with (MockMvcRequestBuilderUtils .form (build ));
216
+ MockHttpServletRequest request = mockHttpServletRequestBuilder .buildRequest (this .servletContext );
217
+ mockHttpServletRequestBuilder .postProcessRequest (request );
218
+
219
+ assertEquals ("textValue" , request .getParameter ("identificationNumberBigInt" ));
220
+ } finally {
221
+ // Restore original property editor
222
+ MockMvcRequestBuilderUtils .registerPropertyEditor (BigInteger .class , new CustomNumberEditor (BigInteger .class , true ));
223
+ }
224
+ }
36
225
37
226
@ Test
38
227
public void correctUrl () {
0 commit comments