Skip to content

Commit 8fcb99f

Browse files
committed
Added a test to validate Endpoint routing (#326)
1 parent ca9fc8d commit 8fcb99f

File tree

2 files changed

+99
-0
lines changed

2 files changed

+99
-0
lines changed

test/MyTested.AspNetCore.Mvc.Abstractions.Test/ServicesTests.cs

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using Microsoft.AspNetCore.Mvc;
1616
using Microsoft.AspNetCore.Mvc.ViewFeatures;
1717
using Microsoft.AspNetCore.Routing;
18+
using Microsoft.AspNetCore.Routing.Constraints;
1819
using Microsoft.Extensions.Caching.Memory;
1920
using Microsoft.Extensions.Configuration;
2021
using Microsoft.Extensions.DependencyInjection;
@@ -769,5 +770,75 @@ public void EndpointRoutesShouldHaveAttributeRouteRegistered()
769770
Assert.NotNull(attributeRoute);
770771
Assert.Contains(nameof(Attribute), attributeRoute.GetType().Name);
771772
}
773+
774+
[Fact]
775+
public void EndpointRoutesShouldRegisterCorrectValues()
776+
{
777+
MyApplication.StartsFrom<EndpointsRoutingStartup>();
778+
779+
var routes = TestApplication.Router as RouteCollection;
780+
781+
Assert.NotNull(routes);
782+
Assert.Equal(3, routes.Count);
783+
784+
var attributeRoute = routes[0];
785+
786+
Assert.Contains(nameof(Attribute), attributeRoute.GetType().Name);
787+
788+
var areaRoute = routes[1] as Route;
789+
790+
Assert.NotNull(areaRoute);
791+
Assert.Equal("files", areaRoute.Name);
792+
Assert.Equal("Files/{controller=Default}/{action=Test}/{fileName=None}", areaRoute.RouteTemplate);
793+
794+
var areaRouteDefaults = areaRoute.Defaults;
795+
796+
Assert.Equal(4, areaRouteDefaults.Count);
797+
798+
var areaKey = "area";
799+
800+
Assert.Contains(areaKey, areaRouteDefaults.Keys);
801+
Assert.Equal("Files", areaRouteDefaults[areaKey]);
802+
803+
var normalRoute = routes[2] as Route;
804+
805+
Assert.NotNull(normalRoute);
806+
Assert.Equal("test", normalRoute.Name);
807+
Assert.Equal("Test/{action=Index}/{id?}", normalRoute.RouteTemplate);
808+
809+
var normalRouteDefaults = normalRoute.Defaults;
810+
var controllerKey = "controller";
811+
812+
Assert.Contains(controllerKey, normalRouteDefaults.Keys);
813+
Assert.Equal("Test", normalRouteDefaults[controllerKey]);
814+
815+
var normalRouteConstraints = normalRoute.Constraints;
816+
var idKey = "id";
817+
818+
Assert.Contains(idKey, normalRouteConstraints.Keys);
819+
820+
var optionalRouteConstraint = normalRouteConstraints[idKey] as OptionalRouteConstraint;
821+
822+
Assert.NotNull(optionalRouteConstraint);
823+
824+
var regexRouteConstraint = optionalRouteConstraint.InnerConstraint as RegexRouteConstraint;
825+
826+
Assert.NotNull(regexRouteConstraint);
827+
Assert.Equal(@"^(\d)$", regexRouteConstraint.Constraint.ToString());
828+
829+
var normalRouteDataTokens = normalRoute.DataTokens;
830+
831+
Assert.Equal(2, normalRouteDataTokens.Count);
832+
833+
var firstDataTokenKey = "random";
834+
var secondDataTokenKey = "another";
835+
836+
Assert.Contains(firstDataTokenKey, normalRouteDataTokens.Keys);
837+
Assert.Equal("value", normalRouteDataTokens[firstDataTokenKey]);
838+
Assert.Contains(secondDataTokenKey, normalRouteDataTokens.Keys);
839+
Assert.Equal("token", normalRouteDataTokens[secondDataTokenKey]);
840+
841+
MyApplication.StartsFrom<DefaultStartup>();
842+
}
772843
}
773844
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
namespace MyTested.AspNetCore.Mvc.Test.Setups.Startups
2+
{
3+
using Microsoft.AspNetCore.Builder;
4+
using Microsoft.Extensions.DependencyInjection;
5+
6+
public class EndpointsRoutingStartup
7+
{
8+
public virtual void ConfigureServices(IServiceCollection services)
9+
=> services.AddMvc();
10+
11+
public virtual void Configure(IApplicationBuilder app) => app
12+
.UseRouting()
13+
.UseEndpoints(endpoints =>
14+
{
15+
endpoints.MapAreaControllerRoute(
16+
name: "files",
17+
areaName: "Files",
18+
pattern: "Files/{controller=Default}/{action=Test}/{fileName=None}");
19+
20+
endpoints.MapControllerRoute(
21+
name: "test",
22+
pattern: "Test/{action=Index}/{id?}",
23+
defaults: new { controller = "Test" },
24+
constraints: new { id = @"\d" },
25+
dataTokens: new { random = "value", another = "token" });
26+
});
27+
}
28+
}

0 commit comments

Comments
 (0)