/* * Copyright 2016 ThoughtWorks, Inc. * * Licensed 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 com.thoughtworks.go.helper; import com.thoughtworks.go.config.CaseInsensitiveString; import com.thoughtworks.go.config.materials.*; import com.thoughtworks.go.config.materials.dependency.DependencyMaterialConfig; import com.thoughtworks.go.config.materials.git.GitMaterialConfig; import com.thoughtworks.go.config.materials.mercurial.HgMaterialConfig; import com.thoughtworks.go.config.materials.perforce.P4MaterialConfig; import com.thoughtworks.go.config.materials.svn.SvnMaterialConfig; import com.thoughtworks.go.config.materials.tfs.TfsMaterialConfig; import com.thoughtworks.go.domain.config.Configuration; import com.thoughtworks.go.domain.config.ConfigurationKey; import com.thoughtworks.go.domain.config.ConfigurationProperty; import com.thoughtworks.go.domain.config.ConfigurationValue; import com.thoughtworks.go.domain.packagerepository.ConfigurationPropertyMother; import com.thoughtworks.go.domain.packagerepository.PackageDefinition; import com.thoughtworks.go.domain.packagerepository.PackageDefinitionMother; import com.thoughtworks.go.domain.packagerepository.PackageRepository; import com.thoughtworks.go.domain.packagerepository.PackageRepositoryMother; import com.thoughtworks.go.domain.scm.SCM; import com.thoughtworks.go.domain.scm.SCMMother; import com.thoughtworks.go.security.GoCipher; import com.thoughtworks.go.util.command.HgUrlArgument; import com.thoughtworks.go.util.command.UrlArgument; import static com.thoughtworks.go.util.DataStructureUtils.m; public class MaterialConfigsMother { public static MaterialConfigs defaultMaterialConfigs() { return defaultSvnMaterialConfigsWithUrl("http://some/svn/url"); } public static MaterialConfigs defaultSvnMaterialConfigsWithUrl(String svnUrl) { return new MaterialConfigs(svnMaterialConfig(svnUrl, "svnDir", null, null, false, null)); } public static MaterialConfigs multipleMaterialConfigs() { MaterialConfigs materialConfigs = new MaterialConfigs(); materialConfigs.add(svnMaterialConfig("http://svnurl", null)); materialConfigs.add(hgMaterialConfig("http://hgurl", "hgdir")); materialConfigs.add(dependencyMaterialConfig("cruise", "dev")); return materialConfigs; } public static PackageMaterialConfig packageMaterialConfig(){ return packageMaterialConfig("repo-name", "package-name"); } public static PackageMaterialConfig packageMaterialConfig(String repoName, String packageName) { PackageMaterialConfig material = new PackageMaterialConfig("p-id"); PackageRepository repository = PackageRepositoryMother.create("repo-id", repoName, "pluginid", "version", new Configuration(ConfigurationPropertyMother.create("k1", false, "repo-v1"), ConfigurationPropertyMother.create("k2", false, "repo-v2"))); PackageDefinition packageDefinition = PackageDefinitionMother.create("p-id", packageName, new Configuration(ConfigurationPropertyMother.create("k3", false, "package-v1")), repository); material.setPackageDefinition(packageDefinition); repository.getPackages().add(packageDefinition); return material; } public static PluggableSCMMaterialConfig pluggableSCMMaterialConfig() { Filter filter = new Filter(new IgnoredFiles("**/*.html"), new IgnoredFiles("**/foobar/")); return pluggableSCMMaterialConfig("scm-id", "des-folder", filter); } public static PluggableSCMMaterialConfig pluggableSCMMaterialConfigWithConfigProperties(String... properties) { SCM scmConfig = SCMMother.create("scm-id"); Configuration configuration = new Configuration(); for (String property : properties) { ConfigurationProperty configurationProperty = new ConfigurationProperty(new ConfigurationKey(property), new ConfigurationValue(property+"-value")); configuration.add(configurationProperty); } scmConfig.setConfiguration(configuration); return new PluggableSCMMaterialConfig(null, scmConfig, "des-folder", null); } public static PluggableSCMMaterialConfig pluggableSCMMaterialConfig(String scmId, String destinationFolder, Filter filter) { return new PluggableSCMMaterialConfig(null, SCMMother.create(scmId), destinationFolder, filter); } public static DependencyMaterialConfig dependencyMaterialConfig(String pipelineName, String stageName) { return new DependencyMaterialConfig(new CaseInsensitiveString(pipelineName), new CaseInsensitiveString(stageName)); } public static DependencyMaterialConfig dependencyMaterialConfig() { return new DependencyMaterialConfig(new CaseInsensitiveString("pipeline-name"), new CaseInsensitiveString("stage-name")); } public static HgMaterialConfig hgMaterialConfigFull() { Filter filter = new Filter(new IgnoredFiles("**/*.html"), new IgnoredFiles("**/foobar/")); return new HgMaterialConfig(new HgUrlArgument("http://user:pass@domain/path##branch"),true, filter, false, "dest-folder", new CaseInsensitiveString("hg-material") ); } public static HgMaterialConfig hgMaterialConfig() { return hgMaterialConfig("hg-url"); } public static HgMaterialConfig hgMaterialConfig(String url) { return hgMaterialConfig(url, null); } public static HgMaterialConfig hgMaterialConfig(String url, String folder) { return new HgMaterialConfig(url, folder); } public static GitMaterialConfig gitMaterialConfig(String url, String submoduleFolder, String branch, boolean shallowClone) { GitMaterialConfig gitMaterialConfig = new GitMaterialConfig(url, branch); gitMaterialConfig.setShallowClone(shallowClone); gitMaterialConfig.setSubmoduleFolder(submoduleFolder); return gitMaterialConfig; } public static GitMaterialConfig gitMaterialConfig() { Filter filter = new Filter(new IgnoredFiles("**/*.html"), new IgnoredFiles("**/foobar/")); return new GitMaterialConfig(new UrlArgument("http://user:password@funk.com/blank"), "branch", "sub_module_folder", false, filter, false, "destination", new CaseInsensitiveString("AwesomeGitMaterial"), true); } public static GitMaterialConfig gitMaterialConfig(String url) { return new GitMaterialConfig(url); } public static P4MaterialConfig p4MaterialConfig() { return p4MaterialConfig("serverAndPort", null, null, "view", false); } public static P4MaterialConfig p4MaterialConfigFull() { Filter filter = new Filter(new IgnoredFiles("**/*.html"), new IgnoredFiles("**/foobar/")); P4MaterialConfig config = p4MaterialConfig("host:9876", "user", "password", "view", true); config.setFolder("dest-folder"); config.setFilter(filter); config.setName(new CaseInsensitiveString("p4-material")); return config; } public static P4MaterialConfig p4MaterialConfig(String serverAndPort, String userName, String password, String view, boolean useTickets) { final P4MaterialConfig material = new P4MaterialConfig(serverAndPort, view); material.setConfigAttributes(m(P4MaterialConfig.USERNAME, userName, P4MaterialConfig.AUTO_UPDATE, "true")); material.setPassword(password); material.setUseTickets(useTickets); return material; } public static SvnMaterialConfig svnMaterialConfig() { return svnMaterialConfig("url", "svnDir"); } public static SvnMaterialConfig svnMaterialConfig(String svnUrl, String folder, CaseInsensitiveString name) { SvnMaterialConfig svnMaterialConfig = svnMaterialConfig(svnUrl, folder); svnMaterialConfig.setName(name); return svnMaterialConfig; } public static SvnMaterialConfig svnMaterialConfig(String svnUrl, String folder) { return svnMaterialConfig(svnUrl, folder, false); } public static SvnMaterialConfig svnMaterialConfig(String svnUrl, String folder, boolean autoUpdate) { SvnMaterialConfig materialConfig = new SvnMaterialConfig(new UrlArgument(svnUrl), "user", "pass", true, new GoCipher(), autoUpdate, new Filter(new IgnoredFiles("*.doc")), false, folder, new CaseInsensitiveString("svn-material")); materialConfig.setPassword("pass"); return materialConfig; } public static SvnMaterialConfig svnMaterialConfig(String svnUrl, String folder, String userName, String password, boolean checkExternals, String filterPattern) { SvnMaterialConfig svnMaterial = new SvnMaterialConfig(svnUrl, userName, password, checkExternals, folder); if (filterPattern != null) svnMaterial.setFilter(new Filter(new IgnoredFiles(filterPattern))); String name = svnUrl.replaceAll("/", "_"); name = name.replaceAll(":", "_"); svnMaterial.setName(new CaseInsensitiveString(name)); return svnMaterial; } public static HgMaterialConfig filteredHgMaterialConfig(String pattern) { HgMaterialConfig materialConfig = hgMaterialConfig(); materialConfig.setFilter(new Filter(new IgnoredFiles(pattern))); return materialConfig; } public static MaterialConfigs mockMaterialConfigs(String url) { return new MaterialConfigs(new SvnMaterialConfig(url, null, null, false)); } public static TfsMaterialConfig tfsMaterialConfig(){ Filter filter = new Filter(new IgnoredFiles("**/*.html"), new IgnoredFiles("**/foobar/")); TfsMaterialConfig tfsMaterialConfig= new TfsMaterialConfig(new GoCipher(), new UrlArgument("http://10.4.4.101:8080/tfs/Sample"), "loser", "some_domain", "passwd", "walk_this_path"); tfsMaterialConfig.setFilter(filter); tfsMaterialConfig.setName(new CaseInsensitiveString("tfs-material")); tfsMaterialConfig.setFolder("dest-folder"); return tfsMaterialConfig; } }