16
16
17
17
package org .springframework .web .servlet .mvc .condition ;
18
18
19
+ import java .util .Arrays ;
19
20
import java .util .Collection ;
20
21
import java .util .Collections ;
22
+ import javax .servlet .http .HttpServletRequest ;
21
23
22
24
import org .junit .Test ;
23
25
@@ -37,29 +39,24 @@ public class ProducesRequestConditionTests {
37
39
@ Test
38
40
public void match () {
39
41
ProducesRequestCondition condition = new ProducesRequestCondition ("text/plain" );
40
-
41
- MockHttpServletRequest request = new MockHttpServletRequest ();
42
- request .addHeader ("Accept" , "text/plain" );
42
+ HttpServletRequest request = createRequest ("text/plain" );
43
43
44
44
assertNotNull (condition .getMatchingCondition (request ));
45
45
}
46
46
47
47
@ Test
48
48
public void matchNegated () {
49
49
ProducesRequestCondition condition = new ProducesRequestCondition ("!text/plain" );
50
-
51
- MockHttpServletRequest request = new MockHttpServletRequest ();
52
- request .addHeader ("Accept" , "text/plain" );
50
+ HttpServletRequest request = createRequest ("text/plain" );
53
51
54
52
assertNull (condition .getMatchingCondition (request ));
55
53
}
56
54
57
55
@ Test
58
56
public void matchNegatedWithoutAcceptHeader () {
59
57
ProducesRequestCondition condition = new ProducesRequestCondition ("!text/plain" );
60
- MockHttpServletRequest request = new MockHttpServletRequest ();
61
58
62
- assertNotNull (condition .getMatchingCondition (request ));
59
+ assertNotNull (condition .getMatchingCondition (new MockHttpServletRequest () ));
63
60
assertEquals (Collections .emptySet (), condition .getProducibleMediaTypes ());
64
61
}
65
62
@@ -72,68 +69,57 @@ public void getProducibleMediaTypes() {
72
69
@ Test
73
70
public void matchWildcard () {
74
71
ProducesRequestCondition condition = new ProducesRequestCondition ("text/*" );
75
-
76
- MockHttpServletRequest request = new MockHttpServletRequest ();
77
- request .addHeader ("Accept" , "text/plain" );
72
+ HttpServletRequest request = createRequest ("text/plain" );
78
73
79
74
assertNotNull (condition .getMatchingCondition (request ));
80
75
}
81
76
82
77
@ Test
83
78
public void matchMultiple () {
84
79
ProducesRequestCondition condition = new ProducesRequestCondition ("text/plain" , "application/xml" );
85
-
86
- MockHttpServletRequest request = new MockHttpServletRequest ();
87
- request .addHeader ("Accept" , "text/plain" );
80
+ HttpServletRequest request = createRequest ("text/plain" );
88
81
89
82
assertNotNull (condition .getMatchingCondition (request ));
90
83
}
91
84
92
85
@ Test
93
86
public void matchSingle () {
94
87
ProducesRequestCondition condition = new ProducesRequestCondition ("text/plain" );
95
-
96
- MockHttpServletRequest request = new MockHttpServletRequest ();
97
- request .addHeader ("Accept" , "application/xml" );
88
+ HttpServletRequest request = createRequest ("application/xml" );
98
89
99
90
assertNull (condition .getMatchingCondition (request ));
100
91
}
101
92
102
93
@ Test
103
94
public void matchParseError () {
104
95
ProducesRequestCondition condition = new ProducesRequestCondition ("text/plain" );
105
-
106
- MockHttpServletRequest request = new MockHttpServletRequest ();
107
- request .addHeader ("Accept" , "bogus" );
96
+ HttpServletRequest request = createRequest ("bogus" );
108
97
109
98
assertNull (condition .getMatchingCondition (request ));
110
99
}
111
100
112
101
@ Test
113
102
public void matchParseErrorWithNegation () {
114
103
ProducesRequestCondition condition = new ProducesRequestCondition ("!text/plain" );
115
-
116
- MockHttpServletRequest request = new MockHttpServletRequest ();
117
- request .addHeader ("Accept" , "bogus" );
104
+ HttpServletRequest request = createRequest ("bogus" );
118
105
119
106
assertNull (condition .getMatchingCondition (request ));
120
107
}
121
108
122
109
@ Test
123
110
public void matchByRequestParameter () {
124
- ProducesRequestCondition condition = new ProducesRequestCondition (new String [] {"text/plain" }, new String [] {});
125
-
126
- MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "/foo.txt" );
111
+ String [] produces = {"text/plain" };
112
+ String [] headers = {};
113
+ ProducesRequestCondition condition = new ProducesRequestCondition (produces , headers );
114
+ HttpServletRequest request = new MockHttpServletRequest ("GET" , "/foo.txt" );
127
115
128
116
assertNotNull (condition .getMatchingCondition (request ));
129
117
}
130
118
131
119
@ Test // SPR-17550
132
120
public void matchWithNegationAndMediaTypeAllWithQualityParameter () {
133
121
ProducesRequestCondition condition = new ProducesRequestCondition ("!application/json" );
134
-
135
- MockHttpServletRequest request = new MockHttpServletRequest ();
136
- request .addHeader ("Accept" ,
122
+ HttpServletRequest request = createRequest (
137
123
"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" );
138
124
139
125
assertNotNull (condition .getMatchingCondition (request ));
@@ -145,8 +131,7 @@ public void compareTo() {
145
131
ProducesRequestCondition xml = new ProducesRequestCondition ("application/xml" );
146
132
ProducesRequestCondition none = new ProducesRequestCondition ();
147
133
148
- MockHttpServletRequest request = new MockHttpServletRequest ();
149
- request .addHeader ("Accept" , "application/xml, text/html" );
134
+ HttpServletRequest request = createRequest ("application/xml, text/html" );
150
135
151
136
assertTrue (html .compareTo (xml , request ) > 0 );
152
137
assertTrue (xml .compareTo (html , request ) < 0 );
@@ -155,30 +140,26 @@ public void compareTo() {
155
140
assertTrue (html .compareTo (none , request ) < 0 );
156
141
assertTrue (none .compareTo (html , request ) > 0 );
157
142
158
- request = new MockHttpServletRequest ();
159
- request .addHeader ("Accept" , "application/xml, text/*" );
143
+ request = createRequest ("application/xml, text/*" );
160
144
161
145
assertTrue (html .compareTo (xml , request ) > 0 );
162
146
assertTrue (xml .compareTo (html , request ) < 0 );
163
147
164
- request = new MockHttpServletRequest ();
165
- request .addHeader ("Accept" , "application/pdf" );
148
+ request = createRequest ("application/pdf" );
166
149
167
- assertTrue ( html .compareTo (xml , request ) == 0 );
168
- assertTrue ( xml .compareTo (html , request ) == 0 );
150
+ assertEquals ( 0 , html .compareTo (xml , request ));
151
+ assertEquals ( 0 , xml .compareTo (html , request ));
169
152
170
153
// See SPR-7000
171
- request = new MockHttpServletRequest ();
172
- request .addHeader ("Accept" , "text/html;q=0.9,application/xml" );
154
+ request = createRequest ("text/html;q=0.9,application/xml" );
173
155
174
156
assertTrue (html .compareTo (xml , request ) > 0 );
175
157
assertTrue (xml .compareTo (html , request ) < 0 );
176
158
}
177
159
178
160
@ Test
179
161
public void compareToWithSingleExpression () {
180
- MockHttpServletRequest request = new MockHttpServletRequest ();
181
- request .addHeader ("Accept" , "text/plain" );
162
+ HttpServletRequest request = createRequest ("text/plain" );
182
163
183
164
ProducesRequestCondition condition1 = new ProducesRequestCondition ("text/plain" );
184
165
ProducesRequestCondition condition2 = new ProducesRequestCondition ("text/*" );
@@ -195,8 +176,7 @@ public void compareToMultipleExpressions() {
195
176
ProducesRequestCondition condition1 = new ProducesRequestCondition ("*/*" , "text/plain" );
196
177
ProducesRequestCondition condition2 = new ProducesRequestCondition ("text/*" , "text/plain;q=0.7" );
197
178
198
- MockHttpServletRequest request = new MockHttpServletRequest ();
199
- request .addHeader ("Accept" , "text/plain" );
179
+ HttpServletRequest request = createRequest ("text/plain" );
200
180
201
181
int result = condition1 .compareTo (condition2 , request );
202
182
assertTrue ("Invalid comparison result: " + result , result < 0 );
@@ -210,19 +190,15 @@ public void compareToMultipleExpressionsAndMultipleAcceptHeaderValues() {
210
190
ProducesRequestCondition condition1 = new ProducesRequestCondition ("text/*" , "text/plain" );
211
191
ProducesRequestCondition condition2 = new ProducesRequestCondition ("application/*" , "application/xml" );
212
192
213
- MockHttpServletRequest request = new MockHttpServletRequest ();
214
- request .addHeader ("Accept" , "text/plain" );
215
- request .addHeader ("Accept" , "application/xml" );
193
+ HttpServletRequest request = createRequest ("text/plain" , "application/xml" );
216
194
217
195
int result = condition1 .compareTo (condition2 , request );
218
196
assertTrue ("Invalid comparison result: " + result , result < 0 );
219
197
220
198
result = condition2 .compareTo (condition1 , request );
221
199
assertTrue ("Invalid comparison result: " + result , result > 0 );
222
200
223
- request = new MockHttpServletRequest ();
224
- request .addHeader ("Accept" , "application/xml" );
225
- request .addHeader ("Accept" , "text/plain" );
201
+ request = createRequest ("application/xml" , "text/plain" );
226
202
227
203
result = condition1 .compareTo (condition2 , request );
228
204
assertTrue ("Invalid comparison result: " + result , result > 0 );
@@ -270,8 +246,7 @@ public void compareToMediaTypeAll() {
270
246
271
247
@ Test
272
248
public void compareToMediaTypeAllWithParameter () {
273
- MockHttpServletRequest request = new MockHttpServletRequest ();
274
- request .addHeader ("Accept" , "*/*;q=0.9" );
249
+ HttpServletRequest request = createRequest ("*/*;q=0.9" );
275
250
276
251
ProducesRequestCondition condition1 = new ProducesRequestCondition ();
277
252
ProducesRequestCondition condition2 = new ProducesRequestCondition ("application/json" );
@@ -282,8 +257,7 @@ public void compareToMediaTypeAllWithParameter() {
282
257
283
258
@ Test
284
259
public void compareToEqualMatch () {
285
- MockHttpServletRequest request = new MockHttpServletRequest ();
286
- request .addHeader ("Accept" , "text/*" );
260
+ HttpServletRequest request = createRequest ("text/*" );
287
261
288
262
ProducesRequestCondition condition1 = new ProducesRequestCondition ("text/plain" );
289
263
ProducesRequestCondition condition2 = new ProducesRequestCondition ("text/xhtml" );
@@ -324,8 +298,7 @@ public void instantiateWithProducesAndHeaderConditions() {
324
298
325
299
@ Test
326
300
public void getMatchingCondition () {
327
- MockHttpServletRequest request = new MockHttpServletRequest ();
328
- request .addHeader ("Accept" , "text/plain" );
301
+ HttpServletRequest request = createRequest ("text/plain" );
329
302
330
303
ProducesRequestCondition condition = new ProducesRequestCondition ("text/plain" , "application/xml" );
331
304
@@ -339,6 +312,12 @@ public void getMatchingCondition() {
339
312
}
340
313
341
314
315
+ private MockHttpServletRequest createRequest (String ... headerValue ) {
316
+ MockHttpServletRequest request = new MockHttpServletRequest ();
317
+ Arrays .stream (headerValue ).forEach (value -> request .addHeader ("Accept" , headerValue ));
318
+ return request ;
319
+ }
320
+
342
321
private void assertConditions (ProducesRequestCondition condition , String ... expected ) {
343
322
Collection <ProduceMediaTypeExpression > expressions = condition .getContent ();
344
323
assertEquals ("Invalid number of conditions" , expressions .size (), expected .length );
0 commit comments