Fix router frontdoor readiness and route contracts
This commit is contained in:
@@ -29,8 +29,9 @@ public sealed class StellaOpsRouteResolverTests
|
||||
|
||||
var result = resolver.Resolve(new PathString("/dashboard"));
|
||||
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal("/dashboard", result.Path);
|
||||
Assert.NotNull(result.Route);
|
||||
Assert.Equal("/dashboard", result.Route.Path);
|
||||
Assert.Null(result.RegexMatch);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -41,8 +42,9 @@ public sealed class StellaOpsRouteResolverTests
|
||||
|
||||
var result = resolver.Resolve(new PathString("/app/index.html"));
|
||||
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal("/app", result.Path);
|
||||
Assert.NotNull(result.Route);
|
||||
Assert.Equal("/app", result.Route.Path);
|
||||
Assert.Null(result.RegexMatch);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -53,9 +55,28 @@ public sealed class StellaOpsRouteResolverTests
|
||||
|
||||
var result = resolver.Resolve(new PathString("/api/v2/data"));
|
||||
|
||||
Assert.NotNull(result);
|
||||
Assert.True(result.IsRegex);
|
||||
Assert.Equal(@"^/api/v[0-9]+/.*", result.Path);
|
||||
Assert.NotNull(result.Route);
|
||||
Assert.True(result.Route.IsRegex);
|
||||
Assert.Equal(@"^/api/v[0-9]+/.*", result.Route.Path);
|
||||
Assert.NotNull(result.RegexMatch);
|
||||
Assert.True(result.RegexMatch.Success);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Resolve_RegexRoute_ReturnsCaptureGroups()
|
||||
{
|
||||
var route = MakeRoute(
|
||||
@"^/api/v1/([^/]+)(.*)",
|
||||
isRegex: true,
|
||||
translatesTo: "http://$1.stella-ops.local/api/v1/$1$2");
|
||||
var resolver = new StellaOpsRouteResolver(new[] { route });
|
||||
|
||||
var result = resolver.Resolve(new PathString("/api/v1/scanner/health"));
|
||||
|
||||
Assert.NotNull(result.Route);
|
||||
Assert.NotNull(result.RegexMatch);
|
||||
Assert.Equal("scanner", result.RegexMatch.Groups[1].Value);
|
||||
Assert.Equal("/health", result.RegexMatch.Groups[2].Value);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -66,7 +87,8 @@ public sealed class StellaOpsRouteResolverTests
|
||||
|
||||
var result = resolver.Resolve(new PathString("/unknown"));
|
||||
|
||||
Assert.Null(result);
|
||||
Assert.Null(result.Route);
|
||||
Assert.Null(result.RegexMatch);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -78,8 +100,8 @@ public sealed class StellaOpsRouteResolverTests
|
||||
|
||||
var result = resolver.Resolve(new PathString("/api/resource"));
|
||||
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal("http://first:5000", result.TranslatesTo);
|
||||
Assert.NotNull(result.Route);
|
||||
Assert.Equal("http://first:5000", result.Route.TranslatesTo);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -90,7 +112,7 @@ public sealed class StellaOpsRouteResolverTests
|
||||
|
||||
var result = resolver.Resolve(new PathString("/not-found"));
|
||||
|
||||
Assert.Null(result);
|
||||
Assert.Null(result.Route);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -101,7 +123,7 @@ public sealed class StellaOpsRouteResolverTests
|
||||
|
||||
var result = resolver.Resolve(new PathString("/error"));
|
||||
|
||||
Assert.Null(result);
|
||||
Assert.Null(result.Route);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -112,8 +134,8 @@ public sealed class StellaOpsRouteResolverTests
|
||||
|
||||
var result = resolver.Resolve(new PathString("/APP"));
|
||||
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal("/app", result.Path);
|
||||
Assert.NotNull(result.Route);
|
||||
Assert.Equal("/app", result.Route.Path);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -123,6 +145,6 @@ public sealed class StellaOpsRouteResolverTests
|
||||
|
||||
var result = resolver.Resolve(new PathString("/anything"));
|
||||
|
||||
Assert.Null(result);
|
||||
Assert.Null(result.Route);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user