public void validate(CruiseConfig cruiseConfig) throws Exception { String taskRepositoryLocation = cruiseConfig.server().getCommandRepositoryLocation(); if (taskRepositoryLocation == null || isEmpty(taskRepositoryLocation.trim())) { throw new Exception("Command Repository Location cannot be empty"); } if(taskRepositoryLocation.startsWith("/") || taskRepositoryLocation.startsWith("\\") || taskRepositoryLocation.contains("~") || taskRepositoryLocation.contains(":")){ throw new Exception("Invalid Repository Location"); } String taskRepositoryRootLocation = systemEnvironment.get(COMMAND_REPOSITORY_DIRECTORY); File taskRepositoryRootDirectory = new File(taskRepositoryRootLocation); File repository = new File(taskRepositoryRootLocation, taskRepositoryLocation); if (!FileUtil.isChildOf(taskRepositoryRootDirectory, repository)) { throw new Exception(String.format("Invalid Repository Location, repository should be a subdirectory under %s", taskRepositoryRootDirectory.getAbsolutePath())); } } }
private String getRepositoryDirectory() { ServerConfig serverConfig = goConfigService.currentCruiseConfig().server(); return String.format("%s/%s", systemEnvironment.get(COMMAND_REPOSITORY_DIRECTORY), serverConfig.getCommandRepositoryLocation()); } }
private void assertValidationPassed(final String repoLocation) throws Exception { when(serverConfig.getCommandRepositoryLocation()).thenReturn(repoLocation); validator.validate(cruiseConfig); }
private void assertValidationFailedWith(final String repoLocation, final String message) { when(serverConfig.getCommandRepositoryLocation()).thenReturn(repoLocation); try { validator.validate(cruiseConfig); fail("should have thrown :" + message); } catch (Exception e) { assertThat(e.getMessage(), is(message)); } } }
@Test public void shouldAddDefaultCommndRepositoryLocationIfNoValueIsGiven() { String content = "<cruise schemaVersion='" + CONFIG_SCHEMA_VERSION + "'>\n" + "<server artifactsdir='artifactsDir'>" + "</server>" + "<pipelines>" + "<pipeline name='some_pipeline'>" + " <materials>" + " <hg url='hgurl' />" + " </materials>" + " <stage name='some_stage'>" + " <jobs>" + " <job name='some_job'>" + " </job>" + " </jobs>" + " </stage>" + "</pipeline>" + "</pipelines>" + "</cruise>"; GoConfigHolder goConfigHolder = ConfigMigrator.loadWithMigration(content); assertThat(goConfigHolder.config.server().getCommandRepositoryLocation(), is("default")); }
@Test public void shouldReturnDefaultTaskRepositoryLocation() { ServerConfig serverConfig = new ServerConfig(null,null, new ServerSiteUrlConfig("http://foo.bar:813"), new ServerSiteUrlConfig()); assertThat(serverConfig.getCommandRepositoryLocation(), is("default")); }
@Test public void shouldReturnTaskRepositoryLocation() { ServerConfig serverConfig = new ServerConfig(null,null, new ServerSiteUrlConfig("http://foo.bar:813"), new ServerSiteUrlConfig()); serverConfig.setCommandRepositoryLocation("foo"); assertThat(serverConfig.getCommandRepositoryLocation(), is("foo")); }