@Test public void shouldNeverIgnorePackageMaterialModifications() { PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig(); Filter filter = packageMaterialConfig.filter(); MatcherAssert.assertThat(filter, is(notNullValue())); MatcherAssert.assertThat(new Modifications().shouldBeIgnoredByFilterIn(packageMaterialConfig), is(false)); }
@Test public void shouldSetPackageIdToNullIfConfigAttributesForThePackageMaterialDoesNotContainPackageId() throws Exception { Map<String, String> attributes = new HashMap<>(); PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig("id"); packageMaterialConfig.setConfigAttributes(attributes); assertThat(packageMaterialConfig.getPackageId(), is(nullValue())); }
@Test public void shouldSetConfigAttributesForThePackageMaterial() throws Exception { Map<String, String> attributes = new HashMap<>(); attributes.put(PackageMaterialConfig.PACKAGE_ID, "packageId"); PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig(); packageMaterialConfig.setConfigAttributes(attributes); assertThat(packageMaterialConfig.getPackageId(), is("packageId")); }
@Test public void shouldPassMaterialUniquenessIfIfNoDuplicateMaterialFound() throws Exception { PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig("package-id"); Map<CaseInsensitiveString, AbstractMaterialConfig> nameToMaterialMap = new HashMap<>(); nameToMaterialMap.put(new CaseInsensitiveString("repo-name:pkg-name"), new PackageMaterialConfig("package-id-new")); nameToMaterialMap.put(new CaseInsensitiveString("foo"), new GitMaterialConfig("url")); packageMaterialConfig.validateNameUniqueness(nameToMaterialMap); assertThat(packageMaterialConfig.errors().getAll().size(), is(0)); assertThat(nameToMaterialMap.size(), is(3)); }
@Test public void shouldNotAddErrorDuringUniquenessValidationIfMaterialNameIsEmpty() throws Exception { PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig(""); Map<CaseInsensitiveString, AbstractMaterialConfig> nameToMaterialMap = new HashMap<>(); packageMaterialConfig.validateNameUniqueness(nameToMaterialMap); assertThat(packageMaterialConfig.errors().getAll().size(), is(0)); assertThat(nameToMaterialMap.size(), is(0)); }
public static PackageMaterialConfig fromJSON(JsonReader jsonReader, ConfigHelperOptions options) { PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig(); // Pass along options or the cruise config object. CruiseConfig cruiseConfig = options.getCruiseConfig(); String ref = jsonReader.getString("ref"); packageMaterialConfig.setPackageDefinition(cruiseConfig.getPackageRepositories().findPackageDefinitionWith(ref)); packageMaterialConfig.setPackageId(ref); return packageMaterialConfig; } }
@Test public void shouldSetPackageIdAsNullIfPackageDefinitionIsNull(){ PackageMaterialConfig materialConfig = new PackageMaterialConfig("1"); materialConfig.setPackageDefinition(null); assertThat(materialConfig.getPackageId(), is(nullValue())); assertThat(materialConfig.getPackageDefinition(), is(nullValue())); }
@Test public void shouldDelegateToPackageDefinitionForAutoUpdate() throws Exception { PackageDefinition packageDefinition = mock(PackageDefinition.class); when(packageDefinition.isAutoUpdate()).thenReturn(false); PackageMaterialConfig materialConfig = new PackageMaterialConfig(new CaseInsensitiveString("name"), "package-id", packageDefinition); assertThat(materialConfig.isAutoUpdate(), is(false)); verify(packageDefinition).isAutoUpdate(); } }
@Test public void shouldGetPackageMaterialConfigs() throws Exception { SvnMaterialConfig svn = new SvnMaterialConfig("svn", false); PackageMaterialConfig packageMaterialOne = new PackageMaterialConfig(); PackageMaterialConfig packageMaterialTwo = new PackageMaterialConfig(); PipelineConfig pipelineConfig = PipelineConfigMother.pipelineConfig("p1", new MaterialConfigs(svn, packageMaterialOne, packageMaterialTwo)); List<PackageMaterialConfig> packageMaterialConfigs = pipelineConfig.packageMaterialConfigs(); assertThat(packageMaterialConfigs.size(), is(2)); assertThat(packageMaterialConfigs, hasItems(packageMaterialOne, packageMaterialTwo)); }
@Test public void shouldAddErrorIfPackageDoesNotExistsForGivenPackageId() throws Exception { PipelineConfigSaveValidationContext configSaveValidationContext = mock(PipelineConfigSaveValidationContext.class); when(configSaveValidationContext.findPackageById(anyString())).thenReturn(mock(PackageRepository.class)); PackageRepository packageRepository = mock(PackageRepository.class); when(packageRepository.doesPluginExist()).thenReturn(true); PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig(new CaseInsensitiveString("package-name"), "package-id", PackageDefinitionMother.create("package-id")); packageMaterialConfig.getPackageDefinition().setRepository(packageRepository); packageMaterialConfig.validateTree(configSaveValidationContext); assertThat(packageMaterialConfig.errors().getAll().size(), is(1)); assertThat(packageMaterialConfig.errors().on(PackageMaterialConfig.PACKAGE_ID), is("Could not find plugin for given package id:[package-id].")); }
@Test public void shouldAddErrorIfPackagePluginDoesNotExistsForGivenPackageId() throws Exception { PipelineConfigSaveValidationContext configSaveValidationContext = mock(PipelineConfigSaveValidationContext.class); when(configSaveValidationContext.findPackageById(anyString())).thenReturn(mock(PackageRepository.class)); PackageRepository packageRepository = mock(PackageRepository.class); when(packageRepository.doesPluginExist()).thenReturn(false); PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig(new CaseInsensitiveString("package-name"), "package-id", PackageDefinitionMother.create("package-id")); packageMaterialConfig.getPackageDefinition().setRepository(packageRepository); packageMaterialConfig.validateTree(configSaveValidationContext); assertThat(packageMaterialConfig.errors().getAll().size(), is(1)); assertThat(packageMaterialConfig.errors().on(PackageMaterialConfig.PACKAGE_ID), is("Could not find plugin for given package id:[package-id].")); }
@Test public void shouldGetExistingOrDefaultMaterialCorrectly() { SvnMaterialConfig svn = new SvnMaterialConfig("http://test.com", false); PackageMaterialConfig p1 = new PackageMaterialConfig("p1"); PackageMaterialConfig p2 = new PackageMaterialConfig("p2"); assertThat(new MaterialConfigs(svn, p2).getExistingOrDefaultMaterial(p1).getPackageId(), is("p2")); assertThat(new MaterialConfigs(svn).getExistingOrDefaultMaterial(p1).getPackageId(), is("p1")); }
@Test public void shouldAddErrorIfMaterialDoesNotHaveAPackageId() throws Exception { PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig(); packageMaterialConfig.validateConcreteMaterial(new ConfigSaveValidationContext(null, null)); assertThat(packageMaterialConfig.errors().getAll().size(), is(1)); assertThat(packageMaterialConfig.errors().on(PackageMaterialConfig.PACKAGE_ID), is("Please select a repository and package")); }
@Test public void isValid_shouldAllowColonForLabelTemplate() { pipeline.addMaterialConfig(new PackageMaterialConfig(new CaseInsensitiveString("repo:name"), "package-id", PackageDefinitionMother.create("package-id"))); assertLabelTemplate("pipeline-${COUNT}-${repo:name}", Assert::assertNull); }
@Test public void shouldGetNameFromRepoNameAndPackageName() { PackageMaterialConfig materialConfig = new PackageMaterialConfig(); PackageRepository repository = PackageRepositoryMother.create("repo-id", "repo-name", "pluginid", "version", new Configuration(ConfigurationPropertyMother.create("k1", false, "v1"))); materialConfig.setPackageDefinition(PackageDefinitionMother.create("p-id", "package-name", new Configuration(ConfigurationPropertyMother.create("k2", false, "v2")), repository)); assertThat(materialConfig.getName().toString(), is("repo-name:package-name")); materialConfig.setPackageDefinition(null); assertThat(materialConfig.getName(), is(nullValue())); }
private PackageMaterialConfig getPackageMaterialConfigWithAutoUpdateFalse() { PackageDefinition packageDefinition = new PackageDefinition("packageWithAutoUpdateFalse","DLF Package", new Configuration()); packageDefinition.setRepository(PackageRepositoryMother.create("DLF")); packageDefinition.setAutoUpdate(false); return new PackageMaterialConfig(new CaseInsensitiveString("JamesBond"), "packageWithAutoUpdateFalse", packageDefinition); }
private PackageMaterialConfig getPackageMaterialConfigWithAutoUpdateTrue() { PackageDefinition packageDefinition = new PackageDefinition("packageWithAutoUpdateFalse","DTDC Package", new Configuration()); packageDefinition.setRepository(PackageRepositoryMother.create("DTDC")); packageDefinition.setAutoUpdate(true); return new PackageMaterialConfig(new CaseInsensitiveString("Krish"), "packageWithAutoUpdateTrue", packageDefinition); }
@Test public void shouldComputePackageUsageInPipelinesOnlyOnce() throws Exception { PackageMaterialConfig packageOne = new PackageMaterialConfig("package-id-one"); PackageMaterialConfig packageTwo = new PackageMaterialConfig("package-id-two"); final PipelineConfig p1 = PipelineConfigMother.pipelineConfig("pipeline1", new MaterialConfigs(packageOne, packageTwo), new JobConfigs(new JobConfig(new CaseInsensitiveString("jobName")))); final PipelineConfig p2 = PipelineConfigMother.pipelineConfig("pipeline2", new MaterialConfigs(packageTwo), new JobConfigs(new JobConfig(new CaseInsensitiveString("jobName")))); PipelineGroups groups = new PipelineGroups(); groups.addAll(asList(new BasicPipelineConfigs(p1), new BasicPipelineConfigs(p2))); Map<String, List<Pair<PipelineConfig, PipelineConfigs>>> result1 = groups.getPackageUsageInPipelines(); Map<String, List<Pair<PipelineConfig, PipelineConfigs>>> result2 = groups.getPackageUsageInPipelines(); assertSame(result1, result2); }
@Test public void shouldAddErrorWhenMatchingPackageIDDoesNotExist(){ PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig(new CaseInsensitiveString("package-name"), "package-id", PackageDefinitionMother.create("package-id")); CruiseConfig config = GoConfigMother.configWithPipelines("one"); PipelineConfig pipelineConfig = config.pipelineConfigByName(new CaseInsensitiveString("one")); MaterialConfigs materialConfigs = new MaterialConfigs(packageMaterialConfig); pipelineConfig.setMaterialConfigs(materialConfigs); materialConfigs.validateTree(PipelineConfigSaveValidationContext.forChain(true, "group", config)); assertThat(pipelineConfig.materialConfigs().get(0).errors().on(packageMaterialConfig.PACKAGE_ID), is("Could not find repository for given package id:[package-id]")); }
@Test public void shouldAddErrorWhenMatchingScmConfigDoesNotExist(){ PluggableSCMMaterialConfig scmMaterialConfig = new PluggableSCMMaterialConfig(null, SCMMother.create("scm-id"), null, null); PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig(new CaseInsensitiveString("package-name"), "package-id", PackageDefinitionMother.create("package-id")); CruiseConfig config = GoConfigMother.configWithPipelines("one"); PipelineConfig pipelineConfig = config.pipelineConfigByName(new CaseInsensitiveString("one")); MaterialConfigs materialConfigs = new MaterialConfigs(scmMaterialConfig,packageMaterialConfig); pipelineConfig.setMaterialConfigs(materialConfigs); materialConfigs.validateTree(PipelineConfigSaveValidationContext.forChain(true, "group", config)); assertThat(pipelineConfig.materialConfigs().get(0).errors().on(scmMaterialConfig.SCM_ID), is("Could not find SCM for given scm-id: [scm-id].")); }