Skip to content

Commit 6570fc9

Browse files
fixes Protocol is not evaluated on client request #38 (added test)
1 parent cb06f58 commit 6570fc9

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

tests/Server/MCPServerTest.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)