Skip to content

Commit cd8b7fa

Browse files
authored
Merge pull request #31 from API-Flows/mark-validation-error-type
Parameter validation: error source
2 parents f1a72b5 + 97dc0f5 commit cd8b7fa

File tree

2 files changed

+27
-18
lines changed

2 files changed

+27
-18
lines changed

src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ List<String> validateStep(Step step, String workflowId ) {
171171

172172
if(step.getParameters() != null) {
173173
for(Parameter parameter : step.getParameters()) {
174-
errors.addAll(validateParameter(parameter, workflowId));
174+
errors.addAll(validateParameter(parameter, workflowId, null));
175175

176176
if(step.getWorkflowId() != null) {
177177
// when the step in context specifies a workflowId the parameter IN must be defined
@@ -208,9 +208,18 @@ List<String> validateStep(Step step, String workflowId ) {
208208
return errors;
209209
}
210210

211-
List<String> validateParameter(Parameter parameter, String workflowId ) {
211+
List<String> validateParameter(Parameter parameter, String workflowId, String componentName ) {
212212
List<String> SUPPORTED_VALUES = Arrays.asList("path", "query", "header", "cookie", "body", "workflow");
213213

214+
String source;
215+
216+
if(workflowId != null) {
217+
source = "Workflow[" + workflowId + "]";
218+
} else {
219+
source = "Component[" + componentName + "]";
220+
221+
}
222+
214223
List<String> errors = new ArrayList<>();
215224

216225
if(parameter.get$ref() != null) {
@@ -221,27 +230,27 @@ List<String> validateParameter(Parameter parameter, String workflowId ) {
221230
String name = parameter.getName();
222231

223232
if(name == null) {
224-
errors.add("'Workflow[" + workflowId + "]' parameter has no name");
233+
errors.add(source + " parameter has no name");
225234
}
226235
if(parameter.getIn() != null) {
227236
if(!SUPPORTED_VALUES.contains(parameter.getIn())) {
228237
if(name != null) {
229-
errors.add("Parameter '" + name + "' type (" + parameter.getIn() + ") is invalid");
238+
errors.add(source + "parameter " + name + " type (" + parameter.getIn() + ") is invalid");
230239
} else {
231-
errors.add("'Workflow[" + workflowId + "]' parameter type (" + parameter.getIn() + ") is invalid");
240+
errors.add(source + " parameter type (" + parameter.getIn() + ") is invalid");
232241
}
233242
}
234243
}
235244
if(parameter.getValue() == null) {
236245
if(name != null) {
237-
errors.add("Parameter '" + name + "' has no value");
246+
errors.add(source + " parameter " + name + " has no value");
238247
} else {
239-
errors.add("'Workflow[" + workflowId + "]' parameter has no value");
248+
errors.add(source + " parameter has no value");
240249
}
241250
}
242251
if(parameter.getTarget() != null) {
243252
if(!isValidJsonPointer(parameter.getTarget())) {
244-
errors.add("Parameter '" + name + "' target is not a valid Json Pointer");
253+
errors.add(source + " parameter " + name + " target is not a valid Json Pointer");
245254
}
246255
}
247256
}
@@ -365,9 +374,9 @@ List<String> validateComponents(Components components) {
365374
}
366375
}
367376

368-
for (Parameter parameter : components.getParameters().values()) {
369-
errors.addAll(validateParameter(parameter, "Components"));
370-
}
377+
components.getParameters().entrySet().stream()
378+
.forEach(entry -> errors.addAll(validateParameter(entry.getValue(), null, entry.getKey())));
379+
371380
}
372381
if (components.getInputs() != null) {
373382
for(String key : components.getInputs().keySet()) {

src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ void validateParameter() {
207207
.in("path");
208208
String worklowId = "q1";
209209

210-
assertEquals(0, validator.validateParameter(parameter, worklowId).size());
210+
assertEquals(0, validator.validateParameter(parameter, worklowId, null).size());
211211
}
212212

213213
@Test
@@ -218,7 +218,7 @@ void validateParameterInvalidIn() {
218218
.in("dummy");
219219
String worklowId = "q1";
220220

221-
assertEquals(1, validator.validateParameter(parameter, worklowId).size());
221+
assertEquals(1, validator.validateParameter(parameter, worklowId, null).size());
222222
}
223223

224224
@Test
@@ -229,7 +229,7 @@ void validateParameterWithoutValue() {
229229
.in("query");
230230
String worklowId = "q1";
231231

232-
assertEquals(1, validator.validateParameter(parameter, worklowId).size());
232+
assertEquals(1, validator.validateParameter(parameter, worklowId, null).size());
233233
}
234234

235235
@Test
@@ -502,12 +502,12 @@ void validateComponentsParameterInvalidIn() {
502502
.name("param")
503503
.value("1")
504504
.in("dummy");
505-
String worklowId = "q1";
505+
String componentName = "user";
506506

507507
Components components = new Components();
508508
components.addParameter("param1", parameter);
509509

510-
assertEquals(1, validator.validateParameter(parameter, worklowId).size());
510+
assertEquals(1, validator.validateParameter(parameter, null, componentName).size());
511511
}
512512

513513
@Test
@@ -516,12 +516,12 @@ void validateComponentsParameter() {
516516
.name("page")
517517
.value("1")
518518
.in("query");
519-
String worklowId = "q1";
519+
String componentName = "user";
520520

521521
Components components = new Components();
522522
components.addParameter("page", parameter);
523523

524-
assertEquals(0, validator.validateParameter(parameter, worklowId).size());
524+
assertEquals(0, validator.validateParameter(parameter, null, componentName).size());
525525
}
526526

527527
@Test

0 commit comments

Comments
 (0)