public UrlResolverTests() { _urlResolver = new UrlResolver( _fhirRequestContextAccessor, _urlHelperFactory, _httpContextAccessor, _actionContextAccessor, _bundleHttpContextAccessor); _fhirRequestContextAccessor.FhirRequestContext.RouteName = DefaultRouteName; _httpContextAccessor.HttpContext.Returns(_httpContext); _httpContext.Request.Scheme = Scheme; _httpContext.Request.Host = new HostString(Host); _actionContextAccessor.ActionContext.Returns(_actionContext); _urlHelper.RouteUrl( Arg.Do <UrlRouteContext>(c => _capturedUrlRouteContext = c)); _urlHelperFactory.GetUrlHelper(_actionContext).Returns(_urlHelper); _urlHelper.RouteUrl(Arg.Any <UrlRouteContext>()).Returns($"{Scheme}://{Host}"); _bundleHttpContextAccessor.HttpContext.Returns((HttpContext)null); }
public void RouteUrlWithUrlRouteContext_ReturnsExpectedResult() { // Arrange var urlHelper = CreateUrlHelperWithDefaultRoutes(); var routeContext = new UrlRouteContext() { RouteName = "namedroute", Values = new { Action = "newaction", Controller = "home2", id = "someid" }, Fragment = "somefragment", Host = "remotetown", Protocol = "ftp" }; // Act var url = urlHelper.RouteUrl(routeContext); // Assert Assert.Equal("ftp://remotetown/app/named/home2/newaction/someid#somefragment", url); }
public async Task RedirectToPage_DoesNotUseAmbientHandler() { // Arrange var expected = "path/to/this-page"; var httpContext = new Mock <HttpContext>(); var httpResponse = new Mock <HttpResponse>(); httpContext.SetupGet(c => c.Response) .Returns(httpResponse.Object); httpContext.SetupGet(c => c.RequestServices) .Returns(CreateServices()); var routeData = new RouteData { Values = { ["page"] = expected, ["handler"] = "delete", } }; var actionContext = new ActionContext( httpContext.Object, routeData, new ActionDescriptor()); UrlRouteContext context = null; var urlHelper = new Mock <IUrlHelper>(); urlHelper.Setup(h => h.RouteUrl(It.IsAny <UrlRouteContext>())) .Callback((UrlRouteContext c) => context = c) .Returns("some-value"); urlHelper.SetupGet(h => h.ActionContext) .Returns(actionContext); var pageName = (string)null; var result = new RedirectToPageResult(pageName) { UrlHelper = urlHelper.Object, }; // Act await result.ExecuteResultAsync(actionContext); // Assert Assert.NotNull(context); Assert.Collection(Assert.IsType <RouteValueDictionary>(context.Values), value => { Assert.Equal("page", value.Key); Assert.Equal(expected, value.Value); }, value => { Assert.Equal("handler", value.Key); Assert.Null(value.Value); }); }
public async Task ExecuteResultAsync_LocalRelativePaths() { // Arrange var httpContext = new DefaultHttpContext { RequestServices = CreateServices(), }; var pageContext = new ActionContext { HttpContext = httpContext, RouteData = new RouteData(), ActionDescriptor = new ActionDescriptor(), }; pageContext.RouteData.Values.Add("page", "/A/Redirecting/Page"); UrlRouteContext context = null; var urlHelper = new Mock <IUrlHelper>(); urlHelper.SetupGet(h => h.ActionContext).Returns(pageContext); urlHelper.Setup(h => h.RouteUrl(It.IsAny <UrlRouteContext>())) .Callback((UrlRouteContext c) => context = c) .Returns("some-value"); var values = new { test = "test-value" }; var result = new RedirectToPageResult("./", "page-handler", values, true, "test-fragment") { UrlHelper = urlHelper.Object, Protocol = "ftp", }; // Act await result.ExecuteResultAsync(pageContext); // Assert Assert.NotNull(context); Assert.Null(context.RouteName); Assert.Collection(Assert.IsType <RouteValueDictionary>(context.Values), value => { Assert.Equal("test", value.Key); Assert.Equal("test-value", value.Value); }, value => { Assert.Equal("page", value.Key); Assert.Equal("/A/Redirecting", value.Value); }, value => { Assert.Equal("handler", value.Key); Assert.Equal("page-handler", value.Value); }); Assert.Equal("ftp", context.Protocol); Assert.Equal("test-fragment", context.Fragment); }
public string RouteUrl(UrlRouteContext routeContext) { var result = $"{routeContext.Protocol}/{routeContext.Host}/{routeContext.RouteName}"; if (routeContext.Values?.GetType().GetProperties().Length != 0) { result += $"/{routeContext.Values}"; } return(result); }
public string RouteUrl(string routeName) { UrlRouteContext context = new UrlRouteContext { RouteName = routeName }; IUrlHelper urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext); return(urlHelper.RouteUrl(context)); }
public string RouteUrl(UrlRouteContext routeContext) { Assert.Equal(_routeName, routeContext.RouteName); Assert.Null(routeContext.Protocol); Assert.Null(routeContext.Host); Assert.Null(routeContext.Fragment); RouteValues = routeContext.Values; return(_url); }
/// <inheritdoc /> #pragma warning disable CA1055 // URI-like return values should not be strings public virtual string RouteUrl(UrlRouteContext routeContext) #pragma warning restore CA1055 { if (routeContext == null) { throw new ArgumentNullException(nameof(routeContext)); } routeContext.Values = AddApiVersionRouteValueIfNecessary(routeContext.Values); return(Url.RouteUrl(routeContext)); }
/// <inheritdoc /> public override string?RouteUrl(UrlRouteContext routeContext) { if (routeContext == null) { throw new ArgumentNullException(nameof(routeContext)); } var valuesDictionary = routeContext.Values as RouteValueDictionary ?? GetValuesDictionary(routeContext.Values); var virtualPathData = GetVirtualPathData(routeContext.RouteName, valuesDictionary); return(GenerateUrl(routeContext.Protocol, routeContext.Host, virtualPathData, routeContext.Fragment)); }
public string RouteUrl(UrlRouteContext routeContext) { if (routeContext.Values is RouteValueDictionary dicionary && dicionary.TryGetValue("page", out var page) && page is string pagePath && ContentPath == pagePath) { return(Url); } return(null); }
/// <inheritdoc /> public virtual string RouteUrl(UrlRouteContext routeContext) { if (string.IsNullOrWhiteSpace(routeContext.Host) && string.IsNullOrWhiteSpace(routeContext.Protocol)) { return(_linkGenerator.GetPathByRouteValues(_httpContextAccessor.HttpContext, routeContext.RouteName, routeContext.Values)); } else { var hostString = routeContext.Host != null ? new HostString(routeContext.Host) : default(HostString?); return(_linkGenerator.GetUriByRouteValues(_httpContextAccessor.HttpContext, routeContext.RouteName, routeContext.Values, routeContext.Protocol, hostString)); } }
/// <summary> /// create dictonary for all supported cultures /// <para>Key: Language display name for label</para> /// <para>Value: Navigation URL</para> /// </summary> /// <returns></returns> private List <LanguageItem> CreateNavDictionary() { var _routeData = CreateRouteDataDictionary(); // if we are redirecting to the home page, then we need // only culture paramter and home page name in route values if (RedirectTo == RedirectTo.HomePage) { ViewContext.RouteData.Values.Clear(); ViewContext.RouteData.Values.Add(CultureKeyName, CultureInfo.CurrentCulture.Name); ViewContext.RouteData.Values.Add("page", $"/{HomePageName}"); } var dic = new List <LanguageItem>(); var urlHelper = new UrlHelper(ViewContext); var cultures = GetSupportedCultures(); foreach (var cul in cultures) { //replace culture value with the relevant one for dropdown list _routeData[CultureKeyName] = cul.Name; var urlRoute = new UrlRouteContext { Values = _routeData }; string url; #if NETCOREAPP2_2 // DotNetCore 2.2 uses EndPointRouting, // so we need to use the link generator to generate url url = _lg.GetPathByRouteValues(httpContext: ViewContext.HttpContext, "", _routeData); #elif NETCOREAPP3_0 || NETCOREAPP3_1 // DotNetCore 3.0 has optional value to use EndPointRouting // First check if EndPointRouting is enabled // Or use generic urlHelper to generate url url = _mvcOps.Value.EnableEndpointRouting ? _lg.GetPathByRouteValues(httpContext: ViewContext.HttpContext, "", _routeData) : urlHelper.RouteUrl(urlRoute); #else // DotNetCore versions before 2.2 uses generic url herlper url = urlHelper.RouteUrl(urlRoute); #endif var label = GetLanguageLabel(cul); dic.Add(new LanguageItem { Name = cul.Name, DisplayText = label, Url = url }); } return(dic); }
private string GetRouteUrl(UrlParameters urlParameters, object routeValues) { UrlRouteContext routeContext = new UrlRouteContext { Fragment = urlParameters.Fragment, Host = urlParameters.HostName, Protocol = urlParameters.Protocol, RouteName = urlParameters.RouteName, Values = routeValues != null ? routeValues : urlParameters.RouteValues }; IUrlHelper urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext); return(urlHelper.RouteUrl(routeContext)); }
/// <inheritdoc /> public override string RouteUrl(UrlRouteContext routeContext) { if (routeContext == null) { throw new ArgumentNullException(nameof(routeContext)); } var path = _linkGenerator.GetPathByRouteValues( ActionContext.HttpContext, routeContext.RouteName, routeContext.Values, fragment: new FragmentString(routeContext.Fragment == null ? "" : "#" + routeContext.Fragment)); return(GenerateUrl(routeContext.Protocol, routeContext.Host, path) ?? ""); }
public UrlResolverTests() { _httpContext.Request.Scheme = DefaultScheme; _httpContext.Request.Host = new HostString(DefaultHost); _httpContextAccessor.HttpContext.Returns(_httpContext); _actionContextAccessor.ActionContext.Returns(_actionContext); _urlHelper.RouteUrl( Arg.Do <UrlRouteContext>(c => _capturedUrlRouteContext = c)); _urlHelperFactory.GetUrlHelper(_actionContext).Returns(_urlHelper); _urlHelper.RouteUrl(Arg.Any <UrlRouteContext>()).Returns($"{DefaultScheme}://{DefaultHost}"); _urlResolver = new UrlResolver( _urlHelperFactory, _httpContextAccessor, _actionContextAccessor); }
/// <summary> /// create dictonary for all supported cultures /// <para>Key: Language display name for label</para> /// <para>Value: Navigation URL</para> /// </summary> /// <returns></returns> private List <LanguageItem> CreateNavDictionary() { var _routeData = CreateRouteDataDictionary(); // if we are redirecting to the home page, then we need // only culture paramter and home page name in route values if (RedirectTo == RedirectTo.HomePage) { ViewContext.RouteData.Values.Clear(); ViewContext.RouteData.Values.Add(CultureKeyName, CultureInfo.CurrentCulture.Name); ViewContext.RouteData.Values.Add("page", $"/{HomePageName}"); } var dic = new List <LanguageItem>(); var urlHelper = new UrlHelper(ViewContext); var cultures = GetSupportedCultures(); foreach (var cul in cultures) { //replace culture value with the relevant one for dropdown list _routeData[CultureKeyName] = cul.Name; var urlRoute = new UrlRouteContext { Values = _routeData }; #if NETCOREAPP2_2 var url = _lg.GetPathByRouteValues(httpContext: ViewContext.HttpContext, "", _routeData); #else var url = urlHelper.RouteUrl(urlRoute); #endif var label = GetLanguageLabel(cul); dic.Add(new LanguageItem { Name = cul.Name, DisplayText = label, Url = url }); } return(dic); }
public void Page_WithName_Works() { // Arrange UrlRouteContext actual = null; var routeData = new RouteData { Values = { { "page", "ambient-page" }, } }; var actionContext = new ActionContext { RouteData = routeData, }; var urlHelper = CreateMockUrlHelper(actionContext); urlHelper.Setup(h => h.RouteUrl(It.IsAny <UrlRouteContext>())) .Callback((UrlRouteContext context) => actual = context); // Act urlHelper.Object.Page("/TestPage"); // Assert urlHelper.Verify(); Assert.NotNull(actual); Assert.Null(actual.RouteName); Assert.Collection(Assert.IsType <RouteValueDictionary>(actual.Values), value => { Assert.Equal("page", value.Key); Assert.Equal("/TestPage", value.Value); }); Assert.Null(actual.Host); Assert.Null(actual.Protocol); Assert.Null(actual.Fragment); }
public IActionResult GetLink() { // We Obtein /Products/ByCategory?category=netbooks //var url = Url.Action("ByCategory", "Products", new { category = "netbooks" }); //var url = Url.RouteUrl("ProductsByCategory", new { category = "netbooks" }); var urlContext = new UrlRouteContext() { Host = "myserver.com:8080", Fragment = "target", Protocol = "https", RouteName = "ProductsByCategory", Values = new { category = "netbooks" } }; // We obtein https://myserver.com:8080/products/category/netbooks#target //var url = Url.RouteUrl(urlContext); // We obtein https://localhost:44300/products/category/netbooks var url = Url.Link("ProductsByCategory", new { category = "netbooks" }); return(Content($"ProductsController.GetLink(): {url}")); }
public override string RouteUrl(UrlRouteContext routeContext) { throw new NotImplementedException(); }
public override string RouteUrl(UrlRouteContext routeContext) { return ConvertToLowercaseUrl(base.RouteUrl(routeContext)); }
/// <inheritdoc /> public abstract string?RouteUrl(UrlRouteContext routeContext);
public string RouteUrl(UrlRouteContext routeContext) { return null; }
public string RouteUrl(UrlRouteContext routeContext) { return("UnitTestMock"); }
public string RouteUrl(UrlRouteContext routeContext) { RouteValues = routeContext.Values; return(_url); }
public string RouteUrl(UrlRouteContext routeContext) => string.Empty;
public string RouteUrl(UrlRouteContext routeContext) { return(_originalUrlHelper.RouteUrl(routeContext)); }
public void RouteUrlWithUrlRouteContext_ReturnsExpectedResult() { // Arrange var services = CreateServices(); var urlHelper = CreateUrlHelperWithRouteCollection(services, "/app"); var routeContext = new UrlRouteContext() { RouteName = "namedroute", Values = new { Action = "newaction", Controller = "home2", id = "someid" }, Fragment = "somefragment", Host = "remotetown", Protocol = "ftp" }; // Act var url = urlHelper.RouteUrl(routeContext); // Assert Assert.Equal("ftp://remotetown/app/named/home2/newaction/someid#somefragment", url); }
public string RouteUrl(UrlRouteContext routeContext) { return(_BaseUrl.AbsoluteUri); }
public string RouteUrl(UrlRouteContext routeContext) => String.Empty;
/// <inheritdoc /> public virtual string RouteUrl(UrlRouteContext routeContext) { if (routeContext == null) { throw new ArgumentNullException(nameof(routeContext)); } var valuesDictionary = routeContext.Values as RouteValueDictionary ?? GetValuesDictionary(routeContext.Values); var virtualPathData = GetVirtualPathData(routeContext.RouteName, valuesDictionary); return GenerateUrl(routeContext.Protocol, routeContext.Host, virtualPathData, routeContext.Fragment); }
public string RouteUrl(UrlRouteContext routeContext) { Assert.Equal(_routeName, routeContext.RouteName); Assert.Null(routeContext.Protocol); Assert.Null(routeContext.Host); Assert.Null(routeContext.Fragment); RouteValues = routeContext.Values; return _url; }
public string RouteUrl(UrlRouteContext routeContext) => null;
public string RouteUrl(UrlRouteContext routeContext) => throw new System.NotImplementedException();
public override string RouteUrl(UrlRouteContext routeContext) { return(_urlHelper.RouteUrl(routeContext)); }
public override string RouteUrl(UrlRouteContext routeContext) { return(ConvertToLowercaseUrl(base.RouteUrl(routeContext))); }
public override string RouteUrl(UrlRouteContext routeContext) { return(string.Empty); }