using Xunit; using Svrnty.MCP.Core.Models; namespace Svrnty.MCP.Core.Tests.Models; /// /// Unit tests for ServerConfig model following TDD approach. /// Tests server configuration representation. /// public class ServerConfigTests { [Fact] public void ServerConfig_WithStdioTransport_CreatesSuccessfully() { // Arrange & Act var config = new ServerConfig { Id = "codex-server", Name = "CODEX Knowledge Base", TransportType = "Stdio", Command = "dotnet", Args = new[] { "run", "--project", "CodexMcpServer.csproj" }, Enabled = true }; // Assert Assert.Equal("codex-server", config.Id); Assert.Equal("Stdio", config.TransportType); Assert.Equal("dotnet", config.Command); Assert.Equal(3, config.Args?.Length); Assert.True(config.Enabled); } [Fact] public void ServerConfig_WithHttpTransport_CreatesSuccessfully() { // Arrange & Act var config = new ServerConfig { Id = "remote-api", Name = "Remote API Server", TransportType = "Http", BaseUrl = "https://api.example.com/mcp", Enabled = true }; // Assert Assert.Equal("Http", config.TransportType); Assert.Equal("https://api.example.com/mcp", config.BaseUrl); Assert.Null(config.Command); } [Fact] public void ServerConfig_DefaultEnabled_IsTrue() { // Arrange & Act var config = new ServerConfig { Id = "test-server", Name = "Test" }; // Assert Assert.True(config.Enabled); } [Fact] public void ServerConfig_WithMetadata_StoresAdditionalData() { // Arrange var metadata = new Dictionary { { "timeout", "30000" }, { "retries", "3" } }; // Act var config = new ServerConfig { Id = "server-1", Metadata = metadata }; // Assert Assert.NotNull(config.Metadata); Assert.Equal("30000", config.Metadata["timeout"]); } }