Skip to content

Commit 6a3b54a

Browse files
committed
fixes #13
1 parent c699121 commit 6a3b54a

File tree

4 files changed

+35
-14
lines changed

4 files changed

+35
-14
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<modelVersion>4.0.0</modelVersion>
2020
<groupId>com.mservicetech</groupId>
2121
<artifactId>openapi-schema-validation</artifactId>
22-
<version>2.0.1</version>
22+
<version>2.0.2</version>
2323
<packaging>jar</packaging>
2424
<description>openapi schema for openpai 3.*</description>
2525
<url>https://github.com/mservicetech/openapi-schema-validation</url>

src/main/java/com/mservicetech/openapi/validation/OpenApiValidator.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,8 @@ private Status validatePathParameters(final RequestEntity requestEntity, final N
189189
return result.getStatus();
190190
}
191191
if (result.skippedParameters!=null && !result.skippedParameters.isEmpty()) {
192-
return new Status(VALIDATOR_REQUEST_PARAMETER_MISSING, openApiOperation.getMethod(), openApiOperation.getPathString().original());
192+
return result.skippedParameters.stream().map(p-> new Status (VALIDATOR_REQUEST_PARAMETER_MISSING, p.getName(), openApiOperation.getPathString().original()))
193+
.filter(s->s != null).findFirst().get();
193194
}
194195
return null;
195196
}
@@ -238,13 +239,12 @@ private Status validateQueryParameters(final RequestEntity requestEntity, final
238239
return result.getStatus();
239240
}
240241
if (result.skippedParameters!=null && !result.skippedParameters.isEmpty()) {
241-
return new Status(VALIDATOR_REQUEST_PARAMETER_MISSING, openApiOperation.getMethod(), openApiOperation.getPathString().original());
242+
return result.skippedParameters.stream().map(p-> new Status (VALIDATOR_REQUEST_PARAMETER_MISSING, p.getName(), openApiOperation.getPathString().original()))
243+
.filter(s->s != null).findFirst().get();
242244
}
243245
return null;
244246
}
245247

246-
247-
248248
private Status validateHeaderParameters(final RequestEntity requestEntity,
249249
final OpenApiOperation openApiOperation) {
250250

@@ -267,7 +267,8 @@ private Optional<Status> validatePathLevelHeaders(final RequestEntity requestEnt
267267
return Optional.ofNullable(result.getStatus());
268268
}
269269
if (result.skippedParameters!=null && !result.skippedParameters.isEmpty()) {
270-
return Optional.ofNullable(new Status(VALIDATOR_REQUEST_PARAMETER_MISSING, openApiOperation.getMethod(), openApiOperation.getPathString().original()));
270+
return result.skippedParameters.stream().map(p-> new Status (VALIDATOR_REQUEST_PARAMETER_MISSING, p.getName(), openApiOperation.getPathString().original()))
271+
.filter(s->s != null).findFirst();
271272
}
272273
return Optional.ofNullable(null);
273274
}
@@ -281,7 +282,8 @@ private Optional<Status> validateOperationLevelHeaders(final RequestEntity reque
281282
return Optional.ofNullable(result.getStatus());
282283
}
283284
if (result.skippedParameters!=null && !result.skippedParameters.isEmpty()) {
284-
return Optional.ofNullable(new Status(VALIDATOR_REQUEST_PARAMETER_MISSING, openApiOperation.getMethod(), openApiOperation.getPathString().original()));
285+
return result.skippedParameters.stream().map(p-> new Status (VALIDATOR_REQUEST_PARAMETER_MISSING, p.getName(), openApiOperation.getPathString().original()))
286+
.filter(s->s != null).findFirst();
285287
}
286288
return Optional.ofNullable(null);
287289
}
@@ -307,7 +309,8 @@ private Optional<Status> validatePathLevelCookies(final RequestEntity requestEnt
307309
return Optional.ofNullable(result.getStatus());
308310
}
309311
if (result.skippedParameters!=null && !result.skippedParameters.isEmpty()) {
310-
return Optional.ofNullable(new Status(VALIDATOR_REQUEST_PARAMETER_MISSING, openApiOperation.getMethod(), openApiOperation.getPathString().original()));
312+
return result.skippedParameters.stream().map(p-> new Status (VALIDATOR_REQUEST_PARAMETER_MISSING, p.getName(), openApiOperation.getPathString().original()))
313+
.filter(s->s != null).findFirst();
311314
}
312315
return Optional.ofNullable(null);
313316
}
@@ -321,7 +324,8 @@ private Optional<Status> validateOperationLevelCookies(final RequestEntity reque
321324
return Optional.ofNullable(result.getStatus());
322325
}
323326
if (result.skippedParameters!=null && !result.skippedParameters.isEmpty()) {
324-
return Optional.ofNullable(new Status(VALIDATOR_REQUEST_PARAMETER_MISSING, openApiOperation.getMethod(), openApiOperation.getPathString().original()));
327+
return result.skippedParameters.stream().map(p-> new Status (VALIDATOR_REQUEST_PARAMETER_MISSING, p.getName(), openApiOperation.getPathString().original()))
328+
.filter(s->s != null).findFirst();
325329
}
326330
return Optional.ofNullable(null);
327331
}
@@ -374,7 +378,7 @@ public Status getStatus() {
374378
return statuses.isEmpty()?null:statuses.get(0);
375379
}
376380

377-
public List<Status> getAllStatueses(){
381+
public List<Status> getAllStatues(){
378382
return Collections.unmodifiableList(statuses);
379383
}
380384
}

src/test/java/com/mservicetech/openapi/validation/OpenApiValidatorTest.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public void testRequestPath3() {
115115
Status status = openApiValidator.validateRequestPath("/pets/{petId}", "get", requestEntity);
116116
Assert.assertNotNull(status);
117117
Assert.assertEquals( status.getCode(), "ERR11001");
118-
//{"statusCode":400,"code":"ERR11001","message":"VALIDATOR_REQUEST_PARAMETER_MISSING","description":"Parameter get is required but is missing.","severity":"ERROR"}
118+
//{"statusCode":400,"code":"ERR11001","message":"VALIDATOR_REQUEST_PARAMETER_MISSING","description":"Parameter petId is required but is missing.","severity":"ERROR"}
119119
}
120120

121121
@Test
@@ -132,13 +132,28 @@ public void testRequestPath4() {
132132
}
133133

134134
@Test
135-
public void testRequestQueryMissNotRequired() {
135+
public void testRequestQueryMissRequired() {
136136

137137
RequestEntity requestEntity = new RequestEntity();
138138
Map<String, Object> queryMap = new HashMap<>();
139139
requestEntity.setQueryParameters(queryMap);
140140
Status status = openApiValidator.validateRequestPath("/pets", "get", requestEntity);
141-
Assert.assertNull(status);
141+
Assert.assertEquals( status.getCode(), "ERR11001");
142+
//{"statusCode":400,"code":"ERR11001","message":"VALIDATOR_REQUEST_PARAMETER_MISSING","description":"Parameter limit is required but is missing.","severity":"ERROR"}
143+
Assert.assertNotNull(status);
144+
}
145+
146+
@Test
147+
public void testRequestQueryRequiredWithEmpty() {
148+
149+
RequestEntity requestEntity = new RequestEntity();
150+
Map<String, Object> queryMap = new HashMap<>();
151+
requestEntity.setQueryParameters(queryMap);
152+
queryMap.put("limit", null);
153+
Status status = openApiValidator.validateRequestPath("/pets", "get", requestEntity);
154+
Assert.assertEquals( status.getCode(), "ERR11001");
155+
//{"statusCode":400,"code":"ERR11001","message":"VALIDATOR_REQUEST_PARAMETER_MISSING","description":"Parameter limit is required but is missing.","severity":"ERROR"}
156+
Assert.assertNotNull(status);
142157
}
143158

144159
@Test
@@ -171,6 +186,7 @@ public void testRequestQueryBooleanType() {
171186
RequestEntity requestEntity = new RequestEntity();
172187
Map<String, Object> queryMap = new HashMap<>();
173188
queryMap.put("includeCode", "true");
189+
queryMap.put("limit", 12);
174190
requestEntity.setQueryParameters(queryMap);
175191
Status status = openApiValidator.validateRequestPath("/pets", "get", requestEntity);
176192
Assert.assertNull(status);
@@ -182,6 +198,7 @@ public void testRequestQueryBooleanTypeWithError() {
182198
RequestEntity requestEntity = new RequestEntity();
183199
Map<String, Object> queryMap = new HashMap<>();
184200
queryMap.put("includeCode", "yes");
201+
queryMap.put("limit", 12);
185202
requestEntity.setQueryParameters(queryMap);
186203
Status status = openApiValidator.validateRequestPath("/pets", "get", requestEntity);
187204
Assert.assertNotNull(status);

src/test/resources/openapi.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ paths:
1717
- name: limit
1818
in: query
1919
description: How many items to return at one time (max 100)
20-
required: false
20+
required: true
2121
schema:
2222
type: integer
2323
format: int32

0 commit comments

Comments
 (0)