2016-09-09 2 views
0

У меня есть тест, выполняющийся против моего сервера Spring Config, чтобы проверить, работает ли приложение. Я провел несколько ручных тестов, и все отлично работает с базовым запуском приложения Spring Confg Boot, но я хочу, чтобы модульный тест доказывал это решение и мог тестировать мое хранилище ключей и многое другое.Тест Spring Config с ApplicationContextInitializer - как расшифровать?

Я добавил пользовательскую реализацию 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...

Там нет исключений в списке.

Какой кусок головоломки мне не хватает?

ответ

1

Похоже на открытый вопрос весной. https://jira.spring.io/browse/SPR-12420. Одно возможное решение было предоставлено на должности СО Process Spring Boot externalized property values

+0

Интересно. Я удивлен, что они не сталкивались с этим при написании собственных тестов в проекте; но мы все пропускаем что-то здесь и там. К сожалению, на самом деле это ответ! Надеемся, что ошибка будет устранена в следующем обновлении. –

Смежные вопросы