static SwaggerModelInfo parseSpecification(final ConnectorSettings connectorSettings, final APIValidationContext validationContext) { final String specification = requiredSpecification(connectorSettings); return SwaggerHelper.parse(specification, validationContext); }
@Test public void testThatWarningPetstoreSwaggerContainsWarnings() throws IOException { final String specification = resource("/swagger/invalid/warning-petstore.swagger.json"); final SwaggerModelInfo info = SwaggerHelper.parse(specification, APIValidationContext.CONSUMED_API); assertThat(info.getErrors()).isEmpty(); assertThat(info.getWarnings()).hasSize(3); }
@Test public void testThatInvalidFieldPetstoreSwaggerIsInvalid() throws IOException { final String specification = resource("/swagger/invalid/invalid-field.petstore.swagger.json"); final SwaggerModelInfo info = SwaggerHelper.parse(specification, APIValidationContext.CONSUMED_API); assertThat(info.getErrors()).hasSize(1); assertThat(info.getWarnings()).isEmpty(); assertThat(info.getErrors().get(0).message()) .startsWith("object instance has properties which are not allowed by the schema"); assertThat(info.getErrors().get(0).property()).contains("/paths/~1pet/put"); assertThat(info.getErrors().get(0).error()).contains("validation"); }
@Test public void testThatAllSwaggerFilesAreValid() throws IOException { final String[] specifications = {"/swagger/concur.swagger.json", "/swagger/petstore.swagger.json", "/swagger/todo.swagger.yaml"}; for (final String specificationFile : specifications) { final String specification = resource(specificationFile); final SwaggerModelInfo info = SwaggerHelper.parse(specification, APIValidationContext.CONSUMED_API); assertThat(info.getErrors()) .withFailMessage("Specification " + specificationFile + " has errors: " + info.getErrors()).isEmpty(); } }
@Test public void testThatInvalidTypePetstoreSwaggerIsInvalid() throws IOException { final String specification = resource("/swagger/invalid/invalid-type.petstore.swagger.json"); final SwaggerModelInfo info = SwaggerHelper.parse(specification, APIValidationContext.CONSUMED_API); assertThat(info.getErrors()).hasSize(1); assertThat(info.getWarnings()).isEmpty(); assertThat(info.getErrors().get(0).message()).startsWith("instance failed to match exactly one schema"); assertThat(info.getErrors().get(0).property()).contains("/paths/~1pet~1{petId}/post/parameters/2"); assertThat(info.getErrors().get(0).error()).contains("validation"); }
@Test public void testThatInvalidSchemePetstoreSwaggerIsInvalid() throws IOException { final String specification = resource("/swagger/invalid/invalid-scheme.petstore.swagger.json"); final SwaggerModelInfo info = SwaggerHelper.parse(specification, APIValidationContext.CONSUMED_API); assertThat(info.getErrors()).hasSize(1); assertThat(info.getWarnings()).hasSize(1); assertThat(info.getErrors().get(0).message()).startsWith("instance value (\"httpz\") not found in enum"); assertThat(info.getErrors().get(0).property()).contains("/schemes/0"); assertThat(info.getErrors().get(0).error()).contains("validation"); assertThat(info.getWarnings().get(0).message()).startsWith("Unable to determine the scheme"); assertThat(info.getWarnings().get(0).property()).contains("/schemes"); assertThat(info.getWarnings().get(0).error()).contains("missing-schemes"); }
@Override public APISummary info(String specification, APIValidationContext validation) { final SwaggerModelInfo swaggerInfo = SwaggerHelper.parse(specification, validation); try {
@Override @SuppressWarnings({"PMD.ExcessiveMethodLength"}) public APIIntegration generateIntegration(String specification, ProvidedApiTemplate template) { SwaggerModelInfo info = SwaggerHelper.parse(specification, APIValidationContext.NONE); Swagger swagger = info.getModel();