using ModelContextProtocol.Protocol; using System.Text.Json; using System.Text.Json.Nodes; namespace ModelContextProtocol.Tests.Protocol; /// /// Serialization tests for the request/result types introduced by the 2026-07-28 protocol revision (SEP-2575). /// 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(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 { "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(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 { "2026-07-28" }, Capabilities = new ServerCapabilities(), }; var json = JsonSerializer.Serialize(original, McpJsonUtilities.DefaultOptions); var deserialized = JsonSerializer.Deserialize(json, McpJsonUtilities.DefaultOptions); Assert.NotNull(deserialized); Assert.Single(deserialized.SupportedVersions); Assert.Equal("2026-07-28", deserialized.SupportedVersions[0]); Assert.Null(deserialized.Instructions); } }