Esempio n. 1
0
    private UmbracoRouteValueTransformer GetTransformer(
        IUmbracoContextAccessor ctx,
        IRuntimeState state,
        IRoutableDocumentFilter filter = null,
        IPublishedRouter router        = null,
        IUmbracoRouteValuesFactory routeValuesFactory = null)
    {
        var publicAccessRequestHandler = new Mock <IPublicAccessRequestHandler>();

        publicAccessRequestHandler.Setup(x =>
                                         x.RewriteForPublishedContentAccessAsync(It.IsAny <HttpContext>(), It.IsAny <UmbracoRouteValues>()))
        .Returns((HttpContext ctx, UmbracoRouteValues routeVals) => Task.FromResult(routeVals));

        var transformer = new UmbracoRouteValueTransformer(
            new NullLogger <UmbracoRouteValueTransformer>(),
            ctx,
            router ?? Mock.Of <IPublishedRouter>(),
            GetGlobalSettings(),
            TestHelper.GetHostingEnvironment(),
            state,
            routeValuesFactory ?? Mock.Of <IUmbracoRouteValuesFactory>(),
            filter ?? Mock.Of <IRoutableDocumentFilter>(x => x.IsDocumentRequest(It.IsAny <string>()) == true),
            Mock.Of <IDataProtectionProvider>(),
            Mock.Of <IControllerActionSearcher>(),
            Mock.Of <IEventAggregator>(),
            publicAccessRequestHandler.Object);

        return(transformer);
    }
        public async Task Null_When_No_Umbraco_Context()
        {
            UmbracoRouteValueTransformer transformer = GetTransformerWithRunState(
                Mock.Of <IUmbracoContextAccessor>());

            RouteValueDictionary result = await transformer.TransformAsync(new DefaultHttpContext(), new RouteValueDictionary());

            Assert.IsNull(result);
        }
        public async Task Null_When_Runtime_Level_Not_Run()
        {
            UmbracoRouteValueTransformer transformer = GetTransformer(
                Mock.Of <IUmbracoContextAccessor>(),
                Mock.Of <IRuntimeState>());

            RouteValueDictionary result = await transformer.TransformAsync(new DefaultHttpContext(), new RouteValueDictionary());

            Assert.IsNull(result);
        }
        public async Task Null_When_Not_Document_Request()
        {
            var umbracoContext = Mock.Of <IUmbracoContext>();
            UmbracoRouteValueTransformer transformer = GetTransformerWithRunState(
                Mock.Of <IUmbracoContextAccessor>(x => x.TryGetUmbracoContext(out umbracoContext)),
                Mock.Of <IRoutableDocumentFilter>(x => x.IsDocumentRequest(It.IsAny <string>()) == false));

            RouteValueDictionary result = await transformer.TransformAsync(new DefaultHttpContext(), new RouteValueDictionary());

            Assert.IsNull(result);
        }
        public async Task NoContentController_Values_When_No_Content()
        {
            IUmbracoContext umbracoContext = GetUmbracoContext(false);

            UmbracoRouteValueTransformer transformer = GetTransformerWithRunState(
                Mock.Of <IUmbracoContextAccessor>(x => x.TryGetUmbracoContext(out umbracoContext)));

            RouteValueDictionary result = await transformer.TransformAsync(new DefaultHttpContext(), new RouteValueDictionary());

            Assert.AreEqual(2, result.Count);
            Assert.AreEqual(ControllerExtensions.GetControllerName <RenderNoContentController>(), result[ControllerToken]);
            Assert.AreEqual(nameof(RenderNoContentController.Index), result[ActionToken]);
        }
        public async Task Assigns_PublishedRequest_To_UmbracoContext()
        {
            IUmbracoContext   umbracoContext = GetUmbracoContext(true);
            IPublishedRequest request        = Mock.Of <IPublishedRequest>();

            UmbracoRouteValueTransformer transformer = GetTransformerWithRunState(
                Mock.Of <IUmbracoContextAccessor>(x => x.TryGetUmbracoContext(out umbracoContext)),
                router: GetRouter(request),
                routeValuesFactory: GetRouteValuesFactory(request));

            RouteValueDictionary result = await transformer.TransformAsync(new DefaultHttpContext(), new RouteValueDictionary());

            Assert.AreEqual(request, umbracoContext.PublishedRequest);
        }
        public async Task Returns_Null_RouteValueDictionary_When_No_Content()
        {
            IUmbracoContext    umbracoContext = GetUmbracoContext(true);
            IPublishedRequest  request        = Mock.Of <IPublishedRequest>(x => x.PublishedContent == null);
            UmbracoRouteValues routeValues    = GetRouteValues(request);

            UmbracoRouteValueTransformer transformer = GetTransformerWithRunState(
                Mock.Of <IUmbracoContextAccessor>(x => x.TryGetUmbracoContext(out umbracoContext)),
                router: GetRouter(request),
                routeValuesFactory: GetRouteValuesFactory(request));

            RouteValueDictionary result = await transformer.TransformAsync(new DefaultHttpContext(), new RouteValueDictionary());

            Assert.IsNull(result);
        }
        public async Task Assigns_Values_To_RouteValueDictionary_When_Content()
        {
            IUmbracoContext    umbracoContext = GetUmbracoContext(true);
            IPublishedRequest  request        = Mock.Of <IPublishedRequest>(x => x.PublishedContent == Mock.Of <IPublishedContent>());
            UmbracoRouteValues routeValues    = GetRouteValues(request);

            UmbracoRouteValueTransformer transformer = GetTransformerWithRunState(
                Mock.Of <IUmbracoContextAccessor>(x => x.TryGetUmbracoContext(out umbracoContext)),
                router: GetRouter(request),
                routeValuesFactory: GetRouteValuesFactory(request));

            RouteValueDictionary result = await transformer.TransformAsync(new DefaultHttpContext(), new RouteValueDictionary());

            Assert.AreEqual(routeValues.ControllerName, result[ControllerToken]);
            Assert.AreEqual(routeValues.ActionName, result[ActionToken]);
        }
        public async Task Assigns_UmbracoRouteValues_To_HttpContext_Feature()
        {
            IUmbracoContext   umbracoContext = GetUmbracoContext(true);
            IPublishedRequest request        = Mock.Of <IPublishedRequest>(x => x.PublishedContent == Mock.Of <IPublishedContent>());

            UmbracoRouteValueTransformer transformer = GetTransformerWithRunState(
                Mock.Of <IUmbracoContextAccessor>(x => x.TryGetUmbracoContext(out umbracoContext)),
                router: GetRouter(request),
                routeValuesFactory: GetRouteValuesFactory(request));

            var httpContext             = new DefaultHttpContext();
            RouteValueDictionary result = await transformer.TransformAsync(httpContext, new RouteValueDictionary());

            UmbracoRouteValues routeVals = httpContext.Features.Get <UmbracoRouteValues>();

            Assert.IsNotNull(routeVals);
            Assert.AreEqual(routeVals.PublishedRequest, umbracoContext.PublishedRequest);
        }
        public async Task Null_When_No_Content_On_PublishedRequest()
        {
            IUmbracoContext   umbracoContext = GetUmbracoContext(true);
            IPublishedRequest request        = Mock.Of <IPublishedRequest>(x => x.PublishedContent == null);

            UmbracoRouteValueTransformer transformer = GetTransformerWithRunState(
                Mock.Of <IUmbracoContextAccessor>(x => x.TryGetUmbracoContext(out umbracoContext)),
                router: GetRouter(request),
                routeValuesFactory: GetRouteValuesFactory(request));

            var httpContext             = new DefaultHttpContext();
            RouteValueDictionary result = await transformer.TransformAsync(httpContext, new RouteValueDictionary());

            Assert.IsNull(result);

            UmbracoRouteValues routeVals = httpContext.Features.Get <UmbracoRouteValues>();

            Assert.AreEqual(routeVals.PublishedRequest.GetRouteResult(), UmbracoRouteResult.NotFound);
        }