1
1
/*
2
- * Copyright 2002-2019 the original author or authors.
2
+ * Copyright 2002-2020 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
22
22
23
23
import org .junit .jupiter .api .Test ;
24
24
25
+ import org .springframework .http .HttpHeaders ;
25
26
import org .springframework .http .HttpMethod ;
26
27
import org .springframework .http .MediaType ;
28
+ import org .springframework .web .testfixture .http .server .reactive .MockServerHttpRequest ;
29
+ import org .springframework .web .testfixture .server .MockServerWebExchange ;
27
30
import org .springframework .web .util .pattern .PathPatternParser ;
28
31
32
+ import static java .util .Collections .emptyList ;
29
33
import static org .assertj .core .api .Assertions .assertThat ;
30
34
31
35
/**
32
36
* @author Arjen Poutsma
33
37
*/
34
38
public class RequestPredicatesTests {
35
39
40
+
36
41
@ Test
37
42
public void all () {
43
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .get ("https://example.com" ).build ();
44
+ MockServerWebExchange mockExchange = MockServerWebExchange .from (mockRequest );
38
45
RequestPredicate predicate = RequestPredicates .all ();
39
- MockServerRequest request = MockServerRequest . builder (). build ( );
46
+ ServerRequest request = new DefaultServerRequest ( mockExchange , Collections . emptyList () );
40
47
assertThat (predicate .test (request )).isTrue ();
41
48
}
42
49
43
50
@ Test
44
51
public void method () {
52
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .get ("https://example.com" ).build ();
53
+
45
54
HttpMethod httpMethod = HttpMethod .GET ;
46
55
RequestPredicate predicate = RequestPredicates .method (httpMethod );
47
- MockServerRequest request = MockServerRequest .builder ().method (httpMethod ).build ();
56
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
57
+ assertThat (predicate .test (request )).isTrue ();
58
+
59
+ mockRequest = MockServerHttpRequest .post ("https://example.com" ).build ();
60
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
61
+ assertThat (predicate .test (request )).isFalse ();
62
+ }
63
+
64
+ @ Test
65
+ public void methodCorsPreFlight () {
66
+ RequestPredicate predicate = RequestPredicates .method (HttpMethod .PUT );
67
+
68
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .options ("https://example.com" )
69
+ .header ("Origin" , "https://example.com" )
70
+ .header (HttpHeaders .ACCESS_CONTROL_REQUEST_METHOD , "PUT" )
71
+ .build ();
72
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
73
+
48
74
assertThat (predicate .test (request )).isTrue ();
49
75
50
- request = MockServerRequest .builder ().method (HttpMethod .POST ).build ();
76
+ mockRequest = MockServerHttpRequest .options ("https://example.com" )
77
+ .header ("Origin" , "https://example.com" )
78
+ .header (HttpHeaders .ACCESS_CONTROL_REQUEST_METHOD , "POST" )
79
+ .build ();
80
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
51
81
assertThat (predicate .test (request )).isFalse ();
52
82
}
53
83
84
+
54
85
@ Test
55
86
public void methods () {
56
87
RequestPredicate predicate = RequestPredicates .methods (HttpMethod .GET , HttpMethod .HEAD );
57
- MockServerRequest request = MockServerRequest .builder ().method (HttpMethod .GET ).build ();
88
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .get ("https://example.com" ).build ();
89
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
58
90
assertThat (predicate .test (request )).isTrue ();
59
91
60
- request = MockServerRequest .builder ().method (HttpMethod .HEAD ).build ();
92
+ mockRequest = MockServerHttpRequest .head ("https://example.com" ).build ();
93
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
61
94
assertThat (predicate .test (request )).isTrue ();
62
95
63
- request = MockServerRequest .builder ().method (HttpMethod .POST ).build ();
96
+ mockRequest = MockServerHttpRequest .post ("https://example.com" ).build ();
97
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
64
98
assertThat (predicate .test (request )).isFalse ();
65
99
}
66
100
67
101
@ Test
68
102
public void allMethods () {
69
- URI uri = URI .create ("http://localhost/path" );
70
-
71
103
RequestPredicate predicate = RequestPredicates .GET ("/p*" );
72
- MockServerRequest request = MockServerRequest .builder ().method (HttpMethod .GET ).uri (uri ).build ();
104
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .get ("https://example.com/path" ).build ();
105
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
73
106
assertThat (predicate .test (request )).isTrue ();
74
107
75
108
predicate = RequestPredicates .HEAD ("/p*" );
76
- request = MockServerRequest .builder ().method (HttpMethod .HEAD ).uri (uri ).build ();
109
+ mockRequest = MockServerHttpRequest .head ("https://example.com/path" ).build ();
110
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
77
111
assertThat (predicate .test (request )).isTrue ();
78
112
79
113
predicate = RequestPredicates .POST ("/p*" );
80
- request = MockServerRequest .builder ().method (HttpMethod .POST ).uri (uri ).build ();
114
+ mockRequest = MockServerHttpRequest .post ("https://example.com/path" ).build ();
115
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
81
116
assertThat (predicate .test (request )).isTrue ();
82
117
83
118
predicate = RequestPredicates .PUT ("/p*" );
84
- request = MockServerRequest .builder ().method (HttpMethod .PUT ).uri (uri ).build ();
119
+ mockRequest = MockServerHttpRequest .put ("https://example.com/path" ).build ();
120
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
85
121
assertThat (predicate .test (request )).isTrue ();
86
122
87
123
predicate = RequestPredicates .PATCH ("/p*" );
88
- request = MockServerRequest .builder ().method (HttpMethod .PATCH ).uri (uri ).build ();
124
+ mockRequest = MockServerHttpRequest .patch ("https://example.com/path" ).build ();
125
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
89
126
assertThat (predicate .test (request )).isTrue ();
90
127
91
128
predicate = RequestPredicates .DELETE ("/p*" );
92
- request = MockServerRequest .builder ().method (HttpMethod .DELETE ).uri (uri ).build ();
129
+ mockRequest = MockServerHttpRequest .delete ("https://example.com/path" ).build ();
130
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
93
131
assertThat (predicate .test (request )).isTrue ();
94
132
95
133
predicate = RequestPredicates .OPTIONS ("/p*" );
96
- request = MockServerRequest .builder ().method (HttpMethod .OPTIONS ).uri (uri ).build ();
134
+ mockRequest = MockServerHttpRequest .options ("https://example.com/path" ).build ();
135
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
97
136
assertThat (predicate .test (request )).isTrue ();
98
137
}
99
138
100
139
@ Test
101
140
public void path () {
102
- URI uri = URI .create ("http ://localhost/path" );
141
+ URI uri = URI .create ("https ://localhost/path" );
103
142
RequestPredicate predicate = RequestPredicates .path ("/p*" );
104
- MockServerRequest request = MockServerRequest .builder ().uri (uri ).build ();
143
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .get (uri .toString ()).build ();
144
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), emptyList ());
105
145
assertThat (predicate .test (request )).isTrue ();
106
146
107
- request = MockServerRequest .builder ().build ();
147
+ mockRequest = MockServerHttpRequest .head ("https://example.com" ).build ();
148
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
108
149
assertThat (predicate .test (request )).isFalse ();
109
150
}
110
151
111
152
@ Test
112
153
public void pathNoLeadingSlash () {
113
- URI uri = URI .create ("http://localhost/path" );
114
154
RequestPredicate predicate = RequestPredicates .path ("p*" );
115
- MockServerRequest request = MockServerRequest .builder ().uri (uri ).build ();
155
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .get ("https://example.com/path" ).build ();
156
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
116
157
assertThat (predicate .test (request )).isTrue ();
117
158
}
118
159
119
160
@ Test
120
161
public void pathEncoded () {
121
- URI uri = URI .create ("http ://localhost/foo%20bar" );
162
+ URI uri = URI .create ("https ://localhost/foo%20bar" );
122
163
RequestPredicate predicate = RequestPredicates .path ("/foo bar" );
123
- MockServerRequest request = MockServerRequest .builder ().uri (uri ).build ();
164
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .method (HttpMethod .GET , uri ).build ();
165
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
124
166
assertThat (predicate .test (request )).isTrue ();
125
-
126
- request = MockServerRequest .builder ().build ();
127
- assertThat (predicate .test (request )).isFalse ();
128
167
}
129
168
130
169
@ Test
@@ -133,9 +172,9 @@ public void pathPredicates() {
133
172
parser .setCaseSensitive (false );
134
173
Function <String , RequestPredicate > pathPredicates = RequestPredicates .pathPredicates (parser );
135
174
136
- URI uri = URI .create ("http://localhost/path" );
137
175
RequestPredicate predicate = pathPredicates .apply ("/P*" );
138
- MockServerRequest request = MockServerRequest .builder ().uri (uri ).build ();
176
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .get ("https://example.com/path" ).build ();
177
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
139
178
assertThat (predicate .test (request )).isTrue ();
140
179
}
141
180
@@ -146,58 +185,81 @@ public void headers() {
146
185
RequestPredicate predicate =
147
186
RequestPredicates .headers (
148
187
headers -> headers .header (name ).equals (Collections .singletonList (value )));
149
- MockServerRequest request = MockServerRequest .builder ().header (name , value ).build ();
188
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .get ("https://example.com" )
189
+ .header (name , value )
190
+ .build ();
191
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
150
192
assertThat (predicate .test (request )).isTrue ();
151
193
152
- request = MockServerRequest .builder ().build ();
194
+ mockRequest = MockServerHttpRequest .get ("https://example.com" )
195
+ .header (name , "bar" )
196
+ .build ();
197
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
153
198
assertThat (predicate .test (request )).isFalse ();
154
199
}
155
200
156
201
@ Test
157
202
public void contentType () {
158
203
MediaType json = MediaType .APPLICATION_JSON ;
159
204
RequestPredicate predicate = RequestPredicates .contentType (json );
160
- MockServerRequest request = MockServerRequest .builder ().header ("Content-Type" , json .toString ()).build ();
205
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .get ("https://example.com" )
206
+ .header (HttpHeaders .CONTENT_TYPE , json .toString ())
207
+ .build ();
208
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
161
209
assertThat (predicate .test (request )).isTrue ();
162
210
163
- request = MockServerRequest .builder ().build ();
211
+ mockRequest = MockServerHttpRequest .get ("https://example.com" )
212
+ .header (HttpHeaders .CONTENT_TYPE , "foo/bar" )
213
+ .build ();
214
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
164
215
assertThat (predicate .test (request )).isFalse ();
165
216
}
166
217
167
218
@ Test
168
219
public void accept () {
169
220
MediaType json = MediaType .APPLICATION_JSON ;
170
221
RequestPredicate predicate = RequestPredicates .accept (json );
171
- MockServerRequest request = MockServerRequest .builder ().header ("Accept" , json .toString ()).build ();
222
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .get ("https://example.com" )
223
+ .header (HttpHeaders .ACCEPT , json .toString ())
224
+ .build ();
225
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
172
226
assertThat (predicate .test (request )).isTrue ();
173
227
174
- request = MockServerRequest .builder ().header ("Accept" , MediaType .TEXT_XML_VALUE ).build ();
228
+ mockRequest = MockServerHttpRequest .get ("https://example.com" )
229
+ .header (HttpHeaders .ACCEPT , "foo/bar" )
230
+ .build ();
231
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
175
232
assertThat (predicate .test (request )).isFalse ();
176
233
}
177
234
178
235
@ Test
179
236
public void pathExtension () {
180
237
RequestPredicate predicate = RequestPredicates .pathExtension ("txt" );
181
238
182
- URI uri = URI .create ("http://localhost/file.txt" );
183
- MockServerRequest request = MockServerRequest .builder ().uri (uri ).build ();
239
+ URI uri = URI .create ("https://localhost/file.txt" );
240
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .method (HttpMethod .GET , uri ).build ();
241
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
184
242
assertThat (predicate .test (request )).isTrue ();
185
243
186
- uri = URI .create ("http://localhost/FILE.TXT" );
187
- request = MockServerRequest .builder ().uri (uri ).build ();
244
+ uri = URI .create ("https://localhost/FILE.TXT" );
245
+ mockRequest = MockServerHttpRequest .method (HttpMethod .GET , uri ).build ();
246
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
188
247
assertThat (predicate .test (request )).isTrue ();
189
248
190
249
predicate = RequestPredicates .pathExtension ("bar" );
191
250
assertThat (predicate .test (request )).isFalse ();
192
251
193
- uri = URI .create ("http://localhost/file.foo" );
194
- request = MockServerRequest .builder ().uri (uri ).build ();
252
+ uri = URI .create ("https://localhost/file.foo" );
253
+ mockRequest = MockServerHttpRequest .method (HttpMethod .GET , uri ).build ();
254
+ request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
195
255
assertThat (predicate .test (request )).isFalse ();
196
256
}
197
257
198
258
@ Test
199
259
public void queryParam () {
200
- MockServerRequest request = MockServerRequest .builder ().queryParam ("foo" , "bar" ).build ();
260
+ MockServerHttpRequest mockRequest = MockServerHttpRequest .get ("https://example.com" )
261
+ .queryParam ("foo" , "bar" ).build ();
262
+ ServerRequest request = new DefaultServerRequest (MockServerWebExchange .from (mockRequest ), Collections .emptyList ());
201
263
RequestPredicate predicate = RequestPredicates .queryParam ("foo" , s -> s .equals ("bar" ));
202
264
assertThat (predicate .test (request )).isTrue ();
203
265
0 commit comments