using Xunit; using Svrnty.MCP.Gateway.Core.Models; namespace Svrnty.MCP.Gateway.Core.Tests.Models; /// /// Unit tests for RoutingContext model following TDD approach. /// Tests routing metadata. /// public class RoutingContextTests { [Fact] public void RoutingContext_WithToolName_CreatesSuccessfully() { // Arrange & Act var context = new RoutingContext { ToolName = "search_codex", ClientId = "web-client-123" }; // Assert Assert.Equal("search_codex", context.ToolName); Assert.Equal("web-client-123", context.ClientId); Assert.Null(context.Headers); Assert.Null(context.Metadata); } [Fact] public void RoutingContext_WithHeaders_StoresCorrectly() { // Arrange & Act var context = new RoutingContext { ToolName = "get_document", Headers = new Dictionary { { "Authorization", "Bearer token123" }, { "X-Client-Version", "1.0" } } }; // Assert Assert.NotNull(context.Headers); Assert.Equal(2, context.Headers.Count); Assert.Equal("Bearer token123", context.Headers["Authorization"]); } [Fact] public void RoutingContext_WithMetadata_StoresCorrectly() { // Arrange & Act var context = new RoutingContext { Metadata = new Dictionary { { "priority", 5 }, { "timeout", TimeSpan.FromSeconds(30) }, { "retry", true } } }; // Assert Assert.NotNull(context.Metadata); Assert.Equal(5, context.Metadata["priority"]); Assert.Equal(TimeSpan.FromSeconds(30), context.Metadata["timeout"]); Assert.True((bool)context.Metadata["retry"]); } [Fact] public void RoutingContext_AllNullable_AllowsNullValues() { // Arrange & Act var context = new RoutingContext(); // Assert Assert.Null(context.ToolName); Assert.Null(context.ClientId); Assert.Null(context.Headers); Assert.Null(context.Metadata); } }