diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializer.java b/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializer.java index 179b3a8a..355c661b 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializer.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializer.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2014 the original author or authors. + * Copyright 2013-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -129,8 +129,8 @@ public class EnvironmentDecryptApplicationInitializer implements ConfigurableEnvironment mutable = (ConfigurableEnvironment) parent .getEnvironment(); insert(mutable.getPropertySources(), propertySource); - parent = parent.getParent(); } + parent = parent.getParent(); } } @@ -237,9 +237,4 @@ public class EnvironmentDecryptApplicationInitializer implements } - class DecryptResult { - Map properties = new LinkedHashMap<>(); - boolean hasEncryptedProperties = false; - } - } diff --git a/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializerTests.java b/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializerTests.java index 81522c3c..57de4319 100644 --- a/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializerTests.java +++ b/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2014 the original author or authors. + * Copyright 2013-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,26 +15,30 @@ */ package org.springframework.cloud.bootstrap.encrypt; -import java.util.Collections; -import java.util.Map; - import org.junit.Test; +import org.springframework.context.ApplicationContext; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.core.env.Environment; import org.springframework.core.env.MapPropertySource; import org.springframework.core.env.MutablePropertySources; import org.springframework.core.env.PropertySource; import org.springframework.security.crypto.encrypt.Encryptors; +import java.util.Collections; +import java.util.Map; + import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import static org.springframework.boot.test.util.EnvironmentTestUtils.addEnvironment; import static org.springframework.cloud.bootstrap.encrypt.EnvironmentDecryptApplicationInitializer.DECRYPTED_PROPERTY_SOURCE_NAME; /** * @author Dave Syer - * + * @author Biju Kunjummen */ public class EnvironmentDecryptApplicationInitializerTests { @@ -115,4 +119,23 @@ public class EnvironmentDecryptApplicationInitializerTests { assertThat("decrypted property source had wrong size", decrypted.getSource().size(), is(4)); } + @Test + public void testDecryptNonStandardParent() { + ConfigurableApplicationContext ctx = new AnnotationConfigApplicationContext(); + EnvironmentDecryptApplicationInitializer initializer = + new EnvironmentDecryptApplicationInitializer(Encryptors.noOpText()); + + addEnvironment(ctx, "key:{cipher}value"); + + + ApplicationContext ctxParent = mock(ApplicationContext.class); + when(ctxParent.getEnvironment()).thenReturn(mock(Environment.class)); + + ctx.setParent(ctxParent); + + initializer.initialize(ctx); + + assertEquals("value", ctx.getEnvironment().getProperty("key")); + } + }