@@ -17,6 +17,8 @@ import {
17
17
ElicitRequestSchema ,
18
18
ListRootsRequestSchema ,
19
19
ErrorCode ,
20
+ ListPromptsRequestSchema ,
21
+ ListResourceTemplatesRequestSchema ,
20
22
} from "../types.js" ;
21
23
import { Transport } from "../shared/transport.js" ;
22
24
import { Server } from "../server/index.js" ;
@@ -1301,3 +1303,329 @@ describe('outputSchema validation', () => {
1301
1303
1302
1304
1303
1305
} ) ;
1306
+
1307
+ test ( "should return empty array when server has prompts capability but no prompts registered" , async ( ) => {
1308
+ const server = new Server (
1309
+ {
1310
+ name : "test server" ,
1311
+ version : "1.0" ,
1312
+ } ,
1313
+ {
1314
+ capabilities : {
1315
+ prompts : { } ,
1316
+ } ,
1317
+ } ,
1318
+ ) ;
1319
+
1320
+ server . setRequestHandler ( InitializeRequestSchema , ( _request ) => ( {
1321
+ protocolVersion : LATEST_PROTOCOL_VERSION ,
1322
+ capabilities : {
1323
+ prompts : { } ,
1324
+ } ,
1325
+ serverInfo : {
1326
+ name : "test" ,
1327
+ version : "1.0" ,
1328
+ } ,
1329
+ } ) ) ;
1330
+
1331
+ const [ clientTransport , serverTransport ] =
1332
+ InMemoryTransport . createLinkedPair ( ) ;
1333
+
1334
+ const client = new Client (
1335
+ {
1336
+ name : "test client" ,
1337
+ version : "1.0" ,
1338
+ } ,
1339
+ {
1340
+ capabilities : {
1341
+ sampling : { } ,
1342
+ } ,
1343
+ } ,
1344
+ ) ;
1345
+
1346
+ await Promise . all ( [
1347
+ client . connect ( clientTransport ) ,
1348
+ server . connect ( serverTransport ) ,
1349
+ ] ) ;
1350
+
1351
+ const result = await client . listPrompts ( ) ;
1352
+ expect ( result . prompts ) . toEqual ( [ ] ) ;
1353
+ } ) ;
1354
+
1355
+ test ( "should return empty array when server has resources capability but no resources registered" , async ( ) => {
1356
+ const server = new Server (
1357
+ {
1358
+ name : "test server" ,
1359
+ version : "1.0" ,
1360
+ } ,
1361
+ {
1362
+ capabilities : {
1363
+ resources : { } ,
1364
+ } ,
1365
+ } ,
1366
+ ) ;
1367
+
1368
+ server . setRequestHandler ( InitializeRequestSchema , ( _request ) => ( {
1369
+ protocolVersion : LATEST_PROTOCOL_VERSION ,
1370
+ capabilities : {
1371
+ resources : { } ,
1372
+ } ,
1373
+ serverInfo : {
1374
+ name : "test" ,
1375
+ version : "1.0" ,
1376
+ } ,
1377
+ } ) ) ;
1378
+
1379
+ const [ clientTransport , serverTransport ] =
1380
+ InMemoryTransport . createLinkedPair ( ) ;
1381
+
1382
+ const client = new Client (
1383
+ {
1384
+ name : "test client" ,
1385
+ version : "1.0" ,
1386
+ } ,
1387
+ {
1388
+ capabilities : {
1389
+ sampling : { } ,
1390
+ } ,
1391
+ } ,
1392
+ ) ;
1393
+
1394
+ await Promise . all ( [
1395
+ client . connect ( clientTransport ) ,
1396
+ server . connect ( serverTransport ) ,
1397
+ ] ) ;
1398
+
1399
+ const result = await client . listResources ( ) ;
1400
+ expect ( result . resources ) . toEqual ( [ ] ) ;
1401
+ } ) ;
1402
+
1403
+ test ( "should return empty array when server has resources capability but no resource templates registered" , async ( ) => {
1404
+ const server = new Server (
1405
+ {
1406
+ name : "test server" ,
1407
+ version : "1.0" ,
1408
+ } ,
1409
+ {
1410
+ capabilities : {
1411
+ resources : { } ,
1412
+ } ,
1413
+ } ,
1414
+ ) ;
1415
+
1416
+ server . setRequestHandler ( InitializeRequestSchema , ( _request ) => ( {
1417
+ protocolVersion : LATEST_PROTOCOL_VERSION ,
1418
+ capabilities : {
1419
+ resources : { } ,
1420
+ } ,
1421
+ serverInfo : {
1422
+ name : "test" ,
1423
+ version : "1.0" ,
1424
+ } ,
1425
+ } ) ) ;
1426
+
1427
+ const [ clientTransport , serverTransport ] =
1428
+ InMemoryTransport . createLinkedPair ( ) ;
1429
+
1430
+ const client = new Client (
1431
+ {
1432
+ name : "test client" ,
1433
+ version : "1.0" ,
1434
+ } ,
1435
+ {
1436
+ capabilities : {
1437
+ sampling : { } ,
1438
+ } ,
1439
+ } ,
1440
+ ) ;
1441
+
1442
+ await Promise . all ( [
1443
+ client . connect ( clientTransport ) ,
1444
+ server . connect ( serverTransport ) ,
1445
+ ] ) ;
1446
+
1447
+ const result = await client . listResourceTemplates ( ) ;
1448
+ expect ( result . resourceTemplates ) . toEqual ( [ ] ) ;
1449
+ } ) ;
1450
+
1451
+ test ( "should return empty array when server has tools capability but no tools registered" , async ( ) => {
1452
+ const server = new Server (
1453
+ {
1454
+ name : "test server" ,
1455
+ version : "1.0" ,
1456
+ } ,
1457
+ {
1458
+ capabilities : {
1459
+ tools : { } ,
1460
+ } ,
1461
+ } ,
1462
+ ) ;
1463
+
1464
+ server . setRequestHandler ( InitializeRequestSchema , ( _request ) => ( {
1465
+ protocolVersion : LATEST_PROTOCOL_VERSION ,
1466
+ capabilities : {
1467
+ tools : { } ,
1468
+ } ,
1469
+ serverInfo : {
1470
+ name : "test" ,
1471
+ version : "1.0" ,
1472
+ } ,
1473
+ } ) ) ;
1474
+
1475
+ const [ clientTransport , serverTransport ] =
1476
+ InMemoryTransport . createLinkedPair ( ) ;
1477
+
1478
+ const client = new Client (
1479
+ {
1480
+ name : "test client" ,
1481
+ version : "1.0" ,
1482
+ } ,
1483
+ {
1484
+ capabilities : {
1485
+ sampling : { } ,
1486
+ } ,
1487
+ } ,
1488
+ ) ;
1489
+
1490
+ await Promise . all ( [
1491
+ client . connect ( clientTransport ) ,
1492
+ server . connect ( serverTransport ) ,
1493
+ ] ) ;
1494
+
1495
+ const result = await client . listTools ( ) ;
1496
+ expect ( result . tools ) . toEqual ( [ ] ) ;
1497
+ } ) ;
1498
+
1499
+ test ( "should handle empty collections consistently across all capabilities" , async ( ) => {
1500
+ const server = new Server (
1501
+ {
1502
+ name : "test server" ,
1503
+ version : "1.0" ,
1504
+ } ,
1505
+ {
1506
+ capabilities : {
1507
+ prompts : { } ,
1508
+ resources : { } ,
1509
+ tools : { } ,
1510
+ } ,
1511
+ } ,
1512
+ ) ;
1513
+
1514
+ server . setRequestHandler ( InitializeRequestSchema , ( _request ) => ( {
1515
+ protocolVersion : LATEST_PROTOCOL_VERSION ,
1516
+ capabilities : {
1517
+ prompts : { } ,
1518
+ resources : { } ,
1519
+ tools : { } ,
1520
+ } ,
1521
+ serverInfo : {
1522
+ name : "test" ,
1523
+ version : "1.0" ,
1524
+ } ,
1525
+ } ) ) ;
1526
+
1527
+ server . setRequestHandler ( ListPromptsRequestSchema , ( ) => ( {
1528
+ prompts : [ ] ,
1529
+ } ) ) ;
1530
+
1531
+ server . setRequestHandler ( ListResourcesRequestSchema , ( ) => ( {
1532
+ resources : [ ] ,
1533
+ } ) ) ;
1534
+
1535
+ server . setRequestHandler ( ListResourceTemplatesRequestSchema , ( ) => ( {
1536
+ resourceTemplates : [ ] ,
1537
+ } ) ) ;
1538
+
1539
+ server . setRequestHandler ( ListToolsRequestSchema , ( ) => ( {
1540
+ tools : [ ] ,
1541
+ } ) ) ;
1542
+
1543
+ const [ clientTransport , serverTransport ] =
1544
+ InMemoryTransport . createLinkedPair ( ) ;
1545
+
1546
+ const client = new Client (
1547
+ {
1548
+ name : "test client" ,
1549
+ version : "1.0" ,
1550
+ } ,
1551
+ {
1552
+ capabilities : {
1553
+ sampling : { } ,
1554
+ } ,
1555
+ } ,
1556
+ ) ;
1557
+
1558
+ await Promise . all ( [
1559
+ client . connect ( clientTransport ) ,
1560
+ server . connect ( serverTransport ) ,
1561
+ ] ) ;
1562
+
1563
+ const promptsResult = await client . listPrompts ( ) ;
1564
+ const resourcesResult = await client . listResources ( ) ;
1565
+ const resourceTemplatesResult = await client . listResourceTemplates ( ) ;
1566
+ const toolsResult = await client . listTools ( ) ;
1567
+
1568
+ expect ( promptsResult . prompts ) . toEqual ( [ ] ) ;
1569
+ expect ( resourcesResult . resources ) . toEqual ( [ ] ) ;
1570
+ expect ( resourceTemplatesResult . resourceTemplates ) . toEqual ( [ ] ) ;
1571
+ expect ( toolsResult . tools ) . toEqual ( [ ] ) ;
1572
+ } ) ;
1573
+
1574
+ test ( "should return empty arrays for all list methods when server has capabilities but no handlers" , async ( ) => {
1575
+ const server = new Server (
1576
+ {
1577
+ name : "test server" ,
1578
+ version : "1.0" ,
1579
+ } ,
1580
+ {
1581
+ capabilities : {
1582
+ prompts : { } ,
1583
+ resources : { } ,
1584
+ tools : { } ,
1585
+ } ,
1586
+ } ,
1587
+ ) ;
1588
+
1589
+ server . setRequestHandler ( InitializeRequestSchema , ( _request ) => ( {
1590
+ protocolVersion : LATEST_PROTOCOL_VERSION ,
1591
+ capabilities : {
1592
+ prompts : { } ,
1593
+ resources : { } ,
1594
+ tools : { } ,
1595
+ } ,
1596
+ serverInfo : {
1597
+ name : "test" ,
1598
+ version : "1.0" ,
1599
+ } ,
1600
+ } ) ) ;
1601
+
1602
+ const [ clientTransport , serverTransport ] =
1603
+ InMemoryTransport . createLinkedPair ( ) ;
1604
+
1605
+ const client = new Client (
1606
+ {
1607
+ name : "test client" ,
1608
+ version : "1.0" ,
1609
+ } ,
1610
+ {
1611
+ capabilities : {
1612
+ sampling : { } ,
1613
+ } ,
1614
+ } ,
1615
+ ) ;
1616
+
1617
+ await Promise . all ( [
1618
+ client . connect ( clientTransport ) ,
1619
+ server . connect ( serverTransport ) ,
1620
+ ] ) ;
1621
+
1622
+ const promptsResult = await client . listPrompts ( ) ;
1623
+ const resourcesResult = await client . listResources ( ) ;
1624
+ const resourceTemplatesResult = await client . listResourceTemplates ( ) ;
1625
+ const toolsResult = await client . listTools ( ) ;
1626
+
1627
+ expect ( promptsResult . prompts ) . toEqual ( [ ] ) ;
1628
+ expect ( resourcesResult . resources ) . toEqual ( [ ] ) ;
1629
+ expect ( resourceTemplatesResult . resourceTemplates ) . toEqual ( [ ] ) ;
1630
+ expect ( toolsResult . tools ) . toEqual ( [ ] ) ;
1631
+ } ) ;
0 commit comments