Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
        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);
            });
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 6
0
        public string RouteUrl(string routeName)
        {
            UrlRouteContext context = new UrlRouteContext
            {
                RouteName = routeName
            };
            IUrlHelper urlHelper = _urlHelperFactory.GetUrlHelper(_actionContextAccessor.ActionContext);

            return(urlHelper.RouteUrl(context));
        }
Ejemplo n.º 7
0
            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));
        }
Ejemplo n.º 9
0
    /// <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);
        }
Ejemplo n.º 11
0
 /// <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));
     }
 }
Ejemplo n.º 12
0
        /// <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);
        }
Ejemplo n.º 13
0
        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));
        }
Ejemplo n.º 14
0
        /// <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) ?? "");
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
        /// <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);
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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}"));
        }
Ejemplo n.º 19
0
 public override string RouteUrl(UrlRouteContext routeContext)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 20
0
 public override string RouteUrl(UrlRouteContext routeContext)
 {
     return ConvertToLowercaseUrl(base.RouteUrl(routeContext));
 }
Ejemplo n.º 21
0
 /// <inheritdoc />
 public abstract string?RouteUrl(UrlRouteContext routeContext);
 public string RouteUrl(UrlRouteContext routeContext)
 {
     return null;
 }
Ejemplo n.º 23
0
 public string RouteUrl(UrlRouteContext routeContext)
 {
     return("UnitTestMock");
 }
Ejemplo n.º 24
0
        public string RouteUrl(UrlRouteContext routeContext)
        {
            RouteValues = routeContext.Values;

            return(_url);
        }
Ejemplo n.º 25
0
 public string RouteUrl(UrlRouteContext routeContext) => string.Empty;
Ejemplo n.º 26
0
 public string RouteUrl(UrlRouteContext routeContext)
 {
     return(_originalUrlHelper.RouteUrl(routeContext));
 }
Ejemplo n.º 27
0
        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);
        }
Ejemplo n.º 28
0
 public string RouteUrl(UrlRouteContext routeContext)
 {
     return(_BaseUrl.AbsoluteUri);
 }
Ejemplo n.º 29
0
 public string RouteUrl(UrlRouteContext routeContext) => String.Empty;
Ejemplo n.º 30
0
        /// <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);
        }
Ejemplo n.º 31
0
            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;
            }
Ejemplo n.º 32
0
 public string RouteUrl(UrlRouteContext routeContext) => null;
Ejemplo n.º 33
0
 public string RouteUrl(UrlRouteContext routeContext) => throw new System.NotImplementedException();
Ejemplo n.º 34
0
 public override string RouteUrl(UrlRouteContext routeContext)
 {
     return(_urlHelper.RouteUrl(routeContext));
 }
Ejemplo n.º 35
0
 public override string RouteUrl(UrlRouteContext routeContext)
 {
     return(ConvertToLowercaseUrl(base.RouteUrl(routeContext)));
 }
Ejemplo n.º 36
0
 public override string RouteUrl(UrlRouteContext routeContext)
 {
     return(string.Empty);
 }