public boolean validateTree(ValidationContext validationContext) { validate(validationContext); boolean isValid = errors.isEmpty(); ValidationContext contextForChildren = validationContext.withParent(this); isValid = jobConfigs.validateTree(contextForChildren) && isValid; isValid = approval.validateTree(contextForChildren) && isValid; isValid = variables.validateTree(contextForChildren) && isValid; return isValid; }
@Override public boolean validateTree(ConfigSaveValidationContext validationContext, CruiseConfig preprocessedConfig) { validate(validationContext); preprocessedConfig.getEnvironments().validate(validationContext); validateContainsOnlyUuids(preprocessedConfig.agents().acceptedUuids()); boolean isValid = ErrorCollector.getAllErrors(this).isEmpty(); ValidationContext contextForChildren = validationContext.withParent(this); isValid = isValid && variables.validateTree(contextForChildren); return isValid; }
@Test public void shouldReturnFalseIfAnyDescendentIsInValid(){ EnvironmentVariablesConfig variables = mock(EnvironmentVariablesConfig.class); JobConfigs jobConfigs = mock(JobConfigs.class); Approval approval = mock(Approval.class); when(variables.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(false); when(jobConfigs.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(false); when(approval.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(false); StageConfig stageConfig = new StageConfig(new CaseInsensitiveString("p1"), jobConfigs); stageConfig.setVariables(variables); stageConfig.setApproval(approval); boolean isValid = stageConfig.validateTree(PipelineConfigSaveValidationContext.forChain(true, "group", new PipelineConfig(), stageConfig)); assertFalse(isValid); verify(jobConfigs).validateTree(any(PipelineConfigSaveValidationContext.class)); verify(variables).validateTree(any(PipelineConfigSaveValidationContext.class)); verify(approval).validateTree(any(PipelineConfigSaveValidationContext.class)); } }
@Test public void shouldReturnTrueIfAllDescendentsAreValid(){ EnvironmentVariablesConfig variables = mock(EnvironmentVariablesConfig.class); JobConfigs jobConfigs = mock(JobConfigs.class); Approval approval = mock(Approval.class); when(variables.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(true); when(jobConfigs.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(true); when(approval.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(true); StageConfig stageConfig = new StageConfig(new CaseInsensitiveString("p1"), jobConfigs); stageConfig.setVariables(variables); stageConfig.setApproval(approval); boolean isValid = stageConfig.validateTree(PipelineConfigSaveValidationContext.forChain(true, "group", new PipelineConfig(), stageConfig)); assertTrue(isValid); verify(jobConfigs).validateTree(any(PipelineConfigSaveValidationContext.class)); verify(variables).validateTree(any(PipelineConfigSaveValidationContext.class)); verify(approval).validateTree(any(PipelineConfigSaveValidationContext.class)); }
when(artifactConfigs.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(false); when(tabs.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(false); when(variables.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(false); verify(artifactConfigs).validateTree(childContext); verify(tabs).validateTree(childContext); verify(variables).validateTree(childContext);
public boolean validateTree(ValidationContext validationContext) { validate(validationContext); boolean isValid = errors.isEmpty(); ValidationContext contextForChildren = validationContext.withParent(this); isValid = tasks.validateTree(contextForChildren) && isValid; isValid = variables.validateTree(contextForChildren) && isValid; isValid = resourceConfigs.validateTree(contextForChildren) && isValid; isValid = artifactPropertiesConfig.validateTree(contextForChildren) && isValid; isValid = tabs.validateTree(contextForChildren) && isValid; isValid = artifactConfigs.validateTree(contextForChildren) && isValid; return isValid; }
when(artifactConfigs.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(true); when(tabs.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(true); when(variables.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(true); verify(artifactConfigs).validateTree(childContext); verify(tabs).validateTree(childContext); verify(variables).validateTree(childContext);
when(materialConfigs.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(true); when(paramsConfig.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(true); when(variables.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(true); when(trackingTool.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(true); when(mingleConfig.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(true); verify(materialConfigs).validateTree(any(PipelineConfigSaveValidationContext.class)); verify(paramsConfig).validateTree(any(PipelineConfigSaveValidationContext.class)); verify(variables).validateTree(any(PipelineConfigSaveValidationContext.class)); verify(trackingTool).validateTree(any(PipelineConfigSaveValidationContext.class)); verify(mingleConfig).validateTree(any(PipelineConfigSaveValidationContext.class));
when(materialConfigs.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(false); when(paramsConfig.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(false); when(variables.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(false); when(trackingTool.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(false); when(mingleConfig.validateTree(any(PipelineConfigSaveValidationContext.class))).thenReturn(false); verify(materialConfigs).validateTree(any(PipelineConfigSaveValidationContext.class)); verify(paramsConfig).validateTree(any(PipelineConfigSaveValidationContext.class)); verify(variables).validateTree(any(PipelineConfigSaveValidationContext.class)); verify(trackingTool).validateTree(any(PipelineConfigSaveValidationContext.class)); verify(mingleConfig).validateTree(any(PipelineConfigSaveValidationContext.class));
@Test public void shouldValidateTree(){ EnvironmentVariablesConfig variables = mock(EnvironmentVariablesConfig.class); JobConfigs jobConfigs = mock(JobConfigs.class); Approval approval = mock(Approval.class); StageConfig stageConfig = new StageConfig(new CaseInsensitiveString("stage$"), jobConfigs, approval); stageConfig.setVariables(variables); stageConfig.validateTree(PipelineConfigSaveValidationContext.forChain(true, "group", new PipelineConfig(), stageConfig)); assertThat(stageConfig.errors().on(StageConfig.NAME), contains("Invalid stage name 'stage$'")); ArgumentCaptor<PipelineConfigSaveValidationContext> captor = ArgumentCaptor.forClass(PipelineConfigSaveValidationContext.class); verify(jobConfigs).validateTree(captor.capture()); PipelineConfigSaveValidationContext childContext = captor.getValue(); assertThat(childContext.getParent(), is(stageConfig)); verify(approval).validateTree(childContext); verify(variables).validateTree(childContext); }
isValid = pipelineConfig.materialConfigs().validateTree(contextForChildren) && isValid; isValid = pipelineConfig.getParams().validateTree(contextForChildren) && isValid; isValid = pipelineConfig.getVariables().validateTree(contextForChildren) && isValid; if (pipelineConfig.getTrackingTool() != null) isValid = pipelineConfig.getTrackingTool().validateTree(contextForChildren) && isValid;
@Test public void shouldValidateTree() { environmentVariablesConfig = new EnvironmentVariablesConfig(); EnvironmentVariableConfig one = new EnvironmentVariableConfig("FOO", "BAR"); EnvironmentVariableConfig two = new EnvironmentVariableConfig("FOO", "bAZ"); EnvironmentVariableConfig three = new EnvironmentVariableConfig("", "bAZ"); environmentVariablesConfig.add(one); environmentVariablesConfig.add(two); environmentVariablesConfig.add(three); environmentVariablesConfig.validateTree(PipelineConfigSaveValidationContext.forChain(true, "group", new PipelineConfig(new CaseInsensitiveString("p1"), null))); assertThat(one.errors().isEmpty(), is(false)); assertThat(one.errors().firstError(), contains("Environment Variable name 'FOO' is not unique for pipeline 'p1'")); assertThat(two.errors().isEmpty(), is(false)); assertThat(two.errors().firstError(), contains("Environment Variable name 'FOO' is not unique for pipeline 'p1'")); assertThat(three.errors().isEmpty(), is(false)); assertThat(three.errors().firstError(), contains("Environment Variable cannot have an empty name for pipeline 'p1'.")); }