- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经基于 jersey 的 ContainerRequestFilter 构建了一个小的身份验证过滤器。
当请求未经授权时,这会抛出一些 WebAplicationExceptions,我想对此进行测试。
我已经有了这个,用于检查在调用过滤器方法并且请求未经授权时是否引发了异常:
@Category(CommitTest.class)
public class BasicAuthenticationFilterTest {
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void someInvalidAuthTest() throws IOException {
//...setup auth filter, and mock objects
//Expect an WebApplicationException
thrown.expect(WebApplicationException.class);
authenticationFilter.filter(mockRequestContext);
}
}
我可以很好地完成这项工作,并且我的测试运行良好。但我希望能够验证异常的响应。
编辑
澄清一下,我通常会这样抛出异常:
ApiError error = new ApiError(1, "UNAUTHORIZED", "No or empty authorization header");
throw new WebApplicationException(
error.getMessage(),
Response.status(Response.Status.UNAUTHORIZED).entity(error).build());
我想验证异常中抛出的响应和实体。现在我知道这甚至不可能。但我必须问清楚。
或者我应该以完全不同的方式进行此测试,并实际设置一个使用我的 auth-filter 的内存类型“服务器”,并向它发出实际请求(然后验证响应?)
最佳答案
您可以更新您的规则以检查异常消息,但要获得响应实体,可能更容易尝试/捕获,如下所示:
@Category(CommitTest.class)
public class BasicAuthenticationFilterTest {
@Test
public void someInvalidAuthTest() throws IOException {
//...setup auth filter, and mock objects
try {
authenticationFilter.filter(mockRequestContext);
fail("expect a WebApplicationException");
}
catch (WebApplicationException e) {
Response r = e.getResponse();
// validate status code
assertEquals(Response.Status.UNAUTHORIZED, r.getStatusInfo());
// validate entity
ApiError error = r.readEntity(ApiError.class);
assertEquals("No or empty authorization header", error.getMessage());
}
}
}
关于ContainerRequestFilter 上的 junit 测试 - 验证 WebApplicationException 的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22804538/
我正在尝试使用 ContainerRequestFilter 对基于 Tomcat 的 Jersey 应用程序强制执行某些身份验证。我关注了this document 。问题:过滤器永远不会被触发 过
我正在尝试使用 ContainerRequestFilter 对基于 Tomcat 的 Jersey 应用程序强制执行某些身份验证。我关注了this document 。问题:过滤器永远不会被触发 过
我想对每个请求进行全局检查。因此,我使用 ContainerRequestFilter (没有 @PreMatching )并抛出 WebApplicationException如果检查未通过,则响应
我正在尝试几个小时来使主题中解释的机制起作用:Best practice for REST token-based authentication with JAX-RS and Jersey 但在调试
我有一个 ContainerRequestFilter 实现,例如HeaderRequestFilter,我想让它为每个请求实例化。我正在使用 Spring 和 Jersey 。我尝试将 @Scope
我刚刚开始学习如何编写 REST Web 服务代码,并且已经坚持了好几天了。我正在使用 Jersey 2 编写一个具有基于 header 的过滤功能的示例应用程序,并部署在 Tomee-plus 1.
我们计划为我们的 REST API 使用 Jersey 的引用实现。作为原型(prototype)工作,我也在使用 ContainerRequestFilters 并实现了其中的多个。有没有一种方法可
我正在尝试通过创建一个小的 RESTful 服务来学习 Jersey 。我想出于特定原因使用过滤器(就像我想使用 ContainerResponseFilter for CORS header 以允许
我正在使用 dropwizard 和 Jersey ,我通过以下方法定义了 ContainerRequestFilter 的自定义提供程序 import javax.ws.rs.ext.Provide
为了验证 api key ,我使用 ContainerRequestFilter 来读取 JSON 负载并解析 api key 。我有以下方法。 public ContainerRequest fil
我正在尝试在 Tomcat 8 中使用 RESTeasy 3.0.17FINAL 实现身份验证过滤器。这里有我的 web.xml 条目。 org.jboss.restea
我知道过滤器是用来处理请求的,并且可以用 http header 和 httpmethods 做一些事情,但是我很困惑 clientrequestfilter 和 containerrequestfi
我有一个 Jersey REST API 并且正在使用 ContainerRequestFilter 来处理授权。我还在所有端点上使用 @ManagedAsync,这样我的 API 就可以为数千个并发
我如何/应该如何将对象从 ContainerRequestFilter 传递到 (JAX-RS) Resteasy 版本 3.0.11 中的(匹配后)资源,该版本嵌入了 undertow 并使用了 G
我有点难以理解其余拦截器注释如何添加不同的值,这些值稍后会在过滤器中可见。鉴于下面的代码,我希望一旦进入过滤器,权限值就会包含 foo 和 bar,但它们是空的。任何帮助将不胜感激。 注释 packa
我正在使用 JAX-RS/Jersey 开发 WebService。 我设置了一个ContainerRequestFilter,其目的是验证用户。我只需要通过身份验证保护一些路径,其余的就可以提供给所
我有一个受 Shibboleth(SSO 实现)保护的 Jersey API。 Shibboleth 将登录用户的 ID 放入请求属性中。在后端,我使用 Shiro 进行授权。 Shiro 希望了解登
我正在尝试获取 ContainerRequestFilter 对象中的方法注释。 Controller : @GET @RolesAllowed("ADMIN") public String mess
我有这门课,想记录休息请求: public class RequestFilter implements ContainerRequestFilter { private static fin
我有下面的代码,它工作正常。我的问题是代码下面的天气是否是线程安全的。通过阅读 Servlet Filter 和 Container*Filter 概念,我感到困惑。 如何使这个过滤器成为线程安全的?
我是一名优秀的程序员,十分优秀!