Насмешка над полем внутри ContainerRequestFilter - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь проверить класс ресурсов Джерси в приложении 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

...