@Override public ConfigSaveValidationContext withParent(Validatable current) { return new ConfigSaveValidationContext(current, this); }
private <T> T getFirstOfType(Class<T> klass) { Object o = objectOfType.get(klass); if (o == null) { o = _getFirstOfType(klass); objectOfType.put(klass, o); } return (T) o; }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof ConfigSaveValidationContext)) { return false; } ConfigSaveValidationContext that = (ConfigSaveValidationContext) o; if (immediateParent != null ? !immediateParent.equals(that.immediateParent) : that.immediateParent != null) { return false; } if (parentContext != null ? !parentContext.equals(that.parentContext) : that.parentContext != null) { return false; } return true; }
public static ConfigSaveValidationContext forChain(Validatable... validatables) { ConfigSaveValidationContext tail = new ConfigSaveValidationContext(null); for (Validatable validatable : validatables) { tail = tail.withParent(validatable); } return tail; }
private JobConfig createJobAndValidate(final String name) { JobConfig jobConfig = new JobConfig(name); jobConfig.validate(ConfigSaveValidationContext.forChain(new BasicCruiseConfig())); return jobConfig; } }
@Override public PipelineConfig getPipelineConfigByName(CaseInsensitiveString pipelineName) { return getCruiseConfig().getPipelineConfigByName(pipelineName); }
@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 shouldReturnIfTheContextBelongsToTemplate() { ValidationContext context = ConfigSaveValidationContext.forChain(new TemplatesConfig()); assertThat(context.isWithinPipelines(), is(false)); assertThat(context.isWithinTemplates(), is(true)); }
@Override public ArtifactStores artifactStores() { return this.getCruiseConfig().getArtifactStores(); }
private void shouldBeValid(String ipAddress) throws Exception { AgentConfig agentConfig = new AgentConfig(); agentConfig.setIpAddress(ipAddress); agentConfig.validate(ConfigSaveValidationContext.forChain(agentConfig)); assertThat(agentConfig.errors().on(AgentConfig.IP_ADDRESS), is(nullValue())); } }
public void walk(Handler handler) { walkSubtree(this.rootValidatable, new ConfigSaveValidationContext(null), handler); }
@Override public ConfigReposConfig getConfigRepos() { return getCruiseConfig().getConfigRepos(); }
@Test public void shouldPassValidationWhenUUidIsAvailable() { AgentConfig agentConfig = new AgentConfig("uuid"); agentConfig.validate(ConfigSaveValidationContext.forChain(agentConfig)); assertThat(agentConfig.errors().on(AgentConfig.UUID), is(nullValue())); }
public void validateTree() { ConfigSaveValidationContext validationContext = new ConfigSaveValidationContext(this); for (ConfigurationProperty configurationProperty : settingsMap) { configurationProperty.validate(validationContext); if (configurationProperty.hasErrors()) { hasErrors = true; } } } }
@Override public SecurityConfig getServerSecurityConfig() { return getCruiseConfig().server().security(); }
@Test public void shouldGetPipelineConfigByName() { BasicCruiseConfig cruiseConfig = GoConfigMother.configWithPipelines("p1"); ValidationContext context = ConfigSaveValidationContext.forChain(cruiseConfig); assertThat(context.getPipelineConfigByName(new CaseInsensitiveString("p1")), is(cruiseConfig.allPipelines().get(0))); assertThat(context.getPipelineConfigByName(new CaseInsensitiveString("does_not_exist")), is(nullValue())); }
@Test public void shouldNotValidateEmptyDestinationFolder() { material.setConfigAttributes(Collections.singletonMap(FOLDER, "")); material.validate(new ConfigSaveValidationContext(null)); assertThat(material.errors.isEmpty(), is(true)); }
@Override public boolean doesTemplateExist(CaseInsensitiveString template) { return getCruiseConfig().getTemplates().hasTemplateNamed(template); }
@Test public void shouldCheckForExistenceOfTemplate() { BasicCruiseConfig cruiseConfig = new BasicCruiseConfig(); cruiseConfig.addTemplate(new PipelineTemplateConfig(new CaseInsensitiveString("t1"))); ValidationContext context = ConfigSaveValidationContext.forChain(cruiseConfig); MatcherAssert.assertThat(context.doesTemplateExist(new CaseInsensitiveString("t1")), is(true)); MatcherAssert.assertThat(context.doesTemplateExist(new CaseInsensitiveString("t2")), is(false)); }
private void assertNoError(String port, String view, String expectedKeyForError) { P4MaterialConfig p4MaterialConfig = new P4MaterialConfig(port, view); p4MaterialConfig.validate(new ConfigSaveValidationContext(null)); assertThat(p4MaterialConfig.errors().on(expectedKeyForError), is(nullValue())); }