@@ -542,4 +542,37 @@ public function test_initialize_sets_client_sampling_capability_when_enabled():
542542 $ this ->assertSame (['mock-capability ' => true ], $ initializeResource ->capabilities );
543543 $ this ->assertEquals ($ serverInfo , $ initializeResource ->serverInfo );
544544 }
545+
546+ /**
547+ * Tests that the initialize method throws an exception for unsupported protocol versions
548+ */
549+ public function test_initialize_throws_exception_for_unsupported_protocol_version (): void
550+ {
551+ // Arrange
552+ $ mockProtocol = $ this ->createMock (MCPProtocolInterface::class);
553+ $ serverInfo = ['name ' => 'TestServer ' , 'version ' => '1.0 ' ];
554+ $ mockCapabilities = $ this ->createMock (ServerCapabilitiesInterface::class);
555+
556+ $ mockProgressNotifierRepository = $ this ->createMock (ProgressNotifierRepository::class);
557+ $ server = MCPServer::create ($ mockProtocol , $ mockProgressNotifierRepository , $ serverInfo ['name ' ], $ serverInfo ['version ' ], $ mockCapabilities );
558+ $ unsupportedVersion = '2025-12-01 ' ;
559+ $ initializeData = new InitializeData ('2.0 ' , ['mock-capability ' => true ], $ unsupportedVersion );
560+
561+ // Act & Assert
562+ try {
563+ $ server ->initialize ($ initializeData );
564+ $ this ->fail ('Expected JsonRpcErrorException not thrown ' );
565+ } catch (JsonRpcErrorException $ e ) {
566+ $ this ->assertEquals (-32602 , $ e ->getJsonRpcErrorCode ());
567+ $ this ->assertEquals ('Unsupported protocol version ' , $ e ->getMessage ());
568+
569+ $ errorData = $ e ->getErrorData ();
570+ $ this ->assertIsArray ($ errorData );
571+ $ this ->assertArrayHasKey ('supported ' , $ errorData );
572+ $ this ->assertArrayHasKey ('requested ' , $ errorData );
573+ $ this ->assertEquals ($ unsupportedVersion , $ errorData ['requested ' ]);
574+ $ this ->assertContains (MCPProtocolInterface::PROTOCOL_VERSION_SSE , $ errorData ['supported ' ]);
575+ $ this ->assertContains (MCPProtocolInterface::PROTOCOL_VERSION_STREAMABE_HTTP , $ errorData ['supported ' ]);
576+ }
577+ }
545578}
0 commit comments