Quarkus:如何禁用/模拟保险库进行单元测试

发布于 2025-01-29 04:23:35 字数 706 浏览 4 评论 0原文

我目前正在面临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测试中是否有一种方法可以禁用金库,例如在Springboot上(带有属性)?或创建可以在本地使用的保险库模拟?

谢谢。

I'm currently facing an issue with Quarkus and Vault.

When I launch JUnit tests, Vault trying to start and it failed because Vault configuration is not setup to run locally.

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)

My question is, is there a way to disable Vault during Junit tests on Quarkus like on SpringBoot (with property) ? Or create Vault Mock which can be used locally ?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冰雪之触 2025-02-05 04:23:35

您可以将所有保险库配置指令前缀以“%prod”。并从测试配置文件中的Prod配置文件中检索到的Inject值。

在src/main/resources/

# 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

SECRET=what-you-want

application.properties

You can prefix all your vault configuration directives by "%prod." and inject values retrieved from vault in prod profile in your test configuration file.

In 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

In src/test/resources/application.properties

SECRET=what-you-want

Hope this helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文