我正在为通过HTTPS连接到外部API的Mule ESB应用程序编写集成测试。我想模拟外部API并在Maven构建过程中运行端到端集成测试。我的问题是关于设置嵌入式HTTPS服务器。我尝试使用Jersey,但它仅提供HTTP。我在看这个例子
https://github.com/jersey/jersey/tree/master/examples/https-clientserver-grizzly
我想知道是否还涉及一些手动步骤,或者它是否可以在每次启动构建时自动设置所有内容。
有什么建议或想法吗?
编辑。我的最终目标是在可通过HTTPS访问的嵌入式服务器中部署JAX-RS服务。而且不需要客户端密钥/证书配置。
编辑2.现在,我的问题与证书有关。集成测试的重点是模拟外部组件并验证我的应用程序是否正常运行。现在,如果我设置了嵌入式HTTPS服务器并使用cmd-line构建的证书,则需要在客户端中添加SSL配置(如@Ryan Hoegg所指出的)。这不是我理想中想要的:是否有解决方案可以使它工作而无需修改我的客户端应用程序代码?这应该是一个超越Mule的通用Java问题。
我为此使用confluex-mock-http。在后台,它使用Jetty,但它会为您完成所有配置。创建MockHttpsServer会立即启动HTTPS服务器:
public static final int PORT = 1443;
private MockHttpsServer mockServer;
@Before
public void initHttps() {
mockServer = new MockHttpsServer(PORT);
mockServer.respondTo(get("a-service/resource")).withBody(expectedResponse);
}
您可以将Mule应用程序设置为信任模拟服务器使用的证书。类路径上提供了JKS格式的信任库,您可以将其提供给HTTPS连接器,如下所示:
<https:connector name="someHttpsConnector">
<https:tls-server path="confluex-mock.truststore" storePassword="confluex" />
</https:connector>
我认为某些较旧的Mule版本在使用此方法时会遇到麻烦,因为我需要在此处使用替代方法。
编辑:仅当使用Spring概要文件运行测试时,才可以为HTTPS连接器包括此配置:
<spring:beans profile="test">
<mule>
<!-- connector configuration goes here -->
</mule>
</spring:beans>
确保配置文件在测试运行时确实处于活动状态的一种方法是,只需在@BeforeClass方法中对其进行设置:
@BeforeClass
public void initEnvironment() {
System.setProperty("spring.profiles.active", "test");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句