VisualReCode / Cocoon

An implementation of the Strangler Fig pattern for ASP.NET Core
Apache License 2.0
62 stars 10 forks source link

Bug: Blazor route discovery cannot discriminate subroutes after a parameter #35

Open conficient opened 1 year ago

conficient commented 1 year ago

A set of routes with different subroutes after a parameter overwrite previous routes causing mismatch.

In the BlazorRouteTests amend the code for MatchesTemplateWithParameters as follows:

        [Fact]
        public void MatchesTemplateWithParameters()
        {
            string[] templates =
            {
                "/Cats/{id}/Breed",
                "/Cats/{id}",
                "/Cats/{id}/Owner",
            };
            var target = new BlazorRoutes(templates);
            Assert.True(target.Contains("cats/42"));
            Assert.True(target.Contains("cats/42/owner"));
            Assert.True(target.Contains("cats/42/breed"));
        }

The first two tests pass but the second fails, because the last parameter route (owner) overwrites the prior one.

conficient commented 1 year ago

Seems to be a logic error in RoutePart.cs when adding routes..