gpt4 book ai didi

java - Dropwizard 0.8.0 中经过身份验证的资源的单元测试

转载 作者:行者123 更新时间:2023-12-01 11:54:47 25 4
gpt4 key购买 nike

我想在 Dropwizard 0.8.0-rc2 应用程序中测试我的 Jersey 资源。另一个障碍是我使用 TestNG 而不是 JUnit,因此我必须手动执行一些从 DropwizardClientRule 复制的操作。

现在我有一些由 @Auth 保护的资源。在 Dropwizard 0.7.1 中,我将身份 validator 添加到测试应用程序中,如下所示:

DropwizardResourceConfig resourceConfig = DropwizardResourceConfig.forTesting(…);        
Authenticator<BasicCredentials, Identity> authenticator =
credentials -> getAuthorizedIdentity();
resourceConfig.getSingletons().add(
new BasicAuthProvider<>(authenticator, "TEST"));

这里,getAuthorizedIdentity() 将获取一些测试授权。这将被传递给带注释的注入(inject)参数。当然,现在随着 Jersey 2 的出现,情况发生了一些变化。我尝试过:

DropwizardResourceConfig resourceConfig = DropwizardResourceConfig.forTesting(…);
Authenticator<BasicCredentials, Identity> authenticator =
credentials -> getAuthorizedIdentity();
resourceConfig.register(AuthFactory.binder(
new BasicAuthFactory<>(authenticator, "TEST", Identity.class)));

结果是我在所有 protected 资源上都收到 401 错误。调试显示我的身份验证函数根本没有被调用!如果我删除注册,那么我将不再收到 401 错误(因此注册并非没有效果),但现在 protected 资源不 protected ,并为 @Auth 获取 null > 带注释的参数。

那么,如何将身份 validator 添加到测试上下文中才能正常工作?生产代码在几乎相同的行上运行良好。

最佳答案

此问题最近已修复。

参见https://github.com/dropwizard/dropwizard/pull/966

关于java - Dropwizard 0.8.0 中经过身份验证的资源的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28530428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com