You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2020/07/16 17:21:02 UTC
[camel-k-runtime] branch master updated: Include a test collecting
all *.camelk.yaml files in the repository and validating it against the
yaml schema #387
This is an automated email from the ASF dual-hosted git repository.
lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git
The following commit(s) were added to refs/heads/master by this push:
new 2dd373d Include a test collecting all *.camelk.yaml files in the repository and validating it against the yaml schema #387
2dd373d is described below
commit 2dd373d177043d95b143fc0bdc69874261f69177
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Thu Jul 16 16:46:36 2020 +0200
Include a test collecting all *.camelk.yaml files in the repository and validating it against the yaml schema #387
---
camel-k-loader-yaml/camel-k-loader-yaml/pom.xml | 6 +++
.../k/loader/yaml/RoutesValidationTest.groovy | 53 ++++++++++++++++++++++
.../resources/routes/RoutesTest_aggregator.yaml | 2 +-
pom.xml | 1 +
4 files changed, 61 insertions(+), 1 deletion(-)
diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml b/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml
index 63f07ab..d839228 100644
--- a/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml
+++ b/camel-k-loader-yaml/camel-k-loader-yaml/pom.xml
@@ -100,6 +100,12 @@
<artifactId>camel-bean</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.github.java-json-tools</groupId>
+ <artifactId>json-schema-validator</artifactId>
+ <version>${json-schema-validator}</version>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.spockframework</groupId>
diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/RoutesValidationTest.groovy b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/RoutesValidationTest.groovy
new file mode 100644
index 0000000..2d39b09
--- /dev/null
+++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/groovy/org/apache/camel/k/loader/yaml/RoutesValidationTest.groovy
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.k.loader.yaml
+
+import com.fasterxml.jackson.databind.ObjectMapper
+import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
+import com.github.fge.jackson.JsonLoader
+import com.github.fge.jsonschema.main.JsonSchemaFactory
+import spock.lang.Specification
+import spock.lang.Unroll
+
+import java.nio.file.Files
+import java.nio.file.Path
+import java.nio.file.Paths
+
+class RoutesValidationTest extends Specification {
+ static def MAPPER = new ObjectMapper(new YAMLFactory())
+ static def SCHEMA_RES = JsonLoader.fromResource('/camel-yaml-dsl.json')
+ static def SCHEMA = JsonSchemaFactory.byDefault().getJsonSchema(SCHEMA_RES)
+
+ @Unroll
+ def 'validate'(Path source) {
+ given:
+ def target = MAPPER.readTree(source.toFile())
+ when:
+ def report = SCHEMA.validate(target)
+ then:
+ report.isSuccess()
+ where:
+ source << routes()
+ }
+
+ def routes() {
+ def routes = getClass().getResource("/routes").toURI()
+ def paths = Paths.get(routes)
+
+ return Files.list(paths)
+ }
+}
diff --git a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/resources/routes/RoutesTest_aggregator.yaml b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/resources/routes/RoutesTest_aggregator.yaml
index 1634826..9b6e9d9 100644
--- a/camel-k-loader-yaml/camel-k-loader-yaml/src/test/resources/routes/RoutesTest_aggregator.yaml
+++ b/camel-k-loader-yaml/camel-k-loader-yaml/src/test/resources/routes/RoutesTest_aggregator.yaml
@@ -19,7 +19,7 @@
steps:
- aggregate:
strategy-ref: "aggregatorStrategy"
- completion-size: 2
+ completion-size: "2"
correlation-expression:
simple: "${header.StockSymbol}"
- to: "mock:route"
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 0f38955..732058c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,6 +68,7 @@
<rest-assured.version>4.3.1</rest-assured.version>
<hamcrest.version>2.2</hamcrest.version>
<jaeger.version>1.2.0</jaeger.version>
+ <json-schema-validator>2.2.14</json-schema-validator>
<gmavenplus-plugin.version>1.9.0</gmavenplus-plugin.version>
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>