Java 如何测试servlet过滤器添加头Spring MVC和zuul代理

Java 如何测试servlet过滤器添加头Spring MVC和zuul代理,java,spring,spring-mvc,servlets,netflix-zuul,Java,Spring,Spring Mvc,Servlets,Netflix Zuul,在对微服务基础设施中的用户进行身份验证的过程中,传递用户身份数据时,我有一个要测试的过滤器 当我使用Spring的MockMvc时,我还没有找到访问请求头的方法。很容易访问响应标题,如下所示: @Test public void WhenSendingRequestThenHeaderAdded() throws Exception { mockMvc.perform(get("/health")) .andExpect(header().string("X-Us

在对微服务基础设施中的用户进行身份验证的过程中,传递用户身份数据时,我有一个要测试的过滤器

当我使用Spring的MockMvc时,我还没有找到访问请求头的方法。很容易访问响应标题,如下所示:

@Test
public void WhenSendingRequestThenHeaderAdded() throws Exception {
    mockMvc.perform(get("/health"))
            .andExpect(header().string("X-User-Id", "test"))
            .andReturn();
}
在我的filter类中,我添加了用户ID和用户名以供下游使用。我想在集成测试中进行测试。目前,我在使用
restemplate
RestEasy
运行集成测试时遇到问题,因为我的服务器使用TLS,而且我还没有找到对受TLS保护的服务器运行集成测试的方法

过滤类 当这个过滤器正常工作时,我想写一个测试来证明它是正确的

我还考虑过使用Zuul过滤器,但没有成功

我正在使用 弹簧靴v1.3.1 春季4 春季安全4
Zuul 1.0.3

你找到解决方案了吗?还没有,还在寻找。我将离开祖尔,离开春天,所以我可能永远也找不到答案。
package com.example.gateway.authentication;

import com.example.gateway.users.IUserService;
import com.example.gateway.users.User;
import com.example.gateway.users.UserNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

/**
 * This filter adds user details for authenticated users to the HTTP Request for downstream consumption.
 */
@Component
public class AddUserInfoFilter implements Filter {

    private IUserService userService;

    @Autowired
    public AddUserInfoFilter(IUserService userService) {
        this.userService = userService;
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HeaderMapRequestWrapper requestWrapper = new HeaderMapRequestWrapper(req);
        try {
            User user = userService.lookupUser(
                    RequestParser.getUsernameFromHeader(req));
            requestWrapper.addHeader("X-User-Id", String.valueOf(user.getId()));
            requestWrapper.addHeader("X-Username", user.getUsername());
            chain.doFilter(requestWrapper, response); // Goes to default servlet.
        } catch (UserNotFoundException e) {
            requestWrapper.addHeader("X-User-Id", "-1");
            requestWrapper.addHeader("X-Username", "NOT_AUTHENTICATED");
            chain.doFilter(request, response);
        }
    }

    @Override
    public void destroy() {}

    @Override
    public void init(FilterConfig filterConfig) throws ServletException { }

}