|
15 | 15 | using Microsoft.AspNetCore.Mvc;
|
16 | 16 | using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
17 | 17 | using Microsoft.AspNetCore.Routing;
|
| 18 | + using Microsoft.AspNetCore.Routing.Constraints; |
18 | 19 | using Microsoft.Extensions.Caching.Memory;
|
19 | 20 | using Microsoft.Extensions.Configuration;
|
20 | 21 | using Microsoft.Extensions.DependencyInjection;
|
@@ -769,5 +770,75 @@ public void EndpointRoutesShouldHaveAttributeRouteRegistered()
|
769 | 770 | Assert.NotNull(attributeRoute);
|
770 | 771 | Assert.Contains(nameof(Attribute), attributeRoute.GetType().Name);
|
771 | 772 | }
|
| 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 | + } |
772 | 843 | }
|
773 | 844 | }
|
0 commit comments