@@ -1065,6 +1065,63 @@ describe("Server.resource", () => {
10651065 ) ;
10661066 } ) ;
10671067
1068+ test ( "should register resource template with listCallback" , async ( ) => {
1069+ const server = new Server ( {
1070+ name : "test server" ,
1071+ version : "1.0" ,
1072+ } ) ;
1073+ const client = new Client ( {
1074+ name : "test client" ,
1075+ version : "1.0" ,
1076+ } ) ;
1077+
1078+ server . resource (
1079+ "test" ,
1080+ new UriTemplate ( "test://resource/{id}" ) ,
1081+ async ( ) => ( {
1082+ resources : [
1083+ {
1084+ name : "Resource 1" ,
1085+ uri : "test://resource/1" ,
1086+ } ,
1087+ {
1088+ name : "Resource 2" ,
1089+ uri : "test://resource/2" ,
1090+ } ,
1091+ ] ,
1092+ } ) ,
1093+ async ( uri ) => ( {
1094+ contents : [
1095+ {
1096+ uri : uri . href ,
1097+ text : "Test content" ,
1098+ } ,
1099+ ] ,
1100+ } ) ,
1101+ ) ;
1102+
1103+ const [ clientTransport , serverTransport ] =
1104+ InMemoryTransport . createLinkedPair ( ) ;
1105+
1106+ await Promise . all ( [
1107+ client . connect ( clientTransport ) ,
1108+ server . connect ( serverTransport ) ,
1109+ ] ) ;
1110+
1111+ const result = await client . request (
1112+ {
1113+ method : "resources/list" ,
1114+ } ,
1115+ ListResourcesResultSchema ,
1116+ ) ;
1117+
1118+ expect ( result . resources ) . toHaveLength ( 2 ) ;
1119+ expect ( result . resources [ 0 ] . name ) . toBe ( "Resource 1" ) ;
1120+ expect ( result . resources [ 0 ] . uri ) . toBe ( "test://resource/1" ) ;
1121+ expect ( result . resources [ 1 ] . name ) . toBe ( "Resource 2" ) ;
1122+ expect ( result . resources [ 1 ] . uri ) . toBe ( "test://resource/2" ) ;
1123+ } ) ;
1124+
10681125 test ( "should prevent duplicate resource registration" , ( ) => {
10691126 const server = new Server ( {
10701127 name : "test server" ,
0 commit comments