Move functionality out of IMcpClient/Server into extensions (#60)
This commit is contained in:
parent
cdcf134e7a
commit
67320b22d5
1 changed files with 1042 additions and 708 deletions
|
|
@ -1,6 +1,6 @@
|
|||
using McpDotNet.Protocol.Types;
|
||||
using McpDotNet.Protocol.Messages;
|
||||
using McpDotNet.Protocol.Types;
|
||||
using McpDotNet.Server;
|
||||
using Moq;
|
||||
|
||||
namespace McpDotNet.Tests.Server;
|
||||
|
||||
|
|
@ -10,8 +10,7 @@ public class McpServerDelegatesTests
|
|||
public void Applies_All_Given_Delegates()
|
||||
{
|
||||
var container = new McpServerDelegates();
|
||||
var server = new Mock<IMcpServer>();
|
||||
server.SetupAllProperties();
|
||||
var server = new ExposeSetHandlersServer();
|
||||
|
||||
container.ListToolsHandler = (p, c) => Task.FromResult(new ListToolsResult());
|
||||
container.CallToolHandler = (p, c) => Task.FromResult(new CallToolResponse());
|
||||
|
|
@ -23,16 +22,33 @@ public class McpServerDelegatesTests
|
|||
container.SubscribeToResourcesHandler = (s, c) => Task.CompletedTask;
|
||||
container.UnsubscribeFromResourcesHandler = (s, c) => Task.CompletedTask;
|
||||
|
||||
container.Apply(server.Object);
|
||||
container.Apply(server);
|
||||
|
||||
Assert.Equal(container.ListToolsHandler, server.Object.ListToolsHandler);
|
||||
Assert.Equal(container.CallToolHandler, server.Object.CallToolHandler);
|
||||
Assert.Equal(container.ListPromptsHandler, server.Object.ListPromptsHandler);
|
||||
Assert.Equal(container.GetPromptHandler, server.Object.GetPromptHandler);
|
||||
Assert.Equal(container.ListResourcesHandler, server.Object.ListResourcesHandler);
|
||||
Assert.Equal(container.ReadResourceHandler, server.Object.ReadResourceHandler);
|
||||
Assert.Equal(container.GetCompletionHandler, server.Object.GetCompletionHandler);
|
||||
Assert.Equal(container.SubscribeToResourcesHandler, server.Object.SubscribeToResourcesHandler);
|
||||
Assert.Equal(container.UnsubscribeFromResourcesHandler, server.Object.UnsubscribeFromResourcesHandler);
|
||||
Assert.Equal(container.ListToolsHandler, server.Handlers[OperationNames.ListTools]);
|
||||
Assert.Equal(container.CallToolHandler, server.Handlers[OperationNames.CallTool]);
|
||||
Assert.Equal(container.ListPromptsHandler, server.Handlers[OperationNames.ListPrompts]);
|
||||
Assert.Equal(container.GetPromptHandler, server.Handlers[OperationNames.GetPrompt]);
|
||||
Assert.Equal(container.ListResourcesHandler, server.Handlers[OperationNames.ListResources]);
|
||||
Assert.Equal(container.ReadResourceHandler, server.Handlers[OperationNames.ReadResource]);
|
||||
Assert.Equal(container.GetCompletionHandler, server.Handlers[OperationNames.GetCompletion]);
|
||||
Assert.Equal(container.SubscribeToResourcesHandler, server.Handlers[OperationNames.SubscribeToResources]);
|
||||
Assert.Equal(container.UnsubscribeFromResourcesHandler, server.Handlers[OperationNames.UnsubscribeFromResources]);
|
||||
}
|
||||
|
||||
private sealed class ExposeSetHandlersServer : IMcpServer
|
||||
{
|
||||
public Dictionary<string, Delegate> Handlers = [];
|
||||
|
||||
public void SetOperationHandler(string operationName, Delegate handler) => Handlers[operationName] = handler;
|
||||
|
||||
public ValueTask DisposeAsync() => default;
|
||||
public bool IsInitialized => throw new NotImplementedException();
|
||||
public ClientCapabilities? ClientCapabilities => throw new NotImplementedException();
|
||||
public Implementation? ClientInfo => throw new NotImplementedException();
|
||||
public IServiceProvider? ServiceProvider => throw new NotImplementedException();
|
||||
public void AddNotificationHandler(string method, Func<JsonRpcNotification, Task> handler) => throw new NotImplementedException();
|
||||
public Task SendMessageAsync(IJsonRpcMessage message, CancellationToken cancellationToken = default) => throw new NotImplementedException();
|
||||
public Task<T> SendRequestAsync<T>(JsonRpcRequest request, CancellationToken cancellationToken) where T : class => throw new NotImplementedException();
|
||||
public Task StartAsync(CancellationToken cancellationToken = default) => throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue