| File: Mcp\McpToolHelpersTests.cs | Web Access |
| Project: src\tests\Aspire.Cli.Tests\Aspire.Cli.Tests.csproj (Aspire.Cli.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Cli.Mcp.Tools; namespace Aspire.Cli.Tests.Mcp; public class McpToolHelpersTests { [Theory] [InlineData(null, null)] [InlineData("http://localhost:18888", "http://localhost:18888")] [InlineData("http://localhost:18888/", "http://localhost:18888")] [InlineData("http://localhost:18888/login", "http://localhost:18888")] [InlineData("http://localhost:18888/login?t=authtoken123", "http://localhost:18888")] [InlineData("https://localhost:16319/login?t=d8d8255df4c79aebcb5b7325828ccb20", "https://localhost:16319")] [InlineData("https://example.com:8080/path/to/resource?param=value", "https://example.com:8080/path/to/resource")] [InlineData("https://example.com:8080/dashboard", "https://example.com:8080/dashboard")] [InlineData("http://localhost/base/login", "http://localhost/base")] [InlineData("http://localhost/base/login?t=token123", "http://localhost/base")] [InlineData("https://example.com:8080/app/deep/login?t=abc", "https://example.com:8080/app/deep")] [InlineData("invalid-url", "invalid-url")] // Falls back to returning the original string public void StripLoginPath_RemovesOnlyLoginSegment(string? input, string? expected) { var result = McpToolHelpers.StripLoginPath(input); Assert.Equal(expected, result); } [Theory] [InlineData(null, null)] [InlineData("http://localhost:18888", null)] [InlineData("http://localhost:18888/login", null)] // No query string [InlineData("http://localhost:18888/login?t=authtoken123", "authtoken123")] [InlineData("https://localhost:16319/login?t=d8d8255df4c79aebcb5b7325828ccb20", "d8d8255df4c79aebcb5b7325828ccb20")] [InlineData("http://localhost/base/login?t=token123", "token123")] [InlineData("https://example.com:8080/app/deep/login?t=abc", "abc")] [InlineData("http://localhost:18888/login?other=value", null)] // No 't' parameter [InlineData("http://localhost:18888/login?t=", null)] // Empty token [InlineData("http://localhost:18888/notlogin?t=abc", null)] // Path doesn't end with /login [InlineData("invalid-url", null)] public void ExtractLoginToken_ExtractsTokenFromLoginUrl(string? input, string? expected) { var result = McpToolHelpers.ExtractLoginToken(input); Assert.Equal(expected, result); } }