Files
wehub-resource-sync 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
chore: import upstream snapshot with attribution
2026-07-13 13:39:25 +08:00

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);
}
}