@Test public void shouldNotAddErrorDuringUniquenessValidationIfSCMNameIsEmpty() throws Exception { pluggableSCMMaterialConfig.setScmId(""); Map<CaseInsensitiveString, AbstractMaterialConfig> nameToMaterialMap = new HashMap<>(); pluggableSCMMaterialConfig.validateNameUniqueness(nameToMaterialMap); assertThat(pluggableSCMMaterialConfig.errors().getAll().size(), is(0)); assertThat(nameToMaterialMap.size(), is(0)); }
@Test public void shouldAddErrorWhenAssociatedSCMPluginIsMissing() throws Exception { PipelineConfigSaveValidationContext configSaveValidationContext = mock(PipelineConfigSaveValidationContext.class); when(configSaveValidationContext.findScmById(anyString())).thenReturn(mock(SCM.class)); SCM scmConfig = mock(SCM.class); when(scmConfig.doesPluginExist()).thenReturn(false); PluggableSCMMaterialConfig pluggableSCMMaterialConfig = new PluggableSCMMaterialConfig(null, scmConfig, "usr/home", null); pluggableSCMMaterialConfig.setScmId("scm-id"); pluggableSCMMaterialConfig.validateTree(configSaveValidationContext); assertThat(pluggableSCMMaterialConfig.errors().getAll().size(), is(1)); assertThat(pluggableSCMMaterialConfig.errors().on(PluggableSCMMaterialConfig.SCM_ID), is("Could not find plugin for scm-id: [scm-id].")); }
@Test public void shouldAddErrorWhenMatchingScmConfigDoesNotExist() throws Exception { PipelineConfigSaveValidationContext validationContext = mock(PipelineConfigSaveValidationContext.class); when(validationContext.findScmById(anyString())).thenReturn(null); SCM scmConfig = mock(SCM.class); when(scmConfig.doesPluginExist()).thenReturn(true); PluggableSCMMaterialConfig pluggableSCMMaterialConfig = new PluggableSCMMaterialConfig(null, scmConfig, "usr/home", null); pluggableSCMMaterialConfig.setScmId("scm-id"); pluggableSCMMaterialConfig.validateTree(validationContext); assertThat(pluggableSCMMaterialConfig.errors().getAll().size(), is(1)); assertThat(pluggableSCMMaterialConfig.errors().on(PluggableSCMMaterialConfig.SCM_ID), is("Could not find SCM for given scm-id: [scm-id].")); }
public static PluggableSCMMaterialConfig fromJSON(JsonReader jsonReader, ConfigHelperOptions options) { PluggableSCMMaterialConfig pluggableSCMMaterialConfig = new PluggableSCMMaterialConfig(); CruiseConfig cruiseConfig = options.getCruiseConfig(); if (cruiseConfig != null) { String ref = jsonReader.getString("ref"); pluggableSCMMaterialConfig.setSCMConfig(cruiseConfig.getSCMs().find(ref)); pluggableSCMMaterialConfig.setScmId(ref); } jsonReader.readStringIfPresent("destination", pluggableSCMMaterialConfig::setFolder); jsonReader.optJsonObject("filter").ifPresent(filterReader -> { pluggableSCMMaterialConfig.setFilter(FilterRepresenter.fromJSON(filterReader)); }); return pluggableSCMMaterialConfig; } }
public static PluggableSCMMaterialConfig fromJSON(JsonReader jsonReader, ConfigHelperOptions options) { PluggableSCMMaterialConfig pluggableSCMMaterialConfig = new PluggableSCMMaterialConfig(); CruiseConfig cruiseConfig = options.getCruiseConfig(); if (cruiseConfig != null) { String ref = jsonReader.getString("ref"); pluggableSCMMaterialConfig.setSCMConfig(cruiseConfig.getSCMs().find(ref)); pluggableSCMMaterialConfig.setScmId(ref); } jsonReader.readStringIfPresent("destination", pluggableSCMMaterialConfig::setFolder); jsonReader.optJsonObject("filter").ifPresent(filterReader -> { pluggableSCMMaterialConfig.setFilter(FilterRepresenter.fromJSON(filterReader)); }); return pluggableSCMMaterialConfig; } }
@Test public void shouldAddErrorIDestinationIsNotValid() throws Exception { ConfigSaveValidationContext configSaveValidationContext = mock(ConfigSaveValidationContext.class); SCM scmConfig = mock(SCM.class); when(configSaveValidationContext.findScmById(anyString())).thenReturn(scmConfig); when(scmConfig.doesPluginExist()).thenReturn(true); PluggableSCMMaterialConfig pluggableSCMMaterialConfig = new PluggableSCMMaterialConfig(null, scmConfig, "/usr/home", null); pluggableSCMMaterialConfig.setScmId("scm-id"); pluggableSCMMaterialConfig.validateConcreteMaterial(configSaveValidationContext); assertThat(pluggableSCMMaterialConfig.errors().getAll().size(), is(1)); assertThat(pluggableSCMMaterialConfig.errors().on(PluggableSCMMaterialConfig.FOLDER), is("Dest folder '/usr/home' is not valid. It must be a sub-directory of the working folder.")); pluggableSCMMaterialConfig = new PluggableSCMMaterialConfig(null, scmConfig, "./../crap", null); pluggableSCMMaterialConfig.setScmId("scm-id"); pluggableSCMMaterialConfig.validateConcreteMaterial(configSaveValidationContext); assertThat(pluggableSCMMaterialConfig.errors().getAll().size(), is(2)); assertThat(pluggableSCMMaterialConfig.errors().on(PluggableSCMMaterialConfig.FOLDER), is("Invalid directory name './../crap'. It should be a valid relative path.")); }
@Test public void shouldAddErrorIfMaterialDoesNotHaveASCMId() throws Exception { pluggableSCMMaterialConfig.setScmId(null); pluggableSCMMaterialConfig.validateConcreteMaterial(new ConfigSaveValidationContext(null, null)); assertThat(pluggableSCMMaterialConfig.errors().getAll().size(), is(1)); assertThat(pluggableSCMMaterialConfig.errors().on(PluggableSCMMaterialConfig.SCM_ID), is("Please select a SCM")); }