diff --git a/docs/PLUGINS.md b/docs/PLUGINS.md index 5fbc2e46b1..7d7ba3f33b 100644 --- a/docs/PLUGINS.md +++ b/docs/PLUGINS.md @@ -212,10 +212,9 @@ Add the Configuration as Code plugin as a test dependency in your pom.xml: test - io.jenkins - configuration-as-code + io.jenkins.configuration-as-code + test-harness ${configuration-as-code.version} - tests test ``` @@ -337,6 +336,6 @@ Add a test for the YAML file ```java @Test public void validSchemaShouldSucceed() throws Exception { - assertTrue(validateSchema(convertYamlFileToJson(this, "validJenkinsConfigurator.yml"))); + assertThat(validateSchema(convertYamlFileToJson(this, "validSchemaConfig.yml")), empty()); } ``` diff --git a/integrations/pom.xml b/integrations/pom.xml index 4078908256..2f619c3d89 100644 --- a/integrations/pom.xml +++ b/integrations/pom.xml @@ -14,6 +14,7 @@ 2.176.3 true + 2.10.1 @@ -28,18 +29,10 @@ - - io.jenkins - configuration-as-code + io.jenkins.configuration-as-code + test-harness ${project.version} - test-jar - - - org.json - json - - @@ -223,7 +216,7 @@ 2.3.0 test - + org.jenkins-ci.plugins mesos @@ -334,7 +327,7 @@ org.jenkins-ci.plugins jackson2-api - 2.9.10 + ${jackson.version} @@ -484,27 +477,27 @@ com.fasterxml.jackson.core jackson-core - 2.9.10 + ${jackson.version} com.fasterxml.jackson.core jackson-databind - 2.9.10 + ${jackson.version} com.fasterxml.jackson.jaxrs jackson-jaxrs-json-provider - 2.9.7 + ${jackson.version} com.fasterxml.jackson.jaxrs jaxrs-json-provider - 2.9.7 + ${jackson.version} com.fasterxml.jackson.module jackson-module-jaxb-annotations - 2.9.9 + ${jackson.version} com.google.errorprone diff --git a/plugin/pom.xml b/plugin/pom.xml index 17ac7ee071..6dacc0d4af 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -14,7 +14,7 @@ hpi Configuration as Code Plugin - Manage Jenkins master configuration as code + Manage Jenkins master configuration as code https://github.com/jenkinsci/configuration-as-code-plugin @@ -46,29 +46,11 @@ - - org.everit.json - org.everit.json.schema - 1.5.1 - test - - - commons-beanutils - commons-beanutils - - - org.json json 20190722 - - com.fasterxml.jackson.dataformat - jackson-dataformat-yaml - 2.7.7 - test - io.jenkins.configuration-as-code snakeyaml @@ -93,32 +75,10 @@ 1.19.0 test - - com.vladsch.flexmark - flexmark-all - 0.50.42 - test - - - org.apache.maven.plugins - maven-jar-plugin - - - - test-jar - - - - io/jenkins/plugins/casc/misc/** - - - - - maven-javadoc-plugin diff --git a/pom.xml b/pom.xml index 718274efc7..5d55152a0b 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,7 @@ snakeyaml plugin integrations + test-harness diff --git a/test-harness/pom.xml b/test-harness/pom.xml new file mode 100644 index 0000000000..34ef303bfe --- /dev/null +++ b/test-harness/pom.xml @@ -0,0 +1,66 @@ + + 4.0.0 + + parent + io.jenkins.configuration-as-code + ${revision}${changelist} + .. + + + test-harness + Configuration as Code Test harness + Functionality to make testing jcasc integration easier + + + 2.10.1 + true + + + + + junit + junit + + + io.jenkins + configuration-as-code + ${project.version} + + + org.everit.json + org.everit.json.schema + 1.5.1 + + + commons-beanutils + commons-beanutils + + + + + org.jenkins-ci.main + jenkins-test-harness + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.dataformat + jackson-dataformat-yaml + ${jackson.version} + + + com.vladsch.flexmark + flexmark-all + 0.50.42 + + + com.github.stefanbirkner + system-rules + 1.19.0 + + + + diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/misc/ConfiguredWithCode.java b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/ConfiguredWithCode.java similarity index 86% rename from plugin/src/test/java/io/jenkins/plugins/casc/misc/ConfiguredWithCode.java rename to test-harness/src/main/java/io/jenkins/plugins/casc/misc/ConfiguredWithCode.java index bbbfc2c5ec..b341e24178 100644 --- a/plugin/src/test/java/io/jenkins/plugins/casc/misc/ConfiguredWithCode.java +++ b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/ConfiguredWithCode.java @@ -16,7 +16,8 @@ public @interface ConfiguredWithCode { /** - * resource path in classpath + * Resource path in classpath + * @return resources to configure the test case with. */ String[] value(); diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/misc/ConfiguredWithReadme.java b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/ConfiguredWithReadme.java similarity index 86% rename from plugin/src/test/java/io/jenkins/plugins/casc/misc/ConfiguredWithReadme.java rename to test-harness/src/main/java/io/jenkins/plugins/casc/misc/ConfiguredWithReadme.java index db56dc8e06..7faadf2ff0 100644 --- a/plugin/src/test/java/io/jenkins/plugins/casc/misc/ConfiguredWithReadme.java +++ b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/ConfiguredWithReadme.java @@ -16,7 +16,8 @@ public @interface ConfiguredWithReadme { /** - * resource path in the project + * Resource path in classpath + * @return resources to configure the test case with */ String[] value(); diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/misc/Env.java b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/Env.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/misc/Env.java rename to test-harness/src/main/java/io/jenkins/plugins/casc/misc/Env.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/misc/EnvVarsRule.java b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/EnvVarsRule.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/misc/EnvVarsRule.java rename to test-harness/src/main/java/io/jenkins/plugins/casc/misc/EnvVarsRule.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/misc/Envs.java b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/Envs.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/misc/Envs.java rename to test-harness/src/main/java/io/jenkins/plugins/casc/misc/Envs.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/misc/EnvsFromFile.java b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/EnvsFromFile.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/misc/EnvsFromFile.java rename to test-harness/src/main/java/io/jenkins/plugins/casc/misc/EnvsFromFile.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/misc/JenkinsConfiguredRule.java b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/JenkinsConfiguredRule.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/misc/JenkinsConfiguredRule.java rename to test-harness/src/main/java/io/jenkins/plugins/casc/misc/JenkinsConfiguredRule.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/misc/JenkinsConfiguredWithCodeRule.java b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/JenkinsConfiguredWithCodeRule.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/misc/JenkinsConfiguredWithCodeRule.java rename to test-harness/src/main/java/io/jenkins/plugins/casc/misc/JenkinsConfiguredWithCodeRule.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/misc/JenkinsConfiguredWithReadmeRule.java b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/JenkinsConfiguredWithReadmeRule.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/misc/JenkinsConfiguredWithReadmeRule.java rename to test-harness/src/main/java/io/jenkins/plugins/casc/misc/JenkinsConfiguredWithReadmeRule.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/misc/RoundTripAbstractTest.java b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/RoundTripAbstractTest.java similarity index 98% rename from plugin/src/test/java/io/jenkins/plugins/casc/misc/RoundTripAbstractTest.java rename to test-harness/src/main/java/io/jenkins/plugins/casc/misc/RoundTripAbstractTest.java index 71b47e1619..51f0a48481 100644 --- a/plugin/src/test/java/io/jenkins/plugins/casc/misc/RoundTripAbstractTest.java +++ b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/RoundTripAbstractTest.java @@ -57,6 +57,8 @@ public abstract class RoundTripAbstractTest { /** * A method to assert if the configuration was correctly loaded. The Jenkins rule and the content of the config * supposedly loaded are passed. + * @param j a RestartableJenkinsRule instance. + * @param configContent expected configuration. */ protected abstract void assertConfiguredAsExpected(RestartableJenkinsRule j, String configContent); diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/misc/Util.java b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/Util.java similarity index 72% rename from plugin/src/test/java/io/jenkins/plugins/casc/misc/Util.java rename to test-harness/src/main/java/io/jenkins/plugins/casc/misc/Util.java index 8dad42346b..5055edac25 100644 --- a/plugin/src/test/java/io/jenkins/plugins/casc/misc/Util.java +++ b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/Util.java @@ -1,6 +1,8 @@ package io.jenkins.plugins.casc.misc; -import com.fasterxml.jackson.dataformat.yaml.snakeyaml.Yaml; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import hudson.ExtensionList; import io.jenkins.plugins.casc.ConfigurationAsCode; import io.jenkins.plugins.casc.ConfigurationContext; @@ -12,18 +14,20 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.StringWriter; +import java.io.UncheckedIOException; import java.net.URISyntaxException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.Map; +import java.util.List; import java.util.Objects; import java.util.logging.Level; import java.util.logging.Logger; import jenkins.model.GlobalConfigurationCategory; import jenkins.tools.ToolConfigurationCategory; import org.everit.json.schema.Schema; +import org.everit.json.schema.ValidationException; import org.everit.json.schema.loader.SchemaLoader; import org.json.JSONObject; import org.json.JSONTokener; @@ -31,6 +35,8 @@ import static io.jenkins.plugins.casc.ConfigurationAsCode.serializeYamlNode; import static io.jenkins.plugins.casc.SchemaGeneration.generateSchema; +import static java.util.Collections.emptyList; +import static java.util.Collections.singletonList; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -161,17 +167,21 @@ public static String toYamlString(CNode rootNode) throws IOException { * @param clazz pass in {@code this} * @param resourcePath the file name to read, should be in the same package as your test class in resources * @return the string content of the file - * @throws URISyntaxException invalid path - * @throws IOException invalid path or file not found in general + * @throws URISyntaxException if an invalid URI is passed. */ - public static String toStringFromYamlFile(Object clazz, String resourcePath) throws URISyntaxException, IOException { - URL resource = clazz.getClass().getResource(resourcePath); - if (resource == null) { - throw new FileNotFoundException("Couldn't find file: " + resourcePath); - } + public static String toStringFromYamlFile(Object clazz, String resourcePath) + throws URISyntaxException { + try { + URL resource = clazz.getClass().getResource(resourcePath); + if (resource == null) { + throw new FileNotFoundException("Couldn't find file: " + resourcePath); + } - byte[] bytes = Files.readAllBytes(Paths.get(resource.toURI())); - return new String(bytes, StandardCharsets.UTF_8).replaceAll("\r\n?", "\n"); + byte[] bytes = Files.readAllBytes(Paths.get(resource.toURI())); + return new String(bytes, StandardCharsets.UTF_8).replaceAll("\r\n?", "\n"); + } catch (IOException e) { + throw new UncheckedIOException(e); + } } /** @@ -182,7 +192,7 @@ public static String toStringFromYamlFile(Object clazz, String resourcePath) thr */ public static void assertNotInLog(LoggerRule logging, String unexpectedText) { assertFalse("The log should not contain '" + unexpectedText + "'", - logging.getMessages().stream().anyMatch(m -> m.contains(unexpectedText))); + logging.getMessages().stream().anyMatch(m -> m.contains(unexpectedText))); } /** @@ -193,35 +203,40 @@ public static void assertNotInLog(LoggerRule logging, String unexpectedText) { */ public static void assertLogContains(LoggerRule logging, String expectedText) { assertTrue("The log should contain '" + expectedText + "'", - logging.getMessages().stream().anyMatch(m -> m.contains(expectedText))); + logging.getMessages().stream().anyMatch(m -> m.contains(expectedText))); } /** - * Converts a given yamlString into a JsonString. - * Example Usage: + *

Converts a given yamlString into a JsonString.

+ *

Example Usage:

*
{@code
      * String jsonString = convertToJson(yourYamlString);}
      * 
- * @param yamlString - * @return JsonString + * @param yamlString the yaml to convert + * @return the json conversion of the yaml string. */ - public static String convertToJson(String yamlString) { - Yaml yaml= new Yaml(); - Map map= (Map) yaml.load(yamlString); - JSONObject jsonObject=new JSONObject(map); - return jsonObject.toString(); + try { + ObjectMapper yamlReader = new ObjectMapper(new YAMLFactory()); + Object obj = yamlReader.readValue(yamlString, Object.class); + + ObjectMapper jsonWriter = new ObjectMapper(); + return jsonWriter.writeValueAsString(obj); + } catch (JsonProcessingException e) { + throw new UncheckedIOException(e); + } } /** * Retrieves the JSON schema for the running jenkins instance. - * Example Usage: - * *
{@code
-     *      * Schema jsonSchema = returnSchema();}
-     *      * 
- * @return Schema the schema for the current jenkins instance + *

Example Usage:

+ *
{@code
+     *      Schema jsonSchema = returnSchema();}
+     *      
+ * + * @return the schema for the current jenkins instance */ - public static Schema returnSchema() throws Exception{ + public static Schema returnSchema() { JSONObject schemaObject = generateSchema(); JSONObject jsonSchema = new JSONObject( new JSONTokener(schemaObject.toString())); @@ -229,34 +244,49 @@ public static Schema returnSchema() throws Exception{ } /** - * Validates a given jsonObject against the schema generated for the current live jenkins instance - * * Example Usage: - * * *
{@code
-     *      *      * assertTrue(validateSchema(jsonSubject));}
-     *      *      * 
- * @param jsonSubject The json Object that needs to be validated - * @return true if it's valid else returns false + * Validates a given jsonObject against the schema generated for the current live jenkins + * instance. + * + *

Example Usage:

+ *
{@code
+     *   assertThat(validateSchema(convertYamlFileToJson(this, "invalidSchemaConfig.yml")),
+     *             contains("#/jenkins/numExecutors: expected type: Number, found: String"));
+     *  }
+ * + *
{@code
+     *   assertThat(validateSchema(convertYamlFileToJson(this, "validConfig.yml")),
+     *             empty());
+     *  }
+ * + * @param jsonSubject the json object that needs to be validated + * @return a list of validation errors, empty list if no errors */ - public static boolean validateSchema(JSONObject jsonSubject) { + public static List validateSchema(JSONObject jsonSubject) { try { returnSchema().validate(jsonSubject); + } catch (ValidationException e) { + return e.getAllMessages(); } catch (Exception ie) { LOGGER.log(Level.WARNING, failureMessage, ie); - return false; + return singletonList("Exception during test" + ie.getMessage()); } - return true; + return emptyList(); } /** * Converts a YAML file into a json object - * Example Usage: - * *
{@code
-     *           * JSONObject  jsonObject = convertYamlFileToJson("filename");}
-     *           * 
+ *

Example Usage:

+ *
{@code
+     *  JSONObject jsonObject = convertYamlFileToJson(this, "filename");}
+     * 
+ * + * @param clazz the class used for loading resources, normally you want to pass 'this' * @param yamlFileName the name of the yaml file that needs to be converted * @return JSONObject pertaining to that yaml file. + * @throws URISyntaxException if an invalid URI is passed. */ - public static JSONObject convertYamlFileToJson(Object clazz, String yamlFileName) throws Exception { + public static JSONObject convertYamlFileToJson(Object clazz, String yamlFileName) + throws URISyntaxException { String yamlStringContents = toStringFromYamlFile(clazz, yamlFileName); return new JSONObject(new JSONTokener(convertToJson(yamlStringContents))); } diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/misc/jmh/CascJmhBenchmarkState.java b/test-harness/src/main/java/io/jenkins/plugins/casc/misc/jmh/CascJmhBenchmarkState.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/misc/jmh/CascJmhBenchmarkState.java rename to test-harness/src/main/java/io/jenkins/plugins/casc/misc/jmh/CascJmhBenchmarkState.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/AgentProtocolsTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/AgentProtocolsTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/AgentProtocolsTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/AgentProtocolsTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/BackwardCompatibilityTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/BackwardCompatibilityTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/BackwardCompatibilityTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/BackwardCompatibilityTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/CascJmhBenchmarkStateTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/CascJmhBenchmarkStateTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/CascJmhBenchmarkStateTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/CascJmhBenchmarkStateTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/ConfigurationAsCodeTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/ConfigurationAsCodeTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/ConfigurationAsCodeTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/ConfigurationAsCodeTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/DetectMissingVaultPluginTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/DetectMissingVaultPluginTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/DetectMissingVaultPluginTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/DetectMissingVaultPluginTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/JenkinsConfigTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/JenkinsConfigTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/JenkinsConfigTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/JenkinsConfigTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/JenkinsConfiguredWithCodeRuleClassRuleTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/JenkinsConfiguredWithCodeRuleClassRuleTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/JenkinsConfiguredWithCodeRuleClassRuleTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/JenkinsConfiguredWithCodeRuleClassRuleTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/SampleBenchmark.java b/test-harness/src/test/java/io/jenkins/plugins/casc/SampleBenchmark.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/SampleBenchmark.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/SampleBenchmark.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/SchemaGenerationTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/SchemaGenerationTest.java similarity index 80% rename from plugin/src/test/java/io/jenkins/plugins/casc/SchemaGenerationTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/SchemaGenerationTest.java index df0ac85d59..804c900cf7 100644 --- a/plugin/src/test/java/io/jenkins/plugins/casc/SchemaGenerationTest.java +++ b/test-harness/src/test/java/io/jenkins/plugins/casc/SchemaGenerationTest.java @@ -8,9 +8,10 @@ import static io.jenkins.plugins.casc.SchemaGeneration.retrieveDocStringFromAttribute; import static io.jenkins.plugins.casc.misc.Util.convertYamlFileToJson; import static io.jenkins.plugins.casc.misc.Util.validateSchema; -import static junit.framework.TestCase.assertTrue; +import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.empty; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertThat; public class SchemaGenerationTest { @@ -19,12 +20,13 @@ public class SchemaGenerationTest { @Test public void validSchemaShouldSucceed() throws Exception { - assertTrue(validateSchema(convertYamlFileToJson(this, "validSchemaConfig.yml"))); + assertThat(validateSchema(convertYamlFileToJson(this, "validSchemaConfig.yml")), empty()); } @Test public void invalidSchemaShouldNotSucceed() throws Exception { - assertFalse(validateSchema(convertYamlFileToJson(this,"invalidSchemaConfig.yml"))); + assertThat(validateSchema(convertYamlFileToJson(this, "invalidSchemaConfig.yml")), + contains("#/jenkins/numExecutors: expected type: Number, found: String")); } @Test diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/Security1290Test.java b/test-harness/src/test/java/io/jenkins/plugins/casc/Security1290Test.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/Security1290Test.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/Security1290Test.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/TokenReloadActionTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/TokenReloadActionTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/TokenReloadActionTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/TokenReloadActionTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/core/AdminWhitelistRuleConfiguratorTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/core/AdminWhitelistRuleConfiguratorTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/core/AdminWhitelistRuleConfiguratorTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/core/AdminWhitelistRuleConfiguratorTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/core/HudsonPrivateSecurityRealmConfiguratorTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/core/HudsonPrivateSecurityRealmConfiguratorTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/core/HudsonPrivateSecurityRealmConfiguratorTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/core/HudsonPrivateSecurityRealmConfiguratorTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/core/JenkinsConfiguratorCloudSupportTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/core/JenkinsConfiguratorCloudSupportTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/core/JenkinsConfiguratorCloudSupportTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/core/JenkinsConfiguratorCloudSupportTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/core/JenkinsConfiguratorTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/core/JenkinsConfiguratorTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/core/JenkinsConfiguratorTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/core/JenkinsConfiguratorTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/core/MavenConfiguratorTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/core/MavenConfiguratorTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/core/MavenConfiguratorTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/core/MavenConfiguratorTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/core/ProxyConfiguratorTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/core/ProxyConfiguratorTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/core/ProxyConfiguratorTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/core/ProxyConfiguratorTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/core/UnsecuredAuthorizationStrategyConfiguratorTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/core/UnsecuredAuthorizationStrategyConfiguratorTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/core/UnsecuredAuthorizationStrategyConfiguratorTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/core/UnsecuredAuthorizationStrategyConfiguratorTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/core/UpdateCenterConfiguratorTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/core/UpdateCenterConfiguratorTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/core/UpdateCenterConfiguratorTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/core/UpdateCenterConfiguratorTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/DataBoundConfiguratorTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/DataBoundConfiguratorTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/DataBoundConfiguratorTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/DataBoundConfiguratorTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/DescriptorConfiguratorTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/DescriptorConfiguratorTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/DescriptorConfiguratorTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/DescriptorConfiguratorTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/DuplicateKeyDescribableConfiguratorTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/DuplicateKeyDescribableConfiguratorTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/DuplicateKeyDescribableConfiguratorTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/DuplicateKeyDescribableConfiguratorTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/MissingConfiguratorTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/MissingConfiguratorTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/MissingConfiguratorTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/MissingConfiguratorTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/SelfConfiguratorTest.java b/test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/SelfConfiguratorTest.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/SelfConfiguratorTest.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/SelfConfiguratorTest.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/ClassParametersAreNonnullByDefault.java b/test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/ClassParametersAreNonnullByDefault.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/ClassParametersAreNonnullByDefault.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/ClassParametersAreNonnullByDefault.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/NonnullParameterConstructor.java b/test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/NonnullParameterConstructor.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/NonnullParameterConstructor.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/NonnullParameterConstructor.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/nonnullparampackage/PackageParametersAreNonnullByDefault.java b/test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/nonnullparampackage/PackageParametersAreNonnullByDefault.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/nonnullparampackage/PackageParametersAreNonnullByDefault.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/nonnullparampackage/PackageParametersAreNonnullByDefault.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/nonnullparampackage/PackageParametersNonNullCheckForNull.java b/test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/nonnullparampackage/PackageParametersNonNullCheckForNull.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/nonnullparampackage/PackageParametersNonNullCheckForNull.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/nonnullparampackage/PackageParametersNonNullCheckForNull.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/nonnullparampackage/package-info.java b/test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/nonnullparampackage/package-info.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/nonnullparampackage/package-info.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/nonnullparampackage/package-info.java diff --git a/plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/package-info.java b/test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/package-info.java similarity index 100% rename from plugin/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/package-info.java rename to test-harness/src/test/java/io/jenkins/plugins/casc/impl/configurators/nonnull/package-info.java diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/AgentProtocolsTest.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/AgentProtocolsTest.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/AgentProtocolsTest.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/AgentProtocolsTest.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/ArtifactoryBuilderTest.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/ArtifactoryBuilderTest.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/ArtifactoryBuilderTest.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/ArtifactoryBuilderTest.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/BackwardCompatibilityTest.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/BackwardCompatibilityTest.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/BackwardCompatibilityTest.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/BackwardCompatibilityTest.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/GetConfiguratorsTest.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/GetConfiguratorsTest.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/GetConfiguratorsTest.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/GetConfiguratorsTest.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/GlobalSecurityConfiguration.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/GlobalSecurityConfiguration.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/GlobalSecurityConfiguration.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/GlobalSecurityConfiguration.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/JenkinsConfigTest.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/JenkinsConfigTest.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/JenkinsConfigTest.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/JenkinsConfigTest.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/aNonEmpty.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/aNonEmpty.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/aNonEmpty.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/aNonEmpty.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/admin.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/admin.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/admin.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/admin.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/benchmarks.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/benchmarks.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/benchmarks.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/benchmarks.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/AdminWhitelistRuleConfigurator/Agent2MasterSecurityKillSwitch_disabled.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/AdminWhitelistRuleConfigurator/Agent2MasterSecurityKillSwitch_disabled.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/AdminWhitelistRuleConfigurator/Agent2MasterSecurityKillSwitch_disabled.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/AdminWhitelistRuleConfigurator/Agent2MasterSecurityKillSwitch_disabled.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/AdminWhitelistRuleConfigurator/Agent2MasterSecurityKillSwitch_enabled.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/AdminWhitelistRuleConfigurator/Agent2MasterSecurityKillSwitch_enabled.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/AdminWhitelistRuleConfigurator/Agent2MasterSecurityKillSwitch_enabled.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/AdminWhitelistRuleConfigurator/Agent2MasterSecurityKillSwitch_enabled.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/HeteroDescribable.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/HeteroDescribable.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/HeteroDescribable.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/HeteroDescribable.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/HudsonPrivateSecurityRealmConfiguratorTest.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/HudsonPrivateSecurityRealmConfiguratorTest.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/HudsonPrivateSecurityRealmConfiguratorTest.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/HudsonPrivateSecurityRealmConfiguratorTest.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/JenkinsConfiguratorCloudSupportTest.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/JenkinsConfiguratorCloudSupportTest.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/JenkinsConfiguratorCloudSupportTest.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/JenkinsConfiguratorCloudSupportTest.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/MavenConfiguratorTest.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/MavenConfiguratorTest.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/MavenConfiguratorTest.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/MavenConfiguratorTest.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/Primitives.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/Primitives.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/Primitives.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/Primitives.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/Proxy.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/Proxy.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/Proxy.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/Proxy.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/ProxyMinimal.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/ProxyMinimal.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/ProxyMinimal.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/ProxyMinimal.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/ProxyWithSecrets.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/ProxyWithSecrets.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/ProxyWithSecrets.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/ProxyWithSecrets.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/SetEnvironmentVariable.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/SetEnvironmentVariable.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/SetEnvironmentVariable.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/SetEnvironmentVariable.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/UnsecuredAuthorizationStrategyConfiguratorTest.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/UnsecuredAuthorizationStrategyConfiguratorTest.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/UnsecuredAuthorizationStrategyConfiguratorTest.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/UnsecuredAuthorizationStrategyConfiguratorTest.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/core/UpdateCenter.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/core/UpdateCenter.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/core/UpdateCenter.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/core/UpdateCenter.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/empty.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/empty.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/empty.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/empty.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DataBoundDescriptorNonNull.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DataBoundDescriptorNonNull.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DataBoundDescriptorNonNull.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DataBoundDescriptorNonNull.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DescriptorConfiguratorTest_camelCase.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DescriptorConfiguratorTest_camelCase.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DescriptorConfiguratorTest_camelCase.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DescriptorConfiguratorTest_camelCase.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DescriptorConfiguratorTest_lowerCase.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DescriptorConfiguratorTest_lowerCase.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DescriptorConfiguratorTest_lowerCase.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DescriptorConfiguratorTest_lowerCase.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DuplicateKeyDescribableConfigure.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DuplicateKeyDescribableConfigure.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DuplicateKeyDescribableConfigure.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/DuplicateKeyDescribableConfigure.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/MissingConfiguratorTest.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/MissingConfiguratorTest.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/MissingConfiguratorTest.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/MissingConfiguratorTest.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/SelfConfiguratorRestrictedTest.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/SelfConfiguratorRestrictedTest.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/SelfConfiguratorRestrictedTest.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/SelfConfiguratorRestrictedTest.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/SelfConfiguratorTest.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/SelfConfiguratorTest.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/impl/configurators/SelfConfiguratorTest.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/impl/configurators/SelfConfiguratorTest.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/invalidSchemaConfig.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/invalidSchemaConfig.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/invalidSchemaConfig.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/invalidSchemaConfig.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/merge1.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/merge1.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/merge1.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/merge1.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/merge2.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/merge2.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/merge2.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/merge2.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/merge3.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/merge3.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/merge3.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/merge3.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/multi-line1.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/multi-line1.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/multi-line1.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/multi-line1.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/multi-line2.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/multi-line2.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/multi-line2.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/multi-line2.yml diff --git a/plugin/src/test/resources/io/jenkins/plugins/casc/validSchemaConfig.yml b/test-harness/src/test/resources/io/jenkins/plugins/casc/validSchemaConfig.yml similarity index 100% rename from plugin/src/test/resources/io/jenkins/plugins/casc/validSchemaConfig.yml rename to test-harness/src/test/resources/io/jenkins/plugins/casc/validSchemaConfig.yml