@@ -48,8 +48,11 @@ public void ValidateRequiredIsTrueWhenInIsPathInParameter()
48
48
} ;
49
49
50
50
// Act
51
- var errors = parameter . Validate ( ValidationRuleSet . GetDefaultRuleSet ( ) ) ;
52
-
51
+ var validator = new OpenApiValidator ( ValidationRuleSet . GetDefaultRuleSet ( ) ) ;
52
+ validator . Enter ( "{name}" ) ;
53
+ var walker = new OpenApiWalker ( validator ) ;
54
+ walker . Walk ( parameter ) ;
55
+ var errors = validator . Errors ;
53
56
// Assert
54
57
errors . Should ( ) . NotBeEmpty ( ) ;
55
58
errors . Select ( e => e . Message ) . Should ( ) . BeEquivalentTo ( new [ ]
@@ -77,6 +80,7 @@ public void ValidateExampleShouldNotHaveDataTypeMismatchForSimpleSchema()
77
80
78
81
// Act
79
82
var validator = new OpenApiValidator ( ValidationRuleSet . GetDefaultRuleSet ( ) ) ;
83
+ validator . Enter ( "{parameter1}" ) ;
80
84
var walker = new OpenApiWalker ( validator ) ;
81
85
walker . Walk ( parameter ) ;
82
86
@@ -91,7 +95,7 @@ public void ValidateExampleShouldNotHaveDataTypeMismatchForSimpleSchema()
91
95
} ) ;
92
96
errors . Select ( e => e . Pointer ) . Should ( ) . BeEquivalentTo ( new [ ]
93
97
{
94
- "#/example" ,
98
+ "#/{parameter1}/ example" ,
95
99
} ) ;
96
100
}
97
101
@@ -150,6 +154,7 @@ public void ValidateExamplesShouldNotHaveDataTypeMismatchForSimpleSchema()
150
154
151
155
// Act
152
156
var validator = new OpenApiValidator ( ValidationRuleSet . GetDefaultRuleSet ( ) ) ;
157
+ validator . Enter ( "{parameter1}" ) ;
153
158
var walker = new OpenApiWalker ( validator ) ;
154
159
walker . Walk ( parameter ) ;
155
160
@@ -168,10 +173,83 @@ public void ValidateExamplesShouldNotHaveDataTypeMismatchForSimpleSchema()
168
173
{
169
174
// #enum/0 is not an error since the spec allows
170
175
// representing an object using a string.
171
- "#/examples/example1/value/y" ,
172
- "#/examples/example1/value/z" ,
173
- "#/examples/example2/value"
176
+ "#/{parameter1}/ examples/example1/value/y" ,
177
+ "#/{parameter1}/ examples/example1/value/z" ,
178
+ "#/{parameter1}/ examples/example2/value"
174
179
} ) ;
175
180
}
181
+
182
+ [ Fact ]
183
+ public void PathParameterNotInThePathShouldReturnAnError ( )
184
+ {
185
+ // Arrange
186
+ IEnumerable < OpenApiError > errors ;
187
+
188
+ var parameter = new OpenApiParameter ( )
189
+ {
190
+ Name = "parameter1" ,
191
+ In = ParameterLocation . Path ,
192
+ Required = true ,
193
+ Schema = new OpenApiSchema ( )
194
+ {
195
+ Type = "string" ,
196
+ }
197
+ } ;
198
+
199
+ // Act
200
+ var validator = new OpenApiValidator ( ValidationRuleSet . GetDefaultRuleSet ( ) ) ;
201
+
202
+ var walker = new OpenApiWalker ( validator ) ;
203
+ walker . Walk ( parameter ) ;
204
+
205
+ errors = validator . Errors ;
206
+ bool result = errors . Any ( ) ;
207
+
208
+ // Assert
209
+ result . Should ( ) . BeTrue ( ) ;
210
+ errors . OfType < OpenApiValidatorError > ( ) . Select ( e => e . RuleName ) . Should ( ) . BeEquivalentTo ( new [ ]
211
+ {
212
+ "PathParameterShouldBeInThePath"
213
+ } ) ;
214
+ errors . Select ( e => e . Pointer ) . Should ( ) . BeEquivalentTo ( new [ ]
215
+ {
216
+ "#/in"
217
+ } ) ;
218
+ }
219
+
220
+ [ Fact ]
221
+ public void PathParameterInThePastShouldBeOk ( )
222
+ {
223
+ // Arrange
224
+ IEnumerable < OpenApiError > errors ;
225
+
226
+ var parameter = new OpenApiParameter ( )
227
+ {
228
+ Name = "parameter1" ,
229
+ In = ParameterLocation . Path ,
230
+ Required = true ,
231
+ Schema = new OpenApiSchema ( )
232
+ {
233
+ Type = "string" ,
234
+ }
235
+ } ;
236
+
237
+ // Act
238
+ var validator = new OpenApiValidator ( ValidationRuleSet . GetDefaultRuleSet ( ) ) ;
239
+ validator . Enter ( "paths" ) ;
240
+ validator . Enter ( "/{parameter1}" ) ;
241
+ validator . Enter ( "get" ) ;
242
+ validator . Enter ( "parameters" ) ;
243
+ validator . Enter ( "1" ) ;
244
+
245
+ var walker = new OpenApiWalker ( validator ) ;
246
+ walker . Walk ( parameter ) ;
247
+
248
+ errors = validator . Errors ;
249
+ bool result = errors . Any ( ) ;
250
+
251
+ // Assert
252
+ result . Should ( ) . BeFalse ( ) ;
253
+ }
176
254
}
177
255
}
0 commit comments