我现在正面临着Quarkus和Vault的问题。
当我启动JUnit测试时,Vault试图启动,但失败了,因为Vault配置没有设置为在本地运行。
Caused by: java.lang.RuntimeException: Failed to start quarkus
at io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:912)
at io.quarkus.runtime.Application.start(Application.java:101)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Caused by: java.lang.NullPointerException
at io.quarkus.vault.runtime.config.VaultConfigSource.getSecretConfig(VaultConfigSource.java:78)
at io.quarkus.vault.runtime.config.VaultConfigSource.getValue(VaultConfigSource.java:59)
我的问题是,是否有一种方法可以在Quarkus上的Junit测试期间禁用Vault,就像在SpringBoot(带属性)上一样?或者创建可以在本地使用的Vault Mock ?
谢谢。
您可以在所有的vault配置指令前加上"%prod."并在测试配置文件中注入从prod配置文件中的vault中检索到的值。
在src/main/资源/application.properties
# Secrets retrieved via vault server
## vault server
%prod.quarkus.vault.url=https://your-vault-server
%prod.quarkus.vault.kv-secret-engine-version=2
%prod.quarkus.vault.kv-secret-engine-mount-path=secret
## vault authentication using role-id et role-secret-id (read from pod env)
%prod.quarkus.vault.authentication.app-role.role-id=${ROLE_ID}
%prod.quarkus.vault.authentication.app-role.secret-id=${ROLE_SECRET_ID}
## paths within the kv secret engine where are located the vault secrets to read
%prod.quarkus.vault.secret-config-kv-path=your-secret-path/SECRET
%prod.quarkus.vault.renew-grace-period=60
在src/测试/资源/application.properties
SECRET=what-you-want
希望有帮助