@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)); }
@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 shouldAddErrorIfMaterialNameUniquenessValidationFails() throws Exception { PackageMaterialConfig packageMaterialConfig = new PackageMaterialConfig("package-id"); Map<CaseInsensitiveString, AbstractMaterialConfig> nameToMaterialMap = new HashMap<>(); PackageMaterialConfig existingMaterial = new PackageMaterialConfig("package-id"); nameToMaterialMap.put(new CaseInsensitiveString("package-id"), existingMaterial); nameToMaterialMap.put(new CaseInsensitiveString("foo"), new GitMaterialConfig("url")); packageMaterialConfig.validateNameUniqueness(nameToMaterialMap); assertThat(packageMaterialConfig.errors().getAll().size(), is(1)); assertThat(packageMaterialConfig.errors().on(PackageMaterialConfig.PACKAGE_ID), is("Duplicate package material detected!")); assertThat(existingMaterial.errors().getAll().size(), is(1)); assertThat(existingMaterial.errors().on(PackageMaterialConfig.PACKAGE_ID), is("Duplicate package material detected!")); assertThat(nameToMaterialMap.size(), is(2)); }
@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 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 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)); }