import Foundation import Testing @testable import MCP @Suite("Server Tests") struct ServerTests { @Test("Start and stop server") func testServerStartAndStop() async throws { let transport = MockTransport() let server = Server(name: "TestServer", version: "1.0") #expect(await transport.isConnected == false) try await server.start(transport: transport) #expect(await transport.isConnected == true) await server.stop() #expect(await transport.isConnected == false) } @Test("Initialize request handling") func testServerHandleInitialize() async throws { let transport = MockTransport() // Queue an initialize request try await transport.queueRequest( Initialize.request( .init( protocolVersion: Version.latest, capabilities: .init(), clientInfo: .init(name: "TestClient", version: "1.0") ) )) // Start the server let server: Server = Server( name: "TestServer", version: "1.0" ) try await server.start(transport: transport) // Wait for message processing and response try await Task.sleep(nanoseconds: 10_000_000) // 10ms #expect(await transport.sentMessages.count == 1) #expect(await transport.sentMessages[0].contains(Initialize.name)) // Clean up await server.stop() await transport.disconnect() } }