@@ -674,4 +674,45 @@ import Testing
674
674
await client. disconnect ( )
675
675
}
676
676
}
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
+ }
677
718
#endif // swift(>=6.1)
0 commit comments