给定与服务相对应的URI,我想检索服务的注释(特别是@RolesAllowed)。
这里有个例子:

服务:

@GET
@Path("/example")
@RolesAllowed({ "BASIC_USER", "ADMIN" })
public Response foo() {
    //Service implementation
}


给定字符串“ / example”,我想检索{“ BASIC_USER”,“ ADMIN”}。

我使用RestAssured进行测试,因此,如果可能的话,我更喜欢后者的解决方案。
谢谢。

最佳答案

我对RestAssured并不熟悉,但是我编写了以下Junit测试,它可以工作。也许您可以使其适应于RestAssured。

首先服务:

public class Service {

  @GET
  @Path("/example")
  @RolesAllowed({ "BASIC_USER", "ADMIN" })
  public Response foo() {
    return new Response();
}


}

这是相应的Junit测试:

@Test
public void testFooRoles() throws Exception {
    Method method = Service.class.getMethod("foo");
    Annotation path = method.getDeclaredAnnotation(javax.ws.rs.Path.class);
    assertTrue(((Path) path).value().equals("/example"));

    RolesAllowed annotation = method.getDeclaredAnnotation(RolesAllowed.class);
    List<String> roles = Arrays.asList(annotation.value());
    assertEquals(2, roles.size());
    assertTrue(roles.contains("BASIC_USER"));
    assertTrue(roles.contains("ADMIN"));
}

关于java - 给定URI的注释检索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51782897/

10-15 03:45