Skip to content

Commit 0666493

Browse files
committed
Add test for unsupported streaming scenarios
1 parent 0d4efff commit 0666493

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

kotlin-sdk-client/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/client/StreamableHttpClientTest.kt

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.modelcontextprotocol.kotlin.sdk.client
22

33
import io.kotest.matchers.collections.shouldContain
4+
import io.ktor.http.HttpMethod
45
import io.ktor.http.HttpStatusCode
56
import io.ktor.sse.ServerSentEvent
67
import io.modelcontextprotocol.kotlin.sdk.ClientCapabilities
@@ -148,4 +149,40 @@ internal class StreamableHttpClientTest : AbstractStreamableHttpClientTest() {
148149

149150
client.close()
150151
}
152+
153+
@Test
154+
fun `handle streaming not supported`() = runBlocking {
155+
val client = Client(
156+
clientInfo = Implementation(name = "client2", version = "1.0.0"),
157+
options = ClientOptions(
158+
capabilities = ClientCapabilities(),
159+
),
160+
)
161+
162+
val sessionId = UUID.randomUUID().toString()
163+
164+
mockMcp.onInitialize(clientName = "client2", sessionId = sessionId)
165+
166+
mockMcp.handleJSONRPCRequest(
167+
jsonRpcMethod = "notifications/initialized",
168+
expectedSessionId = sessionId,
169+
sessionId = sessionId,
170+
statusCode = HttpStatusCode.Accepted,
171+
)
172+
173+
mockMcp.onSubscribe(
174+
httpMethod = HttpMethod.Get,
175+
sessionId = sessionId,
176+
) respondsWith {
177+
headers += MCP_SESSION_ID_HEADER to sessionId
178+
body = null
179+
httpStatus = HttpStatusCode.UnsupportedMediaType
180+
}
181+
182+
mockMcp.mockUnsubscribeRequest(sessionId = sessionId)
183+
184+
connect(client)
185+
186+
client.close()
187+
}
151188
}

0 commit comments

Comments
 (0)