@@ -1065,6 +1065,63 @@ describe("Server.resource", () => {
1065
1065
) ;
1066
1066
} ) ;
1067
1067
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
+
1068
1125
test ( "should prevent duplicate resource registration" , ( ) => {
1069
1126
const server = new Server ( {
1070
1127
name : "test server" ,
0 commit comments