Skip to content

Commit 7243c5a

Browse files
authored
Merge pull request #15 from mservicetech/develop
fixes #13
2 parents ed16259 + 285b2dd commit 7243c5a

File tree

4 files changed

+34
-11
lines changed

4 files changed

+34
-11
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>1.0.2</version>
22+
<version>1.0.3</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 & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,8 @@ private Status validatePathParameters(final RequestEntity requestEntity, final N
182182
return result.getStatus();
183183
}
184184
if (result.skippedParameters!=null && !result.skippedParameters.isEmpty()) {
185-
return new Status(VALIDATOR_REQUEST_PARAMETER_MISSING, openApiOperation.getMethod(), openApiOperation.getPathString().original());
185+
return result.skippedParameters.stream().map(p-> new Status (VALIDATOR_REQUEST_PARAMETER_MISSING, p.getName(), openApiOperation.getPathString().original()))
186+
.filter(s->s != null).findFirst().get();
186187
}
187188
return null;
188189
}
@@ -231,7 +232,8 @@ private Status validateQueryParameters(final RequestEntity requestEntity, final
231232
return result.getStatus();
232233
}
233234
if (result.skippedParameters!=null && !result.skippedParameters.isEmpty()) {
234-
return new Status(VALIDATOR_REQUEST_PARAMETER_MISSING, openApiOperation.getMethod(), openApiOperation.getPathString().original());
235+
return result.skippedParameters.stream().map(p-> new Status (VALIDATOR_REQUEST_PARAMETER_MISSING, p.getName(), openApiOperation.getPathString().original()))
236+
.filter(s->s != null).findFirst().get();
235237
}
236238
return null;
237239
}
@@ -260,7 +262,8 @@ private Optional<Status> validatePathLevelHeaders(final RequestEntity requestEnt
260262
return Optional.ofNullable(result.getStatus());
261263
}
262264
if (result.skippedParameters!=null && !result.skippedParameters.isEmpty()) {
263-
return Optional.ofNullable(new Status(VALIDATOR_REQUEST_PARAMETER_MISSING, openApiOperation.getMethod(), openApiOperation.getPathString().original()));
265+
return result.skippedParameters.stream().map(p-> new Status (VALIDATOR_REQUEST_PARAMETER_MISSING, p.getName(), openApiOperation.getPathString().original()))
266+
.filter(s->s != null).findFirst();
264267
}
265268
return Optional.ofNullable(null);
266269
}
@@ -274,7 +277,8 @@ private Optional<Status> validateOperationLevelHeaders(final RequestEntity reque
274277
return Optional.ofNullable(result.getStatus());
275278
}
276279
if (result.skippedParameters!=null && !result.skippedParameters.isEmpty()) {
277-
return Optional.ofNullable(new Status(VALIDATOR_REQUEST_PARAMETER_MISSING, openApiOperation.getMethod(), openApiOperation.getPathString().original()));
280+
return result.skippedParameters.stream().map(p-> new Status (VALIDATOR_REQUEST_PARAMETER_MISSING, p.getName(), openApiOperation.getPathString().original()))
281+
.filter(s->s != null).findFirst();
278282
}
279283
return Optional.ofNullable(null);
280284
}
@@ -300,7 +304,8 @@ private Optional<Status> validatePathLevelCookies(final RequestEntity requestEnt
300304
return Optional.ofNullable(result.getStatus());
301305
}
302306
if (result.skippedParameters!=null && !result.skippedParameters.isEmpty()) {
303-
return Optional.ofNullable(new Status(VALIDATOR_REQUEST_PARAMETER_MISSING, openApiOperation.getMethod(), openApiOperation.getPathString().original()));
307+
return result.skippedParameters.stream().map(p-> new Status (VALIDATOR_REQUEST_PARAMETER_MISSING, p.getName(), openApiOperation.getPathString().original()))
308+
.filter(s->s != null).findFirst();
304309
}
305310
return Optional.ofNullable(null);
306311
}
@@ -314,7 +319,8 @@ private Optional<Status> validateOperationLevelCookies(final RequestEntity reque
314319
return Optional.ofNullable(result.getStatus());
315320
}
316321
if (result.skippedParameters!=null && !result.skippedParameters.isEmpty()) {
317-
return Optional.ofNullable(new Status(VALIDATOR_REQUEST_PARAMETER_MISSING, openApiOperation.getMethod(), openApiOperation.getPathString().original()));
322+
return result.skippedParameters.stream().map(p-> new Status (VALIDATOR_REQUEST_PARAMETER_MISSING, p.getName(), openApiOperation.getPathString().original()))
323+
.filter(s->s != null).findFirst();
318324
}
319325
return Optional.ofNullable(null);
320326
}
@@ -367,7 +373,7 @@ public Status getStatus() {
367373
return statuses.isEmpty()?null:statuses.get(0);
368374
}
369375

370-
public List<Status> getAllStatueses(){
376+
public List<Status> getAllStatues(){
371377
return Collections.unmodifiableList(statuses);
372378
}
373379
}

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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.assertNotNull(status);
142+
Assert.assertEquals( status.getCode(), "ERR11001");
143+
// {"statusCode":400,"code":"ERR11001","message":"VALIDATOR_REQUEST_PARAMETER_MISSING","description":"Parameter limit is required but is missing.","severity":"ERROR"}
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)