Skip to content

Commit d4bbe3b

Browse files
committed
Add test coverage
1 parent 73650d2 commit d4bbe3b

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

Tests/MCPTests/HTTPClientTransportTests.swift

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,4 +674,45 @@ import Testing
674674
await client.disconnect()
675675
}
676676
}
677+
678+
@Test("Request modifier functionality", .httpClientTransportSetup)
679+
func testRequestModifier() async throws {
680+
let testEndpoint = URL(string: "https://api.example.com/mcp")!
681+
let testToken = "test-bearer-token-12345"
682+
683+
let configuration = URLSessionConfiguration.ephemeral
684+
configuration.protocolClasses = [MockURLProtocol.self]
685+
686+
// Create transport with requestModifier that adds Authorization header
687+
let transport = HTTPClientTransport(
688+
endpoint: testEndpoint,
689+
configuration: configuration,
690+
streaming: false,
691+
requestModifier: { request in
692+
var modifiedRequest = request
693+
modifiedRequest.addValue("Bearer \(testToken)", forHTTPHeaderField: "Authorization")
694+
return modifiedRequest
695+
},
696+
logger: nil
697+
)
698+
699+
try await transport.connect()
700+
701+
let messageData = #"{"jsonrpc":"2.0","method":"test","id":5}"#.data(using: .utf8)!
702+
703+
await MockURLProtocol.requestHandlerStorage.setHandler {
704+
[testEndpoint, testToken] (request: URLRequest) in
705+
// Verify the Authorization header was added by the requestModifier
706+
#expect(request.value(forHTTPHeaderField: "Authorization") == "Bearer \(testToken)")
707+
708+
// Return a successful response
709+
let response = HTTPURLResponse(
710+
url: testEndpoint, statusCode: 200, httpVersion: "HTTP/1.1",
711+
headerFields: ["Content-Type": "application/json"])!
712+
return (response, Data())
713+
}
714+
715+
try await transport.send(messageData)
716+
await transport.disconnect()
717+
}
677718
#endif // swift(>=6.1)

0 commit comments

Comments
 (0)