Skip to content
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,12 @@
.createBean(HttpClient, embeddedServer.getURI())

when:
def response = client.toBlocking().exchange(HttpRequest.GET('/ssl/refresh/server'), Map)

Check failure on line 97 in http-client/src/test/groovy/io/micronaut/http/client/SslRefreshSpec.groovy

View workflow job for this annotation

GitHub Actions / Java CI / Test Report (25)

SslRefreshSpec.test server ssl refresh

io.micronaut.http.client.exceptions.HttpClientException: Connect Error: (handshake_failure) Received fatal alert: handshake_failure
Raw output
io.micronaut.http.client.exceptions.HttpClientException: Connect Error: (handshake_failure) Received fatal alert: handshake_failure
	at app//io.micronaut.http.client.netty.ConnectionManager$PoolHolder.wrapError(ConnectionManager.java:1253)
	Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below: 
Assembly trace from producer [reactor.core.publisher.MonoFromPublisher] :
	reactor.core.publisher.Mono.from(Mono.java:508)
	io.micronaut.http.client.netty.DefaultHttpClient.toMono(DefaultHttpClient.java:780)
Error has been observed at the following site(s):
	*__Mono.from ⇢ at io.micronaut.http.client.netty.DefaultHttpClient.toMono(DefaultHttpClient.java:780)
Original Stack Trace:
		at app//io.micronaut.http.client.netty.ConnectionManager$PoolHolder.wrapError(ConnectionManager.java:1253)
		at app//io.micronaut.http.client.netty.Pool49.onNewConnectionFailure(Pool49.java:136)
		at app//io.micronaut.http.client.netty.ConnectionManager$PoolHolder$1.onNewConnectionFailure(ConnectionManager.java:1212)
		at app//io.micronaut.http.client.netty.InitialConnectionErrorHandler.channelInactive(InitialConnectionErrorHandler.java:50)
		at app//io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:250)
		at app//io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)
		at app//io.netty.handler.ssl.ApplicationProtocolNegotiationHandler.channelInactive(ApplicationProtocolNegotiationHandler.java:167)
		at app//io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:250)
		at app//io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:412)
		at app//io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:377)
		at app//io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:1208)
		at app//io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:250)
		at app//io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1424)
		at app//io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:876)
		at app//io.netty.channel.AbstractChannel$AbstractUnsafe$8.run(AbstractChannel.java:684)
		at app//io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
		at app//io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141)
		at app//io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:535)
		at app//io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:201)
		at app//io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1193)
		at app//io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
		at app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
		at [email protected]/java.lang.Thread.run(Thread.java:1474)
	Suppressed: java.lang.Exception: #block terminated with an error
		at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:104)
		at reactor.core.publisher.Mono.block(Mono.java:1779)
		at io.micronaut.http.client.netty.DefaultHttpClient$1.exchange(DefaultHttpClient.java:603)
		at io.micronaut.http.client.BlockingHttpClient.exchange(BlockingHttpClient.java:78)
		at io.micronaut.http.client.BlockingHttpClient.exchange(BlockingHttpClient.java:107)
		at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
		at io.micronaut.http.client.SslRefreshSpec.$spock_feature_0_0(SslRefreshSpec.groovy:97)
		at java.base/java.lang.reflect.Method.invoke(Method.java:565)
		at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:187)
		at org.spockframework.runtime.model.MethodInfo.lambda$new$0(MethodInfo.java:49)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runFeatureMethod(PlatformSpecRunner.java:324)
		at org.spockframework.runtime.IterationNode.execute(IterationNode.java:50)
		at org.spockframework.runtime.SimpleFeatureNode.execute(SimpleFeatureNode.java:58)
		at org.spockframework.runtime.SimpleFeatureNode.execute(SimpleFeatureNode.java:15)
		at org.spockframework.runtime.SpockNode.sneakyInvoke(SpockNode.java:40)
		at org.spockframework.runtime.IterationNode.lambda$around$0(IterationNode.java:67)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunIteration$5(PlatformSpecRunner.java:236)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runIteration(PlatformSpecRunner.java:218)
		at org.spockframework.runtime.IterationNode.around(IterationNode.java:67)
		at org.spockframework.runtime.SimpleFeatureNode.lambda$around$0(SimpleFeatureNode.java:52)
		at org.spockframework.runtime.SpockNode.sneakyInvoke(SpockNode.java:40)
		at org.spockframework.runtime.FeatureNode.lambda$around$0(FeatureNode.java:41)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunFeature$4(PlatformSpecRunner.java:199)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runFeature(PlatformSpecRunner.java:192)
		at org.spockframework.runtime.FeatureNode.around(FeatureNode.java:41)
		at org.spockframework.runtime.SimpleFeatureNode.around(SimpleFeatureNode.java:52)
		at org.spockframework.runtime.SimpleFeatureNode.around(SimpleFeatureNode.java:15)
		at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
		at org.spockframework.runtime.SpockNode.sneakyInvoke(SpockNode.java:40)
		at org.spockframework.runtime.SpecNode.lambda$around$0(SpecNode.java:63)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSpec$0(PlatformSpecRunner.java:61)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSpec(PlatformSpecRunner.java:55)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:63)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:11)
		at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
Caused by: javax.net.ssl.SSLHandshakeException: (handshake_failure) Received fatal alert: handshake_failure
	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:130)
	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:363)
	at java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:287)
	at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:202)
	at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172)
	at java.base/sun.security.ssl.SSLEngineImpl.decode(SSLEngineImpl.java:734)
	at java.base/sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:689)
	at java.base/sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:504)
	at java.base/sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:480)
	at java.base/javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:673)
	at io.netty.handler.ssl.SslHandler$SslEngineType$3.unwrap(SslHandler.java:307)
	at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1507)
	at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1398)
	at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1449)
	at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1429)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:168)
	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.handle(AbstractNioChannel.java:445)
	at io.netty.channel.nio.NioIoHandler$DefaultNioRegistration.handle(NioIoHandler.java:388)
	at io.netty.channel.nio.NioIoHandler.processSelectedKey(NioIoHandler.java:596)
	at io.netty.channel.nio.NioIoHandler.processSelectedKeysPlain(NioIoHandler.java:541)
	at io.netty.channel.nio.NioIoHandler.processSelectedKeys(NioIoHandler.java:514)
	at io.netty.channel.nio.NioIoHandler.run(NioIoHandler.java:484)
	at io.netty.channel.SingleThreadIoEventLoop.runIo(SingleThreadIoEventLoop.java:225)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:196)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1193)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:1474)

then:
response.status() == HttpStatus.OK
response.body().ciphers == ciphers
response.body().subjectDN == 'CN=test.example.com, OU=IT, O=Whatever, L=Munich, ST=Bavaria, C=DE, [email protected]'
response.body().subjectDN.toString().contains('CN=test.example.com')

when:
config.putAll('micronaut.server.ssl.key-store.path': 'classpath:keystore.p12',
Expand All @@ -115,7 +115,7 @@
then:
response.status() == HttpStatus.OK
response.body().ciphers == ciphers[0..4]
response.body().subjectDN == 'CN=example.local, OU=IT Department, O=Global Security, L=London, ST=London, C=GB'
response.body().subjectDN.toString().contains('CN=example.local')

cleanup:
embeddedServer.close()
Expand All @@ -136,11 +136,11 @@
.createBean(HttpClient, embeddedServer.getURI())

when:
def response = client.toBlocking().exchange(HttpRequest.GET('/ssl/refresh/client'), Map)

Check failure on line 139 in http-client/src/test/groovy/io/micronaut/http/client/SslRefreshSpec.groovy

View workflow job for this annotation

GitHub Actions / Java CI / Test Report (25)

SslRefreshSpec.test client ssl refresh

io.micronaut.http.client.exceptions.HttpClientException: Connect Error: (handshake_failure) Received fatal alert: handshake_failure
Raw output
io.micronaut.http.client.exceptions.HttpClientException: Connect Error: (handshake_failure) Received fatal alert: handshake_failure
	at app//io.micronaut.http.client.netty.ConnectionManager$PoolHolder.wrapError(ConnectionManager.java:1253)
	Suppressed: The stacktrace has been enhanced by Reactor, refer to additional information below: 
Assembly trace from producer [reactor.core.publisher.MonoFromPublisher] :
	reactor.core.publisher.Mono.from(Mono.java:508)
	io.micronaut.http.client.netty.DefaultHttpClient.toMono(DefaultHttpClient.java:780)
Error has been observed at the following site(s):
	*__Mono.from ⇢ at io.micronaut.http.client.netty.DefaultHttpClient.toMono(DefaultHttpClient.java:780)
Original Stack Trace:
		at app//io.micronaut.http.client.netty.ConnectionManager$PoolHolder.wrapError(ConnectionManager.java:1253)
		at app//io.micronaut.http.client.netty.Pool49.onNewConnectionFailure(Pool49.java:136)
		at app//io.micronaut.http.client.netty.ConnectionManager$PoolHolder$1.onNewConnectionFailure(ConnectionManager.java:1212)
		at app//io.micronaut.http.client.netty.InitialConnectionErrorHandler.channelInactive(InitialConnectionErrorHandler.java:50)
		at app//io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:250)
		at app//io.netty.channel.ChannelInboundHandlerAdapter.channelInactive(ChannelInboundHandlerAdapter.java:81)
		at app//io.netty.handler.ssl.ApplicationProtocolNegotiationHandler.channelInactive(ApplicationProtocolNegotiationHandler.java:167)
		at app//io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:250)
		at app//io.netty.handler.codec.ByteToMessageDecoder.channelInputClosed(ByteToMessageDecoder.java:412)
		at app//io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:377)
		at app//io.netty.handler.ssl.SslHandler.channelInactive(SslHandler.java:1208)
		at app//io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:250)
		at app//io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactive(DefaultChannelPipeline.java:1424)
		at app//io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:876)
		at app//io.netty.channel.AbstractChannel$AbstractUnsafe$8.run(AbstractChannel.java:684)
		at app//io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
		at app//io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141)
		at app//io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:535)
		at app//io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:201)
		at app//io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1193)
		at app//io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
		at app//io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
		at [email protected]/java.lang.Thread.run(Thread.java:1474)
	Suppressed: java.lang.Exception: #block terminated with an error
		at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:104)
		at reactor.core.publisher.Mono.block(Mono.java:1779)
		at io.micronaut.http.client.netty.DefaultHttpClient$1.exchange(DefaultHttpClient.java:603)
		at io.micronaut.http.client.BlockingHttpClient.exchange(BlockingHttpClient.java:78)
		at io.micronaut.http.client.BlockingHttpClient.exchange(BlockingHttpClient.java:107)
		at org.codehaus.groovy.vmplugin.v8.IndyInterface.fromCache(IndyInterface.java:321)
		at io.micronaut.http.client.SslRefreshSpec.$spock_feature_0_1(SslRefreshSpec.groovy:139)
		at java.base/java.lang.reflect.Method.invoke(Method.java:565)
		at org.spockframework.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:187)
		at org.spockframework.runtime.model.MethodInfo.lambda$new$0(MethodInfo.java:49)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runFeatureMethod(PlatformSpecRunner.java:324)
		at org.spockframework.runtime.IterationNode.execute(IterationNode.java:50)
		at org.spockframework.runtime.SimpleFeatureNode.execute(SimpleFeatureNode.java:58)
		at org.spockframework.runtime.SimpleFeatureNode.execute(SimpleFeatureNode.java:15)
		at org.spockframework.runtime.SpockNode.sneakyInvoke(SpockNode.java:40)
		at org.spockframework.runtime.IterationNode.lambda$around$0(IterationNode.java:67)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunIteration$5(PlatformSpecRunner.java:236)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runIteration(PlatformSpecRunner.java:218)
		at org.spockframework.runtime.IterationNode.around(IterationNode.java:67)
		at org.spockframework.runtime.SimpleFeatureNode.lambda$around$0(SimpleFeatureNode.java:52)
		at org.spockframework.runtime.SpockNode.sneakyInvoke(SpockNode.java:40)
		at org.spockframework.runtime.FeatureNode.lambda$around$0(FeatureNode.java:41)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunFeature$4(PlatformSpecRunner.java:199)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runFeature(PlatformSpecRunner.java:192)
		at org.spockframework.runtime.FeatureNode.around(FeatureNode.java:41)
		at org.spockframework.runtime.SimpleFeatureNode.around(SimpleFeatureNode.java:52)
		at org.spockframework.runtime.SimpleFeatureNode.around(SimpleFeatureNode.java:15)
		at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
		at org.spockframework.runtime.SpockNode.sneakyInvoke(SpockNode.java:40)
		at org.spockframework.runtime.SpecNode.lambda$around$0(SpecNode.java:63)
		at org.spockframework.runtime.PlatformSpecRunner.lambda$createMethodInfoForDoRunSpec$0(PlatformSpecRunner.java:61)
		at org.spockframework.runtime.model.MethodInfo.invoke(MethodInfo.java:156)
		at org.spockframework.runtime.PlatformSpecRunner.invokeRaw(PlatformSpecRunner.java:407)
		at org.spockframework.runtime.PlatformSpecRunner.invoke(PlatformSpecRunner.java:390)
		at org.spockframework.runtime.PlatformSpecRunner.runSpec(PlatformSpecRunner.java:55)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:63)
		at org.spockframework.runtime.SpecNode.around(SpecNode.java:11)
		at java.base/java.util.ArrayList.forEach(ArrayList.java:1604)
Caused by: javax.net.ssl.SSLHandshakeException: (handshake_failure) Received fatal alert: handshake_failure
	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:130)
	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:363)
	at java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:287)
	at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:202)
	at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172)
	at java.base/sun.security.ssl.SSLEngineImpl.decode(SSLEngineImpl.java:734)
	at java.base/sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:689)
	at java.base/sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:504)
	at java.base/sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:480)
	at java.base/javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:673)
	at io.netty.handler.ssl.SslHandler$SslEngineType$3.unwrap(SslHandler.java:307)
	at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1507)
	at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1398)
	at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1449)
	at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:530)
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:469)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:356)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1429)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:168)
	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.handle(AbstractNioChannel.java:445)
	at io.netty.channel.nio.NioIoHandler$DefaultNioRegistration.handle(NioIoHandler.java:388)
	at io.netty.channel.nio.NioIoHandler.processSelectedKey(NioIoHandler.java:596)
	at io.netty.channel.nio.NioIoHandler.processSelectedKeysPlain(NioIoHandler.java:541)
	at io.netty.channel.nio.NioIoHandler.processSelectedKeys(NioIoHandler.java:514)
	at io.netty.channel.nio.NioIoHandler.run(NioIoHandler.java:484)
	at io.netty.channel.SingleThreadIoEventLoop.runIo(SingleThreadIoEventLoop.java:225)
	at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:196)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1193)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:1474)

then:
response.status() == HttpStatus.OK
response.body().subjectDN == 'CN=client1'
response.body().subjectDN.toString().contains('CN=client1')

when:
Files.deleteIfExists(keyStorePath)
Expand All @@ -155,7 +155,7 @@

then:
response.status() == HttpStatus.OK
response.body().subjectDN == 'CN=client2'
response.body().subjectDN.toString().contains('CN=client2')

cleanup:
embeddedServer.close()
Expand Down
Loading