在为应用程序添加安全性之前,我的集成测试一直在顺利运行。安全性使用自定义生成的api密钥,并且验证在来自标头"X-api-key"的自定义HttpAuthenticationMechanism中完成。
我需要弄清楚是否可以为测试套件进行的调用添加头。我查了一下互联网,发现只有@BasicAuthConfig
和@JwtConfig
没有任何用处。
我需要在对容器进行的http调用中添加一个头"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);
}