@Test public void shouldCopyOverPasswordWhenConvertingToConfig() throws Exception { SvnMaterial material = new SvnMaterial("abc", "def", "ghi", false); SvnMaterialConfig config = (SvnMaterialConfig) material.config(); assertThat(config.getEncryptedPassword(), is(not(Matchers.nullValue()))); assertThat(config.getPassword(), is("ghi")); }
@Test public void setConfigAttributes_shouldUpdatePasswordWhenPasswordChangedBooleanChanged() throws Exception { SvnMaterialConfig svnMaterial = new SvnMaterialConfig("", "", "notSoSecret", false); Map<String, String> map = new HashMap<>(); map.put(SvnMaterialConfig.PASSWORD, "secret"); map.put(SvnMaterialConfig.PASSWORD_CHANGED, "1"); svnMaterial.setConfigAttributes(map); assertThat(ReflectionUtil.getField(svnMaterial, "password"), is(nullValue())); assertThat(svnMaterial.getPassword(), is("secret")); assertThat(svnMaterial.getEncryptedPassword(), is(new GoCipher().encrypt("secret"))); //Dont change map.put(SvnMaterialConfig.PASSWORD, "Hehehe"); map.put(SvnMaterialConfig.PASSWORD_CHANGED, "0"); svnMaterial.setConfigAttributes(map); assertThat(ReflectionUtil.getField(svnMaterial, "password"), is(nullValue())); assertThat(svnMaterial.getPassword(), is("secret")); assertThat(svnMaterial.getEncryptedPassword(), is(new GoCipher().encrypt("secret"))); map.put(SvnMaterialConfig.PASSWORD, ""); map.put(SvnMaterialConfig.PASSWORD_CHANGED, "1"); svnMaterial.setConfigAttributes(map); assertThat(svnMaterial.getPassword(), is(nullValue())); assertThat(svnMaterial.getEncryptedPassword(), is(nullValue())); }
public SvnMaterial(SvnMaterialConfig config) { this(config.getUrl(), config.getUserName(), config.getPassword(), config.isCheckExternals(), config.getGoCipher()); this.autoUpdate = config.getAutoUpdate(); this.filter = config.rawFilter(); this.invertFilter = config.getInvertFilter(); this.folder = config.getFolder(); this.name = config.getName(); }
private Subversion svn(SvnMaterialConfig svnMaterialConfig) { String cacheKey = cacheKeyForSubversionMaterialCommand(svnMaterialConfig.getFingerprint()); Subversion svnLazyLoaded = (SvnCommand) goCache.get(cacheKey); if (svnLazyLoaded == null || !svnLazyLoaded.getUrl().forCommandline().equals(svnMaterialConfig.getUrl())) { synchronized (cacheKey) { svnLazyLoaded = (SvnCommand) goCache.get(cacheKey); if (svnLazyLoaded == null || !svnLazyLoaded.getUrl().forCommandline().equals(svnMaterialConfig.getUrl())) { svnLazyLoaded = new SvnCommand(svnMaterialConfig.getFingerprint(), svnMaterialConfig.getUrl(), svnMaterialConfig.getUserName(), svnMaterialConfig.getPassword(), svnMaterialConfig.isCheckExternals()); goCache.put(cacheKeyForSubversionMaterialCommand(svnMaterialConfig.getFingerprint()), svnLazyLoaded); } } } return svnLazyLoaded; }
private void expandExternals(MaterialConfig configuredMaterial, MaterialConfigs expandedMaterials) { SvnMaterialConfig svnMaterialConfig = (SvnMaterialConfig) configuredMaterial; if (!svnMaterialConfig.isCheckExternals()) { return; } List<SvnExternal> urLs = svn(svnMaterialConfig).getAllExternalURLs(); for (SvnExternal externalUrl : urLs) { SvnMaterialConfig svnMaterial = new SvnMaterialConfig(externalUrl.getURL(), svnMaterialConfig.getUserName(), svnMaterialConfig.getPassword(), true, svnMaterialConfig.folderFor(externalUrl.getFolder())); svnMaterial.setFilter(svnMaterialConfig.filter()); expandedMaterials.add(svnMaterial); } }
@Test public void shouldNotResolveOptedOutConfigAttributes() throws NoSuchFieldException { PipelineConfig pipelineConfig = PipelineConfigMother.createPipelineConfig("cruise-#{foo}-#{bar}", "dev", "ant"); SvnMaterialConfig svn = (SvnMaterialConfig) pipelineConfig.materialConfigs().get(0); svn.setPassword("#quux-#{foo}-#{bar}"); pipelineConfig.setLabelTemplate("2.1-${COUNT}-#{foo}-bar-#{bar}"); new ParamResolver(new ParamSubstitutionHandlerFactory(params(param("foo", "pavan"), param("bar", "jj"))), fieldCache).resolve(pipelineConfig); assertThat(pipelineConfig.getLabelTemplate(), is("2.1-${COUNT}-pavan-bar-jj")); assertThat(pipelineConfig.name(), is(new CaseInsensitiveString("cruise-#{foo}-#{bar}"))); assertThat(((SvnMaterialConfig) pipelineConfig.materialConfigs().get(0)).getPassword(), is("#quux-#{foo}-#{bar}")); assertThat(pipelineConfig.getClass().getDeclaredField("name").getAnnotation(SkipParameterResolution.class), isA(SkipParameterResolution.class)); }
@Test public void shouldUnderstandEncryptedPasswordAttributeForSvnMaterial() throws Exception { String password = "abc"; String encryptedPassword = new GoCipher().encrypt(password); String content = configWithPipeline(format( "<pipeline name='pipeline1'>" + " <materials>" + " <svn url='svnurl' username='admin' encryptedPassword='%s'/>" + " </materials>" + " <stage name='mingle'>" + " <jobs>" + " <job name='do-something'>" + " </job>" + " </jobs>" + " </stage>" + "</pipeline>", encryptedPassword), CONFIG_SCHEMA_VERSION); GoConfigHolder configHolder = ConfigMigrator.loadWithMigration(content); CruiseConfig cruiseConfig = configHolder.config; SvnMaterialConfig svnMaterialConfig = (SvnMaterialConfig) cruiseConfig.pipelineConfigByName(new CaseInsensitiveString("pipeline1")).materialConfigs().get(0); assertThat(svnMaterialConfig.getEncryptedPassword(), is(encryptedPassword)); assertThat(svnMaterialConfig.getPassword(), is(password)); CruiseConfig configForEdit = configHolder.configForEdit; svnMaterialConfig = (SvnMaterialConfig) configForEdit.pipelineConfigByName(new CaseInsensitiveString("pipeline1")).materialConfigs().get(0); assertThat(svnMaterialConfig.getEncryptedPassword(), is(encryptedPassword)); assertThat(svnMaterialConfig.getPassword(), is("abc")); assertThat(ReflectionUtil.getField(svnMaterialConfig, "password"), is(nullValue())); }
MaterialConfigs materialConfigs = config.allPipelines().get(0).materialConfigs(); SvnMaterialConfig svnMaterialConfig = (SvnMaterialConfig) materialConfigs.get(0); assertThat(svnMaterialConfig.getPassword(), is(plainText)); assertThat(svnMaterialConfig.getEncryptedPassword(), startsWith("AES:")); assertThat(svnMaterialConfig.getFilterAsString(), is("**/*"));
MaterialConfigs materialConfigs = config.allPipelines().get(0).materialConfigs(); SvnMaterialConfig svnMaterialConfig = (SvnMaterialConfig) materialConfigs.get(0); assertThat(svnMaterialConfig.getPassword(), is(clearText)); assertThat(svnMaterialConfig.getEncryptedPassword(), startsWith("AES:")); TfsMaterialConfig tfs = (TfsMaterialConfig) materialConfigs.get(1);