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
This commit is contained in:
parent
848c9df433
commit
faf12b6a94
1 changed files with 631 additions and 642 deletions
|
|
@ -0,0 +1,27 @@
|
|||
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();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue