@@ -297,4 +297,81 @@ public void AddMcpInspectorWithConfigurationDelegateCreatesResourceCorrectly()
297297        Assert . Equal ( 3333 ,  clientEndpoint . Port ) ; 
298298        Assert . Equal ( 4444 ,  serverEndpoint . Port ) ; 
299299    } 
300+ 
301+     [ Fact ] 
302+     public  void  WithMcpServerCreatesResourceRelationshipAnnotations ( ) 
303+     { 
304+         // Arrange 
305+         var  appBuilder  =  DistributedApplication . CreateBuilder ( ) ; 
306+ 
307+         // Create a mock MCP server resource 
308+         var  mockServer  =  appBuilder . AddProject < Projects . CommunityToolkit_Aspire_Hosting_McpInspector_McpServer > ( "mcpServer" ) ; 
309+ 
310+         // Act 
311+         var  inspector  =  appBuilder . AddMcpInspector ( "inspector" ) 
312+             . WithMcpServer ( mockServer ,  isDefault :  true ) ; 
313+ 
314+         using  var  app  =  appBuilder . Build ( ) ; 
315+ 
316+         // Assert 
317+         var  appModel  =  app . Services . GetRequiredService < DistributedApplicationModel > ( ) ; 
318+ 
319+         var  inspectorResource  =  Assert . Single ( appModel . Resources . OfType < McpInspectorResource > ( ) ) ; 
320+         var  serverResource  =  appModel . Resources . Single ( r =>  r . Name  ==  "mcpServer" ) ; 
321+ 
322+         // The inspector and/or server should have a resource relationship annotation linking them. 
323+         var  serverHasRelationship  =  serverResource . TryGetAnnotationsOfType < ResourceRelationshipAnnotation > ( out  var  serverRelationships ) ; 
324+         var  inspectorHasRelationship  =  inspectorResource . TryGetAnnotationsOfType < ResourceRelationshipAnnotation > ( out  var  inspectorRelationships ) ; 
325+ 
326+         Assert . True ( serverHasRelationship  ||  inspectorHasRelationship ,  "Expected a ResourceRelationshipAnnotation on either the server or inspector resource." ) ; 
327+     } 
328+ 
329+     [ Fact ] 
330+     public  void  WithMcpServerPreservesCustomPathSegments ( ) 
331+     { 
332+         // Arrange 
333+         var  appBuilder  =  DistributedApplication . CreateBuilder ( ) ; 
334+ 
335+         // Create a mock MCP server resource 
336+         var  mockServer  =  appBuilder . AddProject < Projects . CommunityToolkit_Aspire_Hosting_McpInspector_McpServer > ( "mcpServer" ) ; 
337+ 
338+         // Act 
339+         var  inspector  =  appBuilder . AddMcpInspector ( "inspector" ) 
340+             . WithMcpServer ( mockServer ,  isDefault :  true ,  path :  "/route/mcp" ) ; 
341+ 
342+         using  var  app  =  appBuilder . Build ( ) ; 
343+ 
344+         // Assert 
345+         var  appModel  =  app . Services . GetRequiredService < DistributedApplicationModel > ( ) ; 
346+ 
347+         var  inspectorResource  =  Assert . Single ( appModel . Resources . OfType < McpInspectorResource > ( ) ) ; 
348+ 
349+         Assert . Single ( inspectorResource . McpServers ) ; 
350+         var  serverMeta  =  inspectorResource . McpServers . Single ( ) ; 
351+ 
352+         // Path should be preserved exactly as provided (not url-encoded) 
353+         Assert . Equal ( "/route/mcp" ,  serverMeta . Path ) ; 
354+     } 
355+ 
356+     [ Fact ] 
357+     public  void  CombineHandlesMultipleSegmentsAndDoesNotEncodeSlashes ( ) 
358+     { 
359+         // Arrange 
360+         var  baseUrl  =  "http://localhost:1234" ; 
361+         var  segments  =  new [ ]  {  "/route/mcp" ,  "nested/path"  } ; 
362+ 
363+         // Use reflection to call internal Combine 
364+         var  type  =  typeof ( McpInspectorResourceBuilderExtensions ) ; 
365+         var  method  =  type . GetMethod ( "Combine" ,  System . Reflection . BindingFlags . NonPublic  |  System . Reflection . BindingFlags . Static ) ; 
366+         Assert . NotNull ( method ) ; 
367+ 
368+         // Act 
369+         var  result  =  method ! . Invoke ( null ,  new  object [ ]  {  baseUrl ,  segments  } )  as  Uri ; 
370+ 
371+         // Assert 
372+         Assert . NotNull ( result ) ; 
373+         // Ensure that slashes from segments are preserved and not percent-encoded 
374+         var  expected  =  new  Uri ( "http://localhost:1234/route/mcp/nested/path" ) ; 
375+         Assert . Equal ( expected ,  result ) ; 
376+     } 
300377} 
0 commit comments