|
18 | 18 | import com.sun.net.httpserver.HttpServer; |
19 | 19 | import io.modelcontextprotocol.client.transport.customizer.McpHttpClientAuthorizationErrorHandler; |
20 | 20 | import io.modelcontextprotocol.common.McpTransportContext; |
21 | | -import org.reactivestreams.Publisher; |
22 | 21 | import io.modelcontextprotocol.server.transport.TomcatTestUtil; |
23 | 22 | import io.modelcontextprotocol.spec.HttpHeaders; |
24 | 23 | import io.modelcontextprotocol.spec.McpClientTransport; |
|
34 | 33 | import org.junit.jupiter.api.Timeout; |
35 | 34 | import org.junit.jupiter.params.ParameterizedTest; |
36 | 35 | import org.junit.jupiter.params.provider.ValueSource; |
| 36 | +import org.reactivestreams.Publisher; |
37 | 37 | import reactor.core.publisher.Mono; |
38 | 38 | import reactor.test.StepVerifier; |
39 | 39 |
|
@@ -369,6 +369,26 @@ else if (status == 404) { |
369 | 369 | StepVerifier.create(transport.closeGracefully()).verifyComplete(); |
370 | 370 | } |
371 | 371 |
|
| 372 | + @Test |
| 373 | + void test405OnConnectReturnsEmptyFlux() { |
| 374 | + serverSseResponseStatus.set(405); |
| 375 | + AtomicReference<Throwable> capturedException = new AtomicReference<>(); |
| 376 | + var transport = HttpClientStreamableHttpTransport.builder(HOST).openConnectionOnStartup(true).build(); |
| 377 | + transport.setExceptionHandler(capturedException::set); |
| 378 | + |
| 379 | + var messages = new ArrayList<McpSchema.JSONRPCMessage>(); |
| 380 | + StepVerifier.create(transport.connect(msg -> msg.doOnNext(messages::add))).verifyComplete(); |
| 381 | + |
| 382 | + Awaitility.await() |
| 383 | + .atMost(Duration.ofSeconds(1)) |
| 384 | + .untilAsserted(() -> assertThat(processedSseConnectCount.get()).isEqualTo(1)); |
| 385 | + |
| 386 | + assertThat(messages).isEmpty(); |
| 387 | + assertThat(capturedException.get()).isNull(); |
| 388 | + |
| 389 | + StepVerifier.create(transport.closeGracefully()).verifyComplete(); |
| 390 | + } |
| 391 | + |
372 | 392 | @Nested |
373 | 393 | class AuthorizationError { |
374 | 394 |
|
|
0 commit comments