@@ -48,8 +48,11 @@ public void ValidateRequiredIsTrueWhenInIsPathInParameter()
4848 } ;
4949
5050 // 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 ;
5356 // Assert
5457 errors . Should ( ) . NotBeEmpty ( ) ;
5558 errors . Select ( e => e . Message ) . Should ( ) . BeEquivalentTo ( new [ ]
@@ -77,6 +80,7 @@ public void ValidateExampleShouldNotHaveDataTypeMismatchForSimpleSchema()
7780
7881 // Act
7982 var validator = new OpenApiValidator ( ValidationRuleSet . GetDefaultRuleSet ( ) ) ;
83+ validator . Enter ( "{parameter1}" ) ;
8084 var walker = new OpenApiWalker ( validator ) ;
8185 walker . Walk ( parameter ) ;
8286
@@ -91,7 +95,7 @@ public void ValidateExampleShouldNotHaveDataTypeMismatchForSimpleSchema()
9195 } ) ;
9296 errors . Select ( e => e . Pointer ) . Should ( ) . BeEquivalentTo ( new [ ]
9397 {
94- "#/example" ,
98+ "#/{parameter1}/ example" ,
9599 } ) ;
96100 }
97101
@@ -150,6 +154,7 @@ public void ValidateExamplesShouldNotHaveDataTypeMismatchForSimpleSchema()
150154
151155 // Act
152156 var validator = new OpenApiValidator ( ValidationRuleSet . GetDefaultRuleSet ( ) ) ;
157+ validator . Enter ( "{parameter1}" ) ;
153158 var walker = new OpenApiWalker ( validator ) ;
154159 walker . Walk ( parameter ) ;
155160
@@ -168,10 +173,83 @@ public void ValidateExamplesShouldNotHaveDataTypeMismatchForSimpleSchema()
168173 {
169174 // #enum/0 is not an error since the spec allows
170175 // 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"
174179 } ) ;
175180 }
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+ }
176254 }
177255}
0 commit comments