Я пытаюсь проверить класс ресурсов Джерси в приложении Dropwizard.У меня есть фильтр, подобный этому:
@Authenticate
@Provider
public class MyFilter implements ContainerRequestFilter {
@Inject
public MyFilter(SessionService sessionService) {
this.sessionService = sessionService;
}
@Override
public void filter(final ContainerRequestContext requestContext)
throws IOException {
final String token = getToken(); // Gets token from requestContext
Optional<Session> session = sessionService.getSession(token);
requestContext.setProperty("Session", session.get());
}
}
Ресурс такой:
@Authenticate
public Role createRole(@Valid RoleRequest role,
@HeaderParam(AUTHORIZATION) String authorisation,
@Context ContainerRequestContext context) throws Exception {
Session session = (Session) context.getProperty("Session");
return roleService.createRole(role, session.getNamespace(), session.getUserId());
}
Моя цель состоит в том, чтобы смоделировать сеанс в контексте, чтобы в классе ресурса я могзаглушить сессию с моими ценностями.
Я пытаюсь протестировать ресурс, который использует этот фильтр.ResourceTest выглядит так:
public class ResourceTest {
@Test
public void testCreateRole() {
Client client = resources.client();
Response roleRequest = client
.target("/v1/role")
.request()
.header("Authorization", "Bearer Token123")
.post(Entity.json(getRoleRequest()));
Assert.assertEquals(roleRequest, getRoleRequest());
}
}
Однако, когда я запускаю тест, он даже не входит в фильтр.Как мне посмеяться над полями фильтра?Я использую dropwizard v1.3.5