如何将 HTTP header 添加到 MicroShedTest 和 SharedContainerConfig JUnit 测试

How to add HTTP header to MicroShedTest and SharedContainerConfig JUnit tests

在我为我的应用程序添加安全性之前,我的集成测试一直 运行 顺利。安全性使用自定义生成的 api 密钥,验证在来自 header 'X-API-Key'.

的自定义 HttpAuthenticationMechanism 中完成

我需要查明是否可以将 header 添加到测试套件发出的调用中。我上网查了一下,发现只有 @BasicAuthConfig@JwtConfig 没有任何用处。

我需要在对容器的 http 调用中添加 header 'X-API-Key'。

我没有找到任何有用的东西,所以我创建了自己的解决方案。我没有依赖 @RESTClient 给我资源代理,而是像这样创建了自己的资源代理:

public static <T> T getResourceProxy(Class<T> t) {
    Map<String, String> headerMap = new HashMap<>();
    headerMap.put("X-API-Key", "abcdefg.abcdefg1234567hij890");
    headerMap.put("Content-Type", "application/json");
    headerMap.put("Accept", "application/json, text/plain");

    JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
    bean.setHeaders(headerMap);
    bean.setResourceClass(t);
    bean.setAddress("http://localhost:8080/myApp");

    List<Object> providers = new ArrayList<>();

    providers.add(new JacksonJaxbJsonProvider());
    providers.add(new JacksonJsonProvider());
    bean.setProviders(providers);

    return bean.create(t);
}