@@ -260,20 +260,62 @@ func TestSessionResourcesWithGlobalResources(t *testing.T) {
260260	)
261261	require .NoError (t , err )
262262
263- 	// Get effective resources (global +  session)  
264- 	sessionResources  :=  session . GetSessionResources ( )
263+ 	// Create a context with the  session for server operations  
264+ 	sessionCtx  :=  server . WithContext ( ctx ,  session )
265265
266- 	// Session should have 2 session-specific resources 
267- 	assert .Len (t , sessionResources , 2 )
266+ 	// Test ListResources to verify merge behavior 
267+ 	listResult , rerr  :=  server .handleListResources (sessionCtx , "test-id" , mcp.ListResourcesRequest {})
268+ 	require .Nil (t , rerr )
269+ 	require .NotNil (t , listResult )
268270
269- 	// Verify that session resource overrides work correctly 
270- 	overriddenResource  :=  sessionResources ["test://global1" ]
271- 	assert .Equal (t , "Session Override Resource" , overriddenResource .Resource .Name )
271+ 	// Should have 3 resources: global2, session-overridden global1, and session1 
272+ 	assert .Len (t , listResult .Resources , 3 )
272273
273- 	// Test read operations use correct handlers 
274- 	contents , err  :=  sessionResources ["test://global1" ].Handler (ctx , mcp.ReadResourceRequest {Params : mcp.ReadResourceParams {URI : "test://global1" }})
275- 	require .NoError (t , err )
276- 	assert .Equal (t , "session override content" , contents [0 ].(mcp.TextResourceContents ).Text )
274+ 	// Verify all expected resources are present 
275+ 	resourceMap  :=  make (map [string ]mcp.Resource )
276+ 	for  _ , r  :=  range  listResult .Resources  {
277+ 		resourceMap [r .URI ] =  r 
278+ 	}
279+ 
280+ 	// Global resource 2 should appear unchanged 
281+ 	assert .Contains (t , resourceMap , "test://global2" )
282+ 	assert .Equal (t , "Global Resource 2" , resourceMap ["test://global2" ].Name )
283+ 
284+ 	// Global resource 1 should be overridden by session resource 
285+ 	assert .Contains (t , resourceMap , "test://global1" )
286+ 	assert .Equal (t , "Session Override Resource" , resourceMap ["test://global1" ].Name )
287+ 
288+ 	// Session-only resource should appear 
289+ 	assert .Contains (t , resourceMap , "test://session1" )
290+ 	assert .Equal (t , "Session Resource 1" , resourceMap ["test://session1" ].Name )
291+ 
292+ 	// Test ReadResource to verify handlers are correctly resolved 
293+ 	// Test reading the overridden resource - should use session handler 
294+ 	readResult1 , rerr  :=  server .handleReadResource (sessionCtx , "test-id" , mcp.ReadResourceRequest {
295+ 		Params : mcp.ReadResourceParams {URI : "test://global1" },
296+ 	})
297+ 	require .Nil (t , rerr )
298+ 	require .NotNil (t , readResult1 )
299+ 	assert .Len (t , readResult1 .Contents , 1 )
300+ 	assert .Equal (t , "session override content" , readResult1 .Contents [0 ].(mcp.TextResourceContents ).Text )
301+ 
302+ 	// Test reading global resource that wasn't overridden 
303+ 	readResult2 , rerr  :=  server .handleReadResource (sessionCtx , "test-id" , mcp.ReadResourceRequest {
304+ 		Params : mcp.ReadResourceParams {URI : "test://global2" },
305+ 	})
306+ 	require .Nil (t , rerr )
307+ 	require .NotNil (t , readResult2 )
308+ 	assert .Len (t , readResult2 .Contents , 1 )
309+ 	assert .Equal (t , "global content 2" , readResult2 .Contents [0 ].(mcp.TextResourceContents ).Text )
310+ 
311+ 	// Test reading session-only resource 
312+ 	readResult3 , rerr  :=  server .handleReadResource (sessionCtx , "test-id" , mcp.ReadResourceRequest {
313+ 		Params : mcp.ReadResourceParams {URI : "test://session1" },
314+ 	})
315+ 	require .Nil (t , rerr )
316+ 	require .NotNil (t , readResult3 )
317+ 	assert .Len (t , readResult3 .Contents , 1 )
318+ 	assert .Equal (t , "session content 1" , readResult3 .Contents [0 ].(mcp.TextResourceContents ).Text )
277319}
278320
279321// TestAddSessionResourcesUninitialized tests adding resources to uninitialized session 
0 commit comments