using Xunit; using OpenHarbor.MCP.Gateway.Core.Models; namespace OpenHarbor.MCP.Gateway.Core.Tests.Models; /// /// Unit tests for GatewayRequest and GatewayResponse models following TDD approach. /// Tests request/response representation. /// public class GatewayRequestResponseTests { [Fact] public void GatewayRequest_WithToolCall_CreatesSuccessfully() { // Arrange & Act var request = new GatewayRequest { ToolName = "search_documents", Arguments = new Dictionary { { "query", "architecture" }, { "limit", 10 } } }; // Assert Assert.Equal("search_documents", request.ToolName); Assert.NotNull(request.Arguments); Assert.Equal("architecture", request.Arguments["query"]); Assert.Equal(10, request.Arguments["limit"]); } [Fact] public void GatewayRequest_WithoutArguments_AllowsNull() { // Arrange & Act var request = new GatewayRequest { ToolName = "list_tools" }; // Assert Assert.Equal("list_tools", request.ToolName); Assert.Null(request.Arguments); } [Fact] public void GatewayResponse_Success_CreatesSuccessfully() { // Arrange & Act var response = new GatewayResponse { Success = true, Result = new Dictionary { { "documents", new[] { "doc1", "doc2" } }, { "count", 2 } } }; // Assert Assert.True(response.Success); Assert.NotNull(response.Result); Assert.Equal(2, response.Result["count"]); Assert.Null(response.Error); } [Fact] public void GatewayResponse_Error_CreatesSuccessfully() { // Arrange & Act var response = new GatewayResponse { Success = false, Error = "Server unavailable", ErrorCode = "SERVER_UNAVAILABLE" }; // Assert Assert.False(response.Success); Assert.Equal("Server unavailable", response.Error); Assert.Equal("SERVER_UNAVAILABLE", response.ErrorCode); Assert.Null(response.Result); } [Fact] public void GatewayResponse_DefaultState_IsNotSuccess() { // Arrange & Act var response = new GatewayResponse(); // Assert Assert.False(response.Success); Assert.Null(response.Result); Assert.Null(response.Error); } }