csharp-sdk/tests/ModelContextProtocol.Tests/Transport/SseResponseStreamTransportTests.cs
Stephen Halter faf12b6a94
Use Kestrel for all in-memory HTTP tests (#225)
* Add route pattern parameter to MapMcp
* Add configureOptionsAsync
* Use Kestrel for all in-memory HTTP tests
* Use ApplicationStopping token for SSE responses
* Use RegisterNotificationHandler in MapMcp tests
* Work around SocketsHttpHandler bug where it doesn't call DispseAsync on the stream returned by the ConnectCallback
2025-04-06 19:27:17 -07:00

27 lines
1.1 KiB
C#

using ModelContextProtocol.Protocol.Transport;
using ModelContextProtocol.Tests.Utils;
using System.IO.Pipelines;
namespace ModelContextProtocol.Tests.Transport;
public class SseResponseStreamTransportTests(ITestOutputHelper testOutputHelper) : LoggedTest(testOutputHelper)
{
[Fact]
public async Task Can_Customize_MessageEndpoint()
{
var responsePipe = new Pipe();
await using var transport = new SseResponseStreamTransport(responsePipe.Writer.AsStream(), "/my-message-endpoint");
var transportRunTask = transport.RunAsync(TestContext.Current.CancellationToken);
using var responseStreamReader = new StreamReader(responsePipe.Reader.AsStream());
var firstLine = await responseStreamReader.ReadLineAsync(TestContext.Current.CancellationToken);
Assert.Equal("event: endpoint", firstLine);
var secondLine = await responseStreamReader.ReadLineAsync(TestContext.Current.CancellationToken);
Assert.Equal("data: /my-message-endpoint", secondLine);
responsePipe.Reader.Complete();
responsePipe.Writer.Complete();
}
}