Forge
csharpdeeb25a2
1using CascadeIDE.Features.WebAiPortal.Application;
2using Xunit;
3
4namespace CascadeIDE.Tests;
5
6public sealed class WebAiPortalUrlNormalizeTests
7{
8 [Theory]
9 [InlineData("", "about:blank")]
10 [InlineData(" ", "about:blank")]
11 [InlineData("example.com", "https://example.com/")]
12 [InlineData("/example.com", "https://example.com/")]
13 [InlineData("//example.com/path", "https://example.com/path")]
14 [InlineData("https://example.com/a", "https://example.com/a")]
15 public void TryBuildNavigationUri_HappyPath_Normalizes(string input, string expectedUriPrefix)
16 {
17 Assert.True(WebAiPortalUrlNormalize.TryBuildNavigationUri(input, out var uri, out var normalized));
18 Assert.NotNull(uri);
19 Assert.StartsWith(expectedUriPrefix.TrimEnd('/'), normalized.TrimEnd('/'), StringComparison.OrdinalIgnoreCase);
20 }
21
22 [Theory]
23 [InlineData("localhost:5000")]
24 [InlineData("127.0.0.1:8080")]
25 [InlineData("[::1]:3000")]
26 public void TryBuildNavigationUri_Localhost_PrefersHttp(string input)
27 {
28 Assert.True(WebAiPortalUrlNormalize.TryBuildNavigationUri(input, out var uri, out _));
29 Assert.Equal(Uri.UriSchemeHttp, uri!.Scheme);
30 }
31
32 [Theory]
33 [InlineData("not a url :::")]
34 [InlineData(":")]
35 public void TryBuildNavigationUri_Invalid_ReturnsFalse(string input) =>
36 Assert.False(WebAiPortalUrlNormalize.TryBuildNavigationUri(input, out _, out _));
37}
38
View only · write via MCP/CIDE