/** * 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 * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * 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 io.fabric8.kubernetes.api.pipelines; import io.fabric8.kubernetes.api.KubernetesHelper; import io.fabric8.kubernetes.api.model.ConfigMap; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Arrays; import java.util.HashMap; import java.util.List; import static io.fabric8.kubernetes.api.pipelines.PipelineConfiguration.FABRIC8_PIPELINES; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertNotNull; /** */ public class PipelineConfigurationParseTest { public static ConfigMap loadTestConfigMap() throws IOException { String path = FABRIC8_PIPELINES + ".yml"; URL resource = PipelineConfigurationParseTest.class.getClassLoader().getResource(path); assertNotNull("Could not load resource: " + path, resource); try (InputStream in = resource.openStream()) { assertNotNull("Could not open stream for resource: " + resource, in); ConfigMap configMap = KubernetesHelper.loadYaml(in, ConfigMap.class); assertNotNull("Should have loaded " + resource, configMap); return configMap; } } @Test public void testParsePipelineConfiguration() throws Exception { ConfigMap configMap = loadTestConfigMap(); PipelineConfiguration pipelineConfiguration = PipelineConfiguration.getPipelineConfiguration(configMap); System.out.println("Loaded: " + pipelineConfiguration); assertThat(pipelineConfiguration.getCdBranchPatterns()).describedAs("getCdBranchPatterns()").contains("release"); assertThat(pipelineConfiguration.getCiBranchPatterns()).describedAs("getCiBranchPatterns()").contains("PR-.*").contains("whatever"); assertThat(pipelineConfiguration.getJobNameToKindMap()).describedAs("getJobNameToKindMap()"). containsEntry("foo", PipelineKind.CD). containsEntry("bar", PipelineKind.CI). containsEntry("whatnot", PipelineKind.Developer); assertThat(pipelineConfiguration.getCdGitHostAndOrganisationToBranchPatterns()).describedAs("getCdGitHostAndOrganisationToBranchPatterns()"). containsEntry("github.com/fabric8io", Arrays.asList("master")). containsEntry("github.com/fabric8-quickstarts", Arrays.asList("PR-.*")); } @Test public void testLoadMutateAndLoadPipelineConfiguration() throws Exception { ConfigMap configMap = loadTestConfigMap(); PipelineConfiguration pipelineConfiguration = PipelineConfiguration.getPipelineConfiguration(configMap); pipelineConfiguration.setCdBranchPatterns(Arrays.asList("cd-1", "cd-2")); pipelineConfiguration.setCiBranchPatterns(Arrays.asList("ci-1", "ci-2")); pipelineConfiguration.setJobNameToKindMap(new HashMap<>()); pipelineConfiguration.setJobNamesCD("job-cd"); pipelineConfiguration.setJobNamesCI("job-ci"); HashMap<String, List<String>> cdGitHostAndOrganisationToBranchPatterns = new HashMap<>(); cdGitHostAndOrganisationToBranchPatterns.put("github.com/acme", Arrays.asList("release1")); cdGitHostAndOrganisationToBranchPatterns.put("github.com/another", Arrays.asList("release2")); pipelineConfiguration.setCdGitHostAndOrganisationToBranchPatterns(cdGitHostAndOrganisationToBranchPatterns); // reload the modified configuration configMap = pipelineConfiguration.createConfigMap(); pipelineConfiguration = PipelineConfiguration.getPipelineConfiguration(configMap); assertThat(pipelineConfiguration.getCdBranchPatterns()).describedAs("getCdBranchPatterns()").contains("cd-1").contains("cd-2"); assertThat(pipelineConfiguration.getCiBranchPatterns()).describedAs("getCiBranchPatterns()").contains("ci-1").contains("ci-2"); assertThat(pipelineConfiguration.getJobNameToKindMap()).describedAs("getJobNameToKindMap()"). containsEntry("job-cd", PipelineKind.CD). containsEntry("job-ci", PipelineKind.CI); assertThat(pipelineConfiguration.getCdGitHostAndOrganisationToBranchPatterns()).describedAs("getCdGitHostAndOrganisationToBranchPatterns()"). containsEntry("github.com/acme", Arrays.asList("release1")). containsEntry("github.com/another", Arrays.asList("release2")); } }