db620d33df
CodeQL / Analyze (csharp) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
dotnet-build-and-test / dotnet-test-functions (push) Has been cancelled
dotnet-build-and-test / paths-filter (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Debug, windows-latest, net9.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net8.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-foundry-hosted-it (push) Has been cancelled
dotnet-build-and-test / dotnet-build-and-test-check (push) Has been cancelled
dotnet-build-and-test / Integration Test Report (push) Has been cancelled
97 lines
2.8 KiB
C#
97 lines
2.8 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
using System;
|
|
|
|
namespace Microsoft.Agents.AI.Foundry.UnitTests;
|
|
|
|
public class HostedMcpToolboxAIToolTests
|
|
{
|
|
[Fact]
|
|
public void Ctor_NameOnly_BuildsMarkerAddress()
|
|
{
|
|
var tool = new HostedMcpToolboxAITool("my-toolbox");
|
|
|
|
Assert.Equal("my-toolbox", tool.ToolboxName);
|
|
Assert.Null(tool.Version);
|
|
Assert.Equal("my-toolbox", tool.ServerName);
|
|
Assert.Equal("foundry-toolbox://my-toolbox", tool.ServerAddress);
|
|
Assert.Equal("mcp", tool.Name);
|
|
}
|
|
|
|
[Fact]
|
|
public void Ctor_WithVersion_IncludesVersionQuery()
|
|
{
|
|
var tool = new HostedMcpToolboxAITool("my-toolbox", "v3");
|
|
|
|
Assert.Equal("v3", tool.Version);
|
|
Assert.Equal("foundry-toolbox://my-toolbox?version=v3", tool.ServerAddress);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(null)]
|
|
[InlineData("")]
|
|
[InlineData(" ")]
|
|
public void Ctor_InvalidName_Throws(string? name)
|
|
{
|
|
Assert.ThrowsAny<ArgumentException>(() => new HostedMcpToolboxAITool(name!));
|
|
}
|
|
|
|
[Fact]
|
|
public void TryParseToolboxAddress_NameOnly_ReturnsTrue()
|
|
{
|
|
var ok = HostedMcpToolboxAITool.TryParseToolboxAddress(
|
|
"foundry-toolbox://my-toolbox", out var name, out var version);
|
|
|
|
Assert.True(ok);
|
|
Assert.Equal("my-toolbox", name);
|
|
Assert.Null(version);
|
|
}
|
|
|
|
[Fact]
|
|
public void TryParseToolboxAddress_WithVersion_ExtractsVersion()
|
|
{
|
|
var ok = HostedMcpToolboxAITool.TryParseToolboxAddress(
|
|
"foundry-toolbox://my-toolbox?version=v3", out var name, out var version);
|
|
|
|
Assert.True(ok);
|
|
Assert.Equal("my-toolbox", name);
|
|
Assert.Equal("v3", version);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("https://example.com/mcp")]
|
|
[InlineData("not-a-url")]
|
|
[InlineData("")]
|
|
[InlineData(null)]
|
|
public void TryParseToolboxAddress_NonMarker_ReturnsFalse(string? address)
|
|
{
|
|
var ok = HostedMcpToolboxAITool.TryParseToolboxAddress(address, out var name, out var version);
|
|
|
|
Assert.False(ok);
|
|
Assert.Null(name);
|
|
Assert.Null(version);
|
|
}
|
|
|
|
[Fact]
|
|
public void TryParseToolboxAddress_RoundTripsFromBuild()
|
|
{
|
|
var address = HostedMcpToolboxAITool.BuildAddress("box", "2025-06-01");
|
|
|
|
var ok = HostedMcpToolboxAITool.TryParseToolboxAddress(address, out var name, out var version);
|
|
|
|
Assert.True(ok);
|
|
Assert.Equal("box", name);
|
|
Assert.Equal("2025-06-01", version);
|
|
}
|
|
|
|
[Fact]
|
|
public void FoundryAITool_CreateHostedMcpToolbox_ReturnsMarker()
|
|
{
|
|
var tool = FoundryAITool.CreateHostedMcpToolbox("my-toolbox", "v1");
|
|
|
|
var marker = Assert.IsType<HostedMcpToolboxAITool>(tool);
|
|
Assert.Equal("my-toolbox", marker.ToolboxName);
|
|
Assert.Equal("v1", marker.Version);
|
|
}
|
|
}
|