71 lines
1.9 KiB
C#
71 lines
1.9 KiB
C#
using Xunit;
|
|
using FluentAssertions;
|
|
using NSubstitute;
|
|
using FreeCode.Core.Interfaces;
|
|
using FreeCode.Core.Models;
|
|
using FreeCode.Mcp;
|
|
using FreeCode.Tests.Unit.Helpers;
|
|
|
|
namespace FreeCode.Tests.Unit.Mcp;
|
|
|
|
public sealed class McpClientManagerTests
|
|
{
|
|
[Fact]
|
|
public void GetConnections_WithoutStateOrDiskConfig_ReturnsEmpty()
|
|
{
|
|
var manager = new McpClientManager();
|
|
|
|
manager.GetConnections().Should().BeEmpty();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task ConnectServerAsync_WithUnknownServer_ThrowsKeyNotFoundException()
|
|
{
|
|
var manager = new McpClientManager();
|
|
|
|
var act = async () => await manager.ConnectServerAsync("missing");
|
|
|
|
await act.Should().ThrowAsync<KeyNotFoundException>();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task DisconnectServerAsync_WithUnknownServer_CompletesWithoutThrowing()
|
|
{
|
|
var manager = new McpClientManager();
|
|
|
|
var act = async () => await manager.DisconnectServerAsync("missing");
|
|
|
|
await act.Should().NotThrowAsync();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task ReconnectServerAsync_WithUnknownServer_CompletesWithoutThrowing()
|
|
{
|
|
var manager = new McpClientManager();
|
|
|
|
var act = async () => await manager.ReconnectServerAsync("missing");
|
|
|
|
await act.Should().NotThrowAsync();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task AuthenticateServerAsync_WithBlankServerName_ThrowsArgumentException()
|
|
{
|
|
var manager = new McpClientManager();
|
|
|
|
var act = async () => await manager.AuthenticateServerAsync(" ");
|
|
|
|
await act.Should().ThrowAsync<ArgumentException>();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task AuthenticateServerAsync_WithUnknownServer_ThrowsKeyNotFoundException()
|
|
{
|
|
var manager = new McpClientManager();
|
|
|
|
var act = async () => await manager.AuthenticateServerAsync("missing");
|
|
|
|
await act.Should().ThrowAsync<KeyNotFoundException>();
|
|
}
|
|
}
|