csharp-sdk/tests/ModelContextProtocol.Tests/Protocol/DiscoverProtocolTests.cs
Paul Carleton 26f60ab7f4
Align the 2026-07-28 wire with spec PR #3002 and SEP-2575 HTTP statuses (#1752)
Co-authored-by: Stephen Halter <halter73@gmail.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: tarekgh <tarek.mahmoud.sayed@gmail.com>
2026-07-27 16:08:03 -07:00

77 lines
2.9 KiB
C#

using ModelContextProtocol.Protocol;
using System.Text.Json;
using System.Text.Json.Nodes;
namespace ModelContextProtocol.Tests.Protocol;
/// <summary>
/// Serialization tests for the request/result types introduced by the 2026-07-28 protocol revision (SEP-2575).
/// </summary>
public static class DiscoverProtocolTests
{
[Fact]
public static void DiscoverRequestParams_SerializationRoundTrip_WithMeta()
{
var original = new DiscoverRequestParams
{
Meta = new JsonObject
{
[MetaKeys.ProtocolVersion] = "2026-07-28",
[MetaKeys.ClientInfo] = new JsonObject
{
["name"] = "test-client",
["version"] = "1.0",
},
[MetaKeys.ClientCapabilities] = new JsonObject(),
},
};
var json = JsonSerializer.Serialize(original, McpJsonUtilities.DefaultOptions);
var deserialized = JsonSerializer.Deserialize<DiscoverRequestParams>(json, McpJsonUtilities.DefaultOptions);
Assert.NotNull(deserialized);
Assert.NotNull(deserialized.Meta);
Assert.Equal("2026-07-28", (string)deserialized.Meta[MetaKeys.ProtocolVersion]!);
}
[Fact]
public static void DiscoverResult_SerializationRoundTrip_PreservesAllProperties()
{
var original = new DiscoverResult
{
SupportedVersions = new List<string> { "2025-11-25", "2026-07-28" },
Capabilities = new ServerCapabilities
{
Tools = new ToolsCapability { ListChanged = true },
},
Instructions = "Use this server for testing.",
};
var json = JsonSerializer.Serialize(original, McpJsonUtilities.DefaultOptions);
var deserialized = JsonSerializer.Deserialize<DiscoverResult>(json, McpJsonUtilities.DefaultOptions);
Assert.NotNull(deserialized);
Assert.Equal(["2025-11-25", "2026-07-28"], deserialized.SupportedVersions);
Assert.NotNull(deserialized.Capabilities.Tools);
Assert.True(deserialized.Capabilities.Tools.ListChanged);
Assert.Equal("Use this server for testing.", deserialized.Instructions);
}
[Fact]
public static void DiscoverResult_SerializationRoundTrip_WithMinimalProperties()
{
var original = new DiscoverResult
{
SupportedVersions = new List<string> { "2026-07-28" },
Capabilities = new ServerCapabilities(),
};
var json = JsonSerializer.Serialize(original, McpJsonUtilities.DefaultOptions);
var deserialized = JsonSerializer.Deserialize<DiscoverResult>(json, McpJsonUtilities.DefaultOptions);
Assert.NotNull(deserialized);
Assert.Single(deserialized.SupportedVersions);
Assert.Equal("2026-07-28", deserialized.SupportedVersions[0]);
Assert.Null(deserialized.Instructions);
}
}