2016-09-09 24 views
0

我有一個測試運行在我的Spring Config服務器上以驗證應用程序正在工作。我做了一些手動測試,一切正常,基本啓動了Spring Confg Boot應用程序,但是我想要一個單元測試來證明解決方案,並且能夠測試我的開發密鑰庫以及什麼。使用ApplicationContextInitializer進行Spring配置測試 - 如何解密?

我添加了一個自定義的ApplicationContextInitializer實現來在啓動執行時加載來自application-test.yml的數據。數據未加密時一切正常;但是,當我添加一個加密屬性時,它不會解密它。

我使用的實現是:

public class TestYamlFileApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> { 

    @Override 
    public void initialize(ConfigurableApplicationContext applicationContext) { 
    try { 
     Resource resource = applicationContext.getResource(CLASSPATH_URI); 
     YamlPropertySourceLoader sourceLoader = new YamlPropertySourceLoader(); 
     PropertySource<?> testProperties = sourceLoader.load("yamlTestProperties", resource, null); 
     applicationContext.getEnvironment().getPropertySources().addFirst(testProperties); 
    } catch (IOException e) { 
     throw new RuntimeException(e); 
    } 
    } 
} 

application-test.yml是:

my: 
    encrypted: 
    parameter: '{cipher}AQB8C/1v9J+jPQZG...' 

server: 
    port: 0 

spring: 
    profiles: 
    active: native 

encrypt: 
    key-store: 
    location: classpath*:/security/development-test.jks 
    alias: DevelopmentTest 
    secret: SomeSecretPassword123 
    password: SomeStorePassword123 

我的測試與@ContextConfiguration (initializers = TestYamlFileApplicationContextInitializer.class)註釋踢它關閉。

測試運行使用基本檢查:

@Autowired 
Environment env; 

@Test 
public void testStuff() { 
    String theProp = env.getProperty("my.encrypted.parameter"); 
    System.err.println(theProp); 
} 

輸出是:{cipher}AQB8C/1v9J+jPQZG...

沒有列出任何例外。

我錯過了什麼?

回答

相關問題