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>