18
18
19
19
import java .util .Arrays ;
20
20
import java .util .Iterator ;
21
+ import java .util .stream .Collectors ;
21
22
22
23
import org .junit .Test ;
23
24
38
39
*/
39
40
public class PatternsRequestConditionTests {
40
41
41
- @ Test
42
- public void prependSlash () {
43
- PatternsRequestCondition c = new PatternsRequestCondition ("foo" );
44
- assertEquals ("/foo" , c .getPatterns ().iterator ().next ().getPatternString ());
45
- }
42
+ private final PathPatternParser parser = new PathPatternParser ();
46
43
47
44
@ Test
48
45
public void prependNonEmptyPatternsOnly () {
49
- PatternsRequestCondition c = new PatternsRequestCondition ("" );
46
+ PatternsRequestCondition c = createPatternsCondition ("" );
50
47
assertEquals ("Do not prepend empty patterns (SPR-8255)" , "" ,
51
48
c .getPatterns ().iterator ().next ().getPatternString ());
52
49
}
@@ -56,51 +53,51 @@ public void combineEmptySets() {
56
53
PatternsRequestCondition c1 = new PatternsRequestCondition ();
57
54
PatternsRequestCondition c2 = new PatternsRequestCondition ();
58
55
59
- assertEquals (new PatternsRequestCondition ( "" ), c1 .combine (c2 ));
56
+ assertEquals (createPatternsCondition ( ), c1 .combine (c2 ));
60
57
}
61
58
62
59
@ Test
63
60
public void combineOnePatternWithEmptySet () {
64
- PatternsRequestCondition c1 = new PatternsRequestCondition ("/type1" , "/type2" );
61
+ PatternsRequestCondition c1 = createPatternsCondition ("/type1" , "/type2" );
65
62
PatternsRequestCondition c2 = new PatternsRequestCondition ();
66
63
67
- assertEquals (new PatternsRequestCondition ("/type1" , "/type2" ), c1 .combine (c2 ));
64
+ assertEquals (createPatternsCondition ("/type1" , "/type2" ), c1 .combine (c2 ));
68
65
69
66
c1 = new PatternsRequestCondition ();
70
- c2 = new PatternsRequestCondition ("/method1" , "/method2" );
67
+ c2 = createPatternsCondition ("/method1" , "/method2" );
71
68
72
- assertEquals (new PatternsRequestCondition ("/method1" , "/method2" ), c1 .combine (c2 ));
69
+ assertEquals (createPatternsCondition ("/method1" , "/method2" ), c1 .combine (c2 ));
73
70
}
74
71
75
72
@ Test
76
73
public void combineMultiplePatterns () {
77
- PatternsRequestCondition c1 = new PatternsRequestCondition ("/t1" , "/t2" );
78
- PatternsRequestCondition c2 = new PatternsRequestCondition ("/m1" , "/m2" );
74
+ PatternsRequestCondition c1 = createPatternsCondition ("/t1" , "/t2" );
75
+ PatternsRequestCondition c2 = createPatternsCondition ("/m1" , "/m2" );
79
76
80
- assertEquals (new PatternsRequestCondition ("/t1/m1" , "/t1/m2" , "/t2/m1" , "/t2/m2" ), c1 .combine (c2 ));
77
+ assertEquals (createPatternsCondition ("/t1/m1" , "/t1/m2" , "/t2/m1" , "/t2/m2" ), c1 .combine (c2 ));
81
78
}
82
79
83
80
@ Test
84
81
public void matchDirectPath () throws Exception {
85
- PatternsRequestCondition condition = new PatternsRequestCondition ("/foo" );
82
+ PatternsRequestCondition condition = createPatternsCondition ("/foo" );
86
83
PatternsRequestCondition match = condition .getMatchingCondition (get ("/foo" ).toExchange ());
87
84
88
85
assertNotNull (match );
89
86
}
90
87
91
88
@ Test
92
89
public void matchPattern () throws Exception {
93
- PatternsRequestCondition condition = new PatternsRequestCondition ("/foo/*" );
90
+ PatternsRequestCondition condition = createPatternsCondition ("/foo/*" );
94
91
PatternsRequestCondition match = condition .getMatchingCondition (get ("/foo/bar" ).toExchange ());
95
92
96
93
assertNotNull (match );
97
94
}
98
95
99
96
@ Test
100
97
public void matchSortPatterns () throws Exception {
101
- PatternsRequestCondition condition = new PatternsRequestCondition ("/*/*" , "/foo/bar" , "/foo/*" );
98
+ PatternsRequestCondition condition = createPatternsCondition ("/*/*" , "/foo/bar" , "/foo/*" );
102
99
PatternsRequestCondition match = condition .getMatchingCondition (get ("/foo/bar" ).toExchange ());
103
- PatternsRequestCondition expected = new PatternsRequestCondition ("/foo/bar" , "/foo/*" , "/*/*" );
100
+ PatternsRequestCondition expected = createPatternsCondition ("/foo/bar" , "/foo/*" , "/*/*" );
104
101
105
102
assertEquals (expected , match );
106
103
}
@@ -109,14 +106,14 @@ public void matchSortPatterns() throws Exception {
109
106
public void matchTrailingSlash () throws Exception {
110
107
MockServerWebExchange exchange = get ("/foo/" ).toExchange ();
111
108
112
- PatternsRequestCondition condition = new PatternsRequestCondition ("/foo" );
109
+ PatternsRequestCondition condition = createPatternsCondition ("/foo" );
113
110
PatternsRequestCondition match = condition .getMatchingCondition (exchange );
114
111
115
112
assertNotNull (match );
116
113
assertEquals ("Should match by default" , "/foo" ,
117
114
match .getPatterns ().iterator ().next ().getPatternString ());
118
115
119
- condition = new PatternsRequestCondition ( new String [] { "/foo" }, null );
116
+ condition = createPatternsCondition ( "/foo" );
120
117
match = condition .getMatchingCondition (exchange );
121
118
122
119
assertNotNull (match );
@@ -125,31 +122,31 @@ public void matchTrailingSlash() throws Exception {
125
122
126
123
PathPatternParser parser = new PathPatternParser ();
127
124
parser .setMatchOptionalTrailingSlash (false );
128
- condition = new PatternsRequestCondition (new String [] { "/foo" }, parser );
125
+ condition = new PatternsRequestCondition (parser . parse ( "/foo" ) );
129
126
match = condition .getMatchingCondition (get ("/foo/" ).toExchange ());
130
127
131
128
assertNull (match );
132
129
}
133
130
134
131
@ Test
135
132
public void matchPatternContainsExtension () throws Exception {
136
- PatternsRequestCondition condition = new PatternsRequestCondition ("/foo.jpg" );
133
+ PatternsRequestCondition condition = createPatternsCondition ("/foo.jpg" );
137
134
PatternsRequestCondition match = condition .getMatchingCondition (get ("/foo.html" ).toExchange ());
138
135
139
136
assertNull (match );
140
137
}
141
138
142
139
@ Test
143
140
public void compareEqualPatterns () throws Exception {
144
- PatternsRequestCondition c1 = new PatternsRequestCondition ("/foo*" );
145
- PatternsRequestCondition c2 = new PatternsRequestCondition ("/foo*" );
141
+ PatternsRequestCondition c1 = createPatternsCondition ("/foo*" );
142
+ PatternsRequestCondition c2 = createPatternsCondition ("/foo*" );
146
143
147
144
assertEquals (0 , c1 .compareTo (c2 , get ("/foo" ).toExchange ()));
148
145
}
149
146
150
147
@ Test
151
148
public void equallyMatchingPatternsAreBothPresent () throws Exception {
152
- PatternsRequestCondition c = new PatternsRequestCondition ("/a" , "/b" );
149
+ PatternsRequestCondition c = createPatternsCondition ("/a" , "/b" );
153
150
assertEquals (2 , c .getPatterns ().size ());
154
151
Iterator <PathPattern > itr = c .getPatterns ().iterator ();
155
152
assertEquals ("/a" , itr .next ().getPatternString ());
@@ -158,8 +155,8 @@ public void equallyMatchingPatternsAreBothPresent() throws Exception {
158
155
159
156
@ Test
160
157
public void comparePatternSpecificity () throws Exception {
161
- PatternsRequestCondition c1 = new PatternsRequestCondition ("/fo*" );
162
- PatternsRequestCondition c2 = new PatternsRequestCondition ("/foo" );
158
+ PatternsRequestCondition c1 = createPatternsCondition ("/fo*" );
159
+ PatternsRequestCondition c2 = createPatternsCondition ("/foo" );
163
160
164
161
assertEquals (1 , c1 .compareTo (c2 , get ("/foo" ).toExchange ()));
165
162
}
@@ -168,8 +165,8 @@ public void comparePatternSpecificity() throws Exception {
168
165
public void compareNumberOfMatchingPatterns () throws Exception {
169
166
ServerWebExchange exchange = get ("/foo.html" ).toExchange ();
170
167
171
- PatternsRequestCondition c1 = new PatternsRequestCondition ("/foo.*" , "/foo.jpeg" );
172
- PatternsRequestCondition c2 = new PatternsRequestCondition ("/foo.*" , "/foo.html" );
168
+ PatternsRequestCondition c1 = createPatternsCondition ("/foo.*" , "/foo.jpeg" );
169
+ PatternsRequestCondition c2 = createPatternsCondition ("/foo.*" , "/foo.html" );
173
170
174
171
PatternsRequestCondition match1 = c1 .getMatchingCondition (exchange );
175
172
PatternsRequestCondition match2 = c2 .getMatchingCondition (exchange );
@@ -178,4 +175,11 @@ public void compareNumberOfMatchingPatterns() throws Exception {
178
175
assertEquals (1 , match1 .compareTo (match2 , exchange ));
179
176
}
180
177
178
+ private PatternsRequestCondition createPatternsCondition (String ... patterns ) {
179
+ return new PatternsRequestCondition (Arrays
180
+ .stream (patterns )
181
+ .map (rawPattern -> this .parser .parse (rawPattern ))
182
+ .collect (Collectors .toList ()));
183
+ }
184
+
181
185
}
0 commit comments