junit Quarkus:如何禁用/模拟Vault进行单元测试

b09cbbtk  于 2023-05-17  发布在  其他
关注(0)|答案(1)|浏览(186)

我目前正面临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?
谢谢大家。

ddarikpa

ddarikpa1#

您可以在所有Vault配置指令前加上“%prod.”前缀,并将从Vault检索的值注入测试配置文件的prod配置文件中。
在src/main/resources/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/test/resources/application.properties

SECRET=what-you-want

希望这对你有帮助

相关问题