Skip to main content
Glama

Xcode Index MCP

by block
TCPServerTests.swift6.36 kB
import XCTest @testable import IndexStoreMCPService import IndexStoreDB final class TCPServerTests: XCTestCase { // MARK: - Test Factory struct Factory { static func makeServer( port: UInt16 = 8080, symbolProvider: SymbolProvider? = nil ) -> TCPServer { return TCPServer( port: port, symbolProvider: symbolProvider ?? RealSymbolProvider() ) } static func makeMockSymbolProvider() -> MockSymbolProvider { return MockSymbolProvider() } } // MARK: - Tests func testHandleRequest_IsAvailable_ReturnsCorrectResponse() { // Given let mockProvider = Factory.makeMockSymbolProvider() mockProvider.isAvailableResult = ServiceStatus(available: true, error: nil) let server = Factory.makeServer(symbolProvider: mockProvider) let request = MCPRequest( id: "1", method: "is_available", params: ["projectName": "TestProject"] ) // When let response = server.handleRequest(request) // Then XCTAssertEqual(response.id, "1") XCTAssertNil(response.error) if case .status(let status) = response.result { XCTAssertTrue(status.available) XCTAssertNil(status.error) } else { XCTFail("Expected status result") } } func testHandleRequest_SymbolOccurrences_ReturnsCorrectResponse() { // Given let mockProvider = Factory.makeMockSymbolProvider() let mockSymbol = CodableSymbol( name: "testName", kind: "function", location: "test.swift:1", usr: "test-usr" ) mockProvider.symbolOccurrencesResult = SymbolOccurrences( symbols: [mockSymbol], location: "test.swift:1" ) let server = Factory.makeServer(symbolProvider: mockProvider) let request = MCPRequest( id: "1", method: "symbol_occurrences", params: [ "filePath": "test.swift", "lineNumber": "1" ] ) // When let response = server.handleRequest(request) // Then XCTAssertEqual(response.id, "1") XCTAssertNil(response.error) if case .symbols(let result) = response.result { XCTAssertEqual(result.symbols.count, 1) XCTAssertEqual(result.symbols.first?.usr, "test-usr") XCTAssertEqual(result.location, "test.swift:1") } else { XCTFail("Expected symbols result") } } func testHandleRequest_GetOccurrences_ReturnsCorrectResponse() { // Given let mockProvider = Factory.makeMockSymbolProvider() let mockOccurrence = CodableOccurrence( usr: "test-usr", name: "testName", location: "test.swift:1", role: "definition" ) mockProvider.getOccurrencesResult = OccurrenceResults( occurrences: [mockOccurrence], usr: "test-usr", roles: ["definition"] ) let server = Factory.makeServer(symbolProvider: mockProvider) let request = MCPRequest( id: "1", method: "get_occurrences", params: [ "usr": "test-usr", "roles": "definition" ] ) // When let response = server.handleRequest(request) // Then XCTAssertEqual(response.id, "1") XCTAssertNil(response.error) if case .occurrences(let result) = response.result { XCTAssertEqual(result.occurrences.count, 1) XCTAssertEqual(result.usr, "test-usr") XCTAssertEqual(result.roles, ["definition"]) } else { XCTFail("Expected occurrences result") } } func testHandleRequest_FindCanonicalOccurrences_ReturnsCorrectResponse() { // Given let mockProvider = Factory.makeMockSymbolProvider() let mockOccurrence = CodableOccurrence( usr: "test-usr", name: "testName", location: "test.swift:1", role: "definition" ) mockProvider.findCanonicalOccurrencesResult = PatternSearchResults( occurrences: [mockOccurrence], pattern: "test", searchOptions: ["anchorStart"] ) let server = Factory.makeServer(symbolProvider: mockProvider) let request = MCPRequest( id: "1", method: "search_pattern", params: [ "pattern": "test", "options": "anchorStart" ] ) // When let response = server.handleRequest(request) // Then XCTAssertEqual(response.id, "1") XCTAssertNil(response.error) if case .patternSearch(let result) = response.result { XCTAssertEqual(result.occurrences.count, 1) XCTAssertEqual(result.pattern, "test") XCTAssertEqual(result.searchOptions, ["anchorStart"]) } else { XCTFail("Expected pattern search result") } } func testHandleRequest_UnknownMethod_ReturnsError() { // Given let server = Factory.makeServer() let request = MCPRequest( id: "1", method: "unknown_method", params: [:] ) // When let response = server.handleRequest(request) // Then XCTAssertEqual(response.id, "1") XCTAssertNotNil(response.error) XCTAssertEqual(response.error, "Unknown method") } func testHandleRequest_MissingParameters_ReturnsError() { // Given let server = Factory.makeServer() let request = MCPRequest( id: "1", method: "is_available", params: [:] ) // When let response = server.handleRequest(request) // Then XCTAssertEqual(response.id, "1") XCTAssertNotNil(response.error) XCTAssertEqual(response.error, "Missing projectName parameter") } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/block/xcode-index-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server