public void add(String name, String value) { add(new EnvironmentVariable(name, value, false)); }
public static EnvironmentVariables toEnvironmentVariables(EnvironmentVariablesConfig environmentVariableConfigs) { final EnvironmentVariables environmentVariables = new EnvironmentVariables(); for (EnvironmentVariableConfig environmentVariableConfig : environmentVariableConfigs) { environmentVariables.add(new EnvironmentVariable(environmentVariableConfig)); } return environmentVariables; }
@Test public void addTo_shouldAddEnvironmentVariablesToEnvironmentVariableContext() { final EnvironmentVariableContext environmentVariableContext = mock(EnvironmentVariableContext.class); final EnvironmentVariables environmentVariables = new EnvironmentVariables( new EnvironmentVariable("foo", "bar"), new EnvironmentVariable("baz", "car", true) ); environmentVariables.addTo(environmentVariableContext); verify(environmentVariableContext, times(1)).setProperty("foo", "bar", false); verify(environmentVariableContext, times(1)).setProperty("baz", "car", true); }
@Test public void addToIfExists_shouldAddEnvironmentVariableToEnvironmentVariableContext() { final EnvironmentVariableContext environmentVariableContext = mock(EnvironmentVariableContext.class); final EnvironmentVariables environmentVariables = new EnvironmentVariables( new EnvironmentVariable("foo", "bar"), new EnvironmentVariable("baz", "car", true) ); when(environmentVariableContext.hasProperty("foo")).thenReturn(false); when(environmentVariableContext.hasProperty("baz")).thenReturn(true); environmentVariables.addToIfExists(environmentVariableContext); verify(environmentVariableContext, times(0)).setProperty("foo", "bar", false); verify(environmentVariableContext, times(1)).setProperty("baz", "car", true); }
@Test public void shouldCreateEnvironmentVariableFromEnvironmentVariableConfig() { final EnvironmentVariableConfig environmentVariableConfig = new EnvironmentVariableConfig("foo", "bar"); assertThat(new EnvironmentVariable(environmentVariableConfig), is(new EnvironmentVariable("foo", "bar"))); final EnvironmentVariableConfig secureEnvironmentVariableConfig = new EnvironmentVariableConfig(new GoCipher(), "foo", "bar", true); assertThat(new EnvironmentVariable(secureEnvironmentVariableConfig), is(new EnvironmentVariable("foo", "bar", true))); }
@Test public void addTo_shouldAddEnvironmentVariableToEnvironmentVariableContext() { final EnvironmentVariableContext environmentVariableContext = mock(EnvironmentVariableContext.class); final EnvironmentVariable environmentVariable = new EnvironmentVariable("foo", "bar"); environmentVariable.addTo(environmentVariableContext); verify(environmentVariableContext, times(1)).setProperty("foo", "bar", false); }
@Test public void shouldGetOnlyInsecureValues() { EnvironmentVariables variables = new EnvironmentVariables( new EnvironmentVariable("key1", "value1", true), new EnvironmentVariable("key2", "value2") ); assertThat(variables.getInsecureEnvironmentVariableOrDefault("key1", "def1"), is("def1")); assertThat(variables.getInsecureEnvironmentVariableOrDefault("key2", null), is("value2")); assertThat(variables.getInsecureEnvironmentVariableOrDefault("key3", null), is(nullValue())); }
@Test public void shouldOverrideWithProvidedOverrideValues() { EnvironmentVariables variables = new EnvironmentVariables( new EnvironmentVariable("key1", "value1"), new EnvironmentVariable("key2", "value2") ); EnvironmentVariables variablesForOverride = new EnvironmentVariables( new EnvironmentVariable("key2", "value2-new") ); variables.overrideWith(variablesForOverride); assertThat(variables.getInsecureEnvironmentVariableOrDefault("key1", null), is("value1")); assertThat(variables.getInsecureEnvironmentVariableOrDefault("key2", null), is("value2-new")); assertThat(variables.getInsecureEnvironmentVariableOrDefault("key3", null), is(nullValue())); } }
@Test public void addToIfExists_shouldNotAddEnvironmentVariableToEnvironmentVariableContextWhenVariableIDoesNotExistInContext() { final EnvironmentVariableContext environmentVariableContext = mock(EnvironmentVariableContext.class); final EnvironmentVariable environmentVariable = new EnvironmentVariable("foo", "bar"); when(environmentVariableContext.hasProperty("foo")).thenReturn(false); environmentVariable.addToIfExists(environmentVariableContext); verify(environmentVariableContext, times(0)).setProperty("foo", "bar", false); }
@Test public void addToIfExists_shouldAddEnvironmentVariableToEnvironmentVariableContextWhenVariableIsAlreadyExistInContext() { final EnvironmentVariableContext environmentVariableContext = mock(EnvironmentVariableContext.class); final EnvironmentVariable environmentVariable = new EnvironmentVariable("foo", "bar"); when(environmentVariableContext.hasProperty("foo")).thenReturn(true); environmentVariable.addToIfExists(environmentVariableContext); verify(environmentVariableContext, times(1)).setProperty("foo", "bar", false); }
@Test public void shouldRespectTriggerVariablesOverConfigVariables() { final EnvironmentVariables environmentVariables = new EnvironmentVariables(Arrays.asList( new EnvironmentVariable("blah", "value"), new EnvironmentVariable("foo", "bar"))); final EnvironmentVariables triggerEnvironmentVariables = new EnvironmentVariables(Arrays.asList( new EnvironmentVariable("blah", "override"), new EnvironmentVariable("another", "anotherValue"))); DefaultJobPlan original = new DefaultJobPlan(new Resources(), new ArrayList<>(), new ArrayList<>(), 0, new JobIdentifier(), "uuid", environmentVariables, triggerEnvironmentVariables, null); EnvironmentVariableContext variableContext = new EnvironmentVariableContext(); original.applyTo(variableContext); assertThat(variableContext.getProperty("blah"), is("override")); assertThat(variableContext.getProperty("foo"), is("bar")); //becuase its a security issue to let operator set values for unconfigured variables assertThat(variableContext.getProperty("another"), is(nullValue())); }
@Override protected void doInTransactionWithoutResult(TransactionStatus status) { for (EnvironmentVariable variable : variables) { EnvironmentVariable environmentVariableConfig = new EnvironmentVariable(variable.getName(), variable.getValue(), variable.isSecure()); environmentVariableConfig.setEntityId(entityId); environmentVariableConfig.setEntityType(type.toString()); sessionFactory.getCurrentSession().save(environmentVariableConfig); } } });
@Test public void getDisplayValue_shouldReturnOriginalValueIfVariableIsNotSecure() { final EnvironmentVariable environmentVariable = new EnvironmentVariable("foo", "bar", false); assertThat(environmentVariable.getDisplayValue(), is("bar")); } }
@Test public void getDisplayValue_shouldReturnMaskedValueIfVariableIsSecure() { final EnvironmentVariable environmentVariable = new EnvironmentVariable("foo", "bar", true); assertThat(environmentVariable.getDisplayValue(), is("****")); }
@Test public void add_shouldAddEnvironmentVariable() { final EnvironmentVariables environmentVariables = new EnvironmentVariables(); assertThat(environmentVariables, hasSize(0)); environmentVariables.add("foo", "bar"); assertThat(environmentVariables, hasSize(1)); assertThat(environmentVariables, contains(new EnvironmentVariable("foo", "bar"))); }
@Test public void toEnvironmentVariables_shouldConvertEnvironmentVariablesConfigToEnvironmentVariable() { final EnvironmentVariablesConfig environmentVariableConfigs = new EnvironmentVariablesConfig(Arrays.asList( new EnvironmentVariableConfig("foo", "bar"), new EnvironmentVariableConfig(new GoCipher(), "baz", "car", true) )); final EnvironmentVariables environmentVariables = EnvironmentVariables.toEnvironmentVariables(environmentVariableConfigs); assertThat(environmentVariables, containsInAnyOrder( new EnvironmentVariable("foo", "bar", false), new EnvironmentVariable("baz", "car", true) )); }
@Test public void shouldCreatePipelineInstanceWithEnvironmentVariablesOverriddenAccordingToScope() { StageConfig stageConfig = StageConfigMother.custom("stage", "foo", "bar"); JobConfig fooConfig = stageConfig.jobConfigByConfigName(new CaseInsensitiveString("foo")); fooConfig.addVariable("foo", "foo"); JobConfig barConfig = stageConfig.jobConfigByConfigName(new CaseInsensitiveString("bar")); barConfig.addVariable("foo", "bar"); MaterialConfigs materialConfigs = MaterialConfigsMother.defaultMaterialConfigs(); PipelineConfig pipelineConfig = new PipelineConfig(new CaseInsensitiveString("pipeline"), materialConfigs, stageConfig); DefaultSchedulingContext context = new DefaultSchedulingContext("anonymous"); Pipeline instance = instanceFactory.createPipelineInstance(pipelineConfig, ModificationsMother.forceBuild(pipelineConfig), context, "some-md5", new TimeProvider()); assertThat(instance.findStage("stage").findJob("foo").getPlan().getVariables(), is(new EnvironmentVariables(Arrays.asList(new EnvironmentVariable("foo", "foo"))))); assertThat(instance.findStage("stage").findJob("bar").getPlan().getVariables(), is(new EnvironmentVariables(Arrays.asList(new EnvironmentVariable("foo", "bar"))))); }
@Test public void shouldOverrideEnvironmentVariablesPresentInTheScheduleContextToJobPlan() { EnvironmentVariablesConfig variablesConfig = new EnvironmentVariablesConfig(); variablesConfig.add("blahVar", "blahVal"); variablesConfig.add("differentVar", "differentVal"); JobConfig jobConfig = new JobConfig("foo"); jobConfig.setVariables(variablesConfig); EnvironmentVariablesConfig overridenConfig = new EnvironmentVariablesConfig(); overridenConfig.add("blahVar", "originalVal"); overridenConfig.add("secondVar", "secondVal"); SchedulingContext context = new DefaultSchedulingContext(); context = context.overrideEnvironmentVariables(overridenConfig); JobPlan plan = instanceFactory.createJobPlan(jobConfig, context); assertThat(plan.getVariables().size(), is(3)); assertThat(plan.getVariables(), hasItem(new EnvironmentVariable("blahVar", "blahVal"))); assertThat(plan.getVariables(), hasItem(new EnvironmentVariable("secondVar", "secondVal"))); assertThat(plan.getVariables(), hasItem(new EnvironmentVariable("differentVar", "differentVal"))); }
@Test public void shouldAddEnvironmentVariablesToJobPlan() { EnvironmentVariablesConfig variablesConfig = new EnvironmentVariablesConfig(); variablesConfig.add("blahVar", "blahVal"); JobConfig jobConfig = new JobConfig("foo"); jobConfig.setVariables(variablesConfig); SchedulingContext context = new DefaultSchedulingContext(); JobPlan plan = instanceFactory.createJobPlan(jobConfig, context); assertThat(plan.getVariables(), hasItem(new EnvironmentVariable("blahVar", "blahVal"))); }
@Test public void shouldAddEnvironmentVariablesPresentInTheScheduleContextToJobPlan() { JobConfig jobConfig = new JobConfig("foo"); EnvironmentVariablesConfig variablesConfig = new EnvironmentVariablesConfig(); variablesConfig.add("blahVar", "blahVal"); SchedulingContext context = new DefaultSchedulingContext("Loser"); context = context.overrideEnvironmentVariables(variablesConfig); JobPlan plan = instanceFactory.createJobPlan(jobConfig, context); assertThat(plan.getVariables(), hasItem(new EnvironmentVariable("blahVar", "blahVal"))); }