csharp-sdk/tests/mcpdotnet.Tests/SseTransportTests.cs
Peder Holdgaard Pedersen 8fe797e1f3
Server support (stdio) (#19)
* Server support (stdio)
* TestServer project
* Refactored McpClient class to extract shared endpoint logic (with McpServer) to a base class, McpJsonRpcEndpoint.
* Improved xmldoc comments for protocol types, mirroring specification schema comments.
* Update README.MD
2025-02-08 16:21:26 +01:00

74 lines
No EOL
2.4 KiB
C#

using McpDotNet.Configuration;
using McpDotNet.Protocol.Messages;
using McpDotNet.Protocol.Transport;
using Microsoft.Extensions.Logging.Abstractions;
namespace McpDotNet.Tests.Client;
public class SseTransportTests
{
[Fact]
public void SseTransportConstructor_WithValidConfig_CreatesTransport()
{
// Arrange
var config = new McpServerConfig
{
Id = "test-server",
Name = "Test Server",
TransportType = "sse",
Location = "http://localhost:8080"
};
var transportOptions = new SseClientTransportOptions
{
ConnectionTimeout = TimeSpan.FromSeconds(10),
MaxReconnectAttempts = 2,
ReconnectDelay = TimeSpan.FromSeconds(5),
AdditionalHeaders = new Dictionary<string, string>
{
["test"] = "header"
}
};
// Act
var transport = new SseClientTransport(transportOptions, config, NullLoggerFactory.Instance);
// Assert
Assert.NotNull(transport);
Assert.True(transport.Options.ConnectionTimeout == TimeSpan.FromSeconds(10));
Assert.True(transport.Options.MaxReconnectAttempts == 2);
Assert.True(transport.Options.ReconnectDelay == TimeSpan.FromSeconds(5));
Assert.True(transport.Options.AdditionalHeaders["test"] == "header");
}
[Fact]
public async void SseTransportSendMessageAsync_WithMessageEndpointNotSet_ThrowsException()
{
// Arrange
var config = new McpServerConfig
{
Id = "test-server",
Name = "Test Server",
TransportType = "sse",
Location = "http://localhost:8080"
};
var transportOptions = new SseClientTransportOptions
{
ConnectionTimeout = TimeSpan.FromSeconds(10),
MaxReconnectAttempts = 2,
ReconnectDelay = TimeSpan.FromSeconds(5),
AdditionalHeaders = new Dictionary<string, string>
{
["test"] = "header"
}
};
// Act
var transport = new SseClientTransport(transportOptions, config, NullLoggerFactory.Instance);
// Assert
Assert.True(string.IsNullOrEmpty(transport.MessageEndpoint?.ToString()));
await Assert.ThrowsAsync<InvalidOperationException>(() => transport.SendMessageAsync(new JsonRpcRequest() { Method = "test"}, CancellationToken.None));
}
}