public boolean validateTree(ValidationContext validationContext) { validate(validationContext); return errors().isEmpty(); }
@Test public void shouldNotAllowInvalidResourceNameForAgentResources() throws Exception { ResourceConfig resourceConfig = resource("foo$bar"); resourceConfig.validate(ConfigSaveValidationContext.forChain(new BasicCruiseConfig())); ConfigErrors configErrors = resourceConfig.errors(); assertThat(configErrors.isEmpty(), is(false)); assertThat(configErrors.on(JobConfig.RESOURCES), is(String.format("Resource name 'foo$bar' is not valid. Valid names much match '%s'", ResourceConfig.VALID_REGEX))); }
@Test public void shouldNotAllowParamsInsideResourceNameWhenOutsideTemplates() throws Exception { ResourceConfig resourceConfig = resource("#{PARAMS}"); ValidationContext context = ConfigSaveValidationContext.forChain(new BasicCruiseConfig(), new PipelineConfig()); resourceConfig.validate(context); assertThat(resourceConfig.errors().isEmpty(), is(false)); assertThat(resourceConfig.errors().on(JobConfig.RESOURCES), is(String.format("Resource name '#{PARAMS}' is not valid. Valid names much match '%s'", ResourceConfig.VALID_REGEX))); }
@Test public void shouldAllowValidResourceNameForAgentResources() throws Exception { ResourceConfig resourceConfig = resource("- foo|bar baz.quux"); resourceConfig.validate(ConfigSaveValidationContext.forChain(new BasicCruiseConfig())); assertThat(resourceConfig.errors().isEmpty(), is(true)); }
@Test public void shouldAllowParamsInsideResourceNameWhenInsideTemplates() throws Exception { ResourceConfig resourceConfig = resource("#{PARAMS}"); ValidationContext context = ConfigSaveValidationContext.forChain(new BasicCruiseConfig(), new TemplatesConfig()); resourceConfig.validate(context); assertThat(resourceConfig.errors().isEmpty(), is(true)); }
@Test // Note : At the Resource class level there is no way of accurately validating Parameters. This will only be invalidated when template gets used. public void validate_shouldAllowAnyCombinationOfHashesAndCurlyBraces() throws Exception { ResourceConfig resourceConfig = resource("}#PARAMS{"); ValidationContext context = ConfigSaveValidationContext.forChain(new BasicCruiseConfig(), new TemplatesConfig()); resourceConfig.validate(context); assertThat(resourceConfig.errors().isEmpty(), is(true)); }
@Test public void shouldNotAllowInvalidResourceNamesWhenInsideTemplates() throws Exception { ResourceConfig resourceConfig = resource("#?{45}"); ValidationContext context = ConfigSaveValidationContext.forChain(new BasicCruiseConfig(), new TemplatesConfig()); resourceConfig.validate(context); assertThat(resourceConfig.errors().isEmpty(), is(false)); assertThat(resourceConfig.errors().on(JobConfig.RESOURCES), is("Resource name '#?{45}' is not valid. Valid names can contain valid parameter syntax or valid alphanumeric with hyphens,dots or pipes")); }