示例#1
0
        public async Task FunctionalTest_RoutingMiddleware_Success()
        {
            HttpContext ctx = new DefaultHttpContext();

            ctx.Request.Host = new HostString(stubHost);

            RoutingMiddleware routingMiddleware = new RoutingMiddleware(_next, new NullTargetingFilterAccessor());

            Mock <IAbstractItemStorageProvider> mockAbstractItemStorageProvider = new Mock <IAbstractItemStorageProvider>();

            AbstractItemStorage abstractItemStorage = BuildAbstractItemStorage();

            mockAbstractItemStorageProvider
            .Setup(x => x.Get())
            .Returns(abstractItemStorage);

            await routingMiddleware.Invoke(ctx, mockAbstractItemStorageProvider.Object);

            Assert.IsNotNull(ctx.Items[RoutingKeys.StartPage]);
            Assert.IsInstanceOfType(ctx.Items[RoutingKeys.StartPage], typeof(StubStartPage));
            Assert.AreEqual(2, ((StubStartPage)ctx.Items[RoutingKeys.StartPage]).Id);

            Assert.IsNotNull(ctx.Items[RoutingKeys.AbstractItemStorage]);
            Assert.IsInstanceOfType(ctx.Items[RoutingKeys.AbstractItemStorage], typeof(AbstractItemStorage));
            Assert.AreEqual(abstractItemStorage, (AbstractItemStorage)ctx.Items[RoutingKeys.AbstractItemStorage]);
        }
示例#2
0
        public Task Invoke(HttpContext context, IAbstractItemStorageProvider provider)
        {
            CancellationToken cancellationToken = context?.RequestAborted ?? CancellationToken.None;

            AbstractItemStorage abstractItems = provider.Get();

            if (cancellationToken.IsCancellationRequested)
            {
                return(Task.CompletedTask);
            }

            var startPage = abstractItems
                            .GetStartPage(context.Request.Host.Value, _filterAccessor?.Get());

            if (startPage is null)
            {
                throw new StartPageNotFoundException(context.Request.Host.Value);
            }

            context.Items[RoutingKeys.StartPage]           = startPage;
            context.Items[RoutingKeys.AbstractItemStorage] = abstractItems;

            // Call the next delegate/middleware in the pipeline
            return(_next(context));
        }
示例#3
0
        public async Task FunctionalTest_RoutingMiddleware_ThrowsStartPageNotFound_IncorrectDNSBinding()
        {
            HttpContext ctx = new DefaultHttpContext();

            ctx.Request.Host = new HostString("test.qp.lan");

            RoutingMiddleware routingMiddleware = new RoutingMiddleware(_next, new NullTargetingFilterAccessor());

            Mock <IAbstractItemStorageProvider> mockAbstractItemStorageProvider = new Mock <IAbstractItemStorageProvider>();

            AbstractItemStorage abstractItemStorage = BuildAbstractItemStorage();

            mockAbstractItemStorageProvider
            .Setup(x => x.Get())
            .Returns(abstractItemStorage);

            await Assert.ThrowsExceptionAsync <StartPageNotFoundException>(() => routingMiddleware.Invoke(ctx, mockAbstractItemStorageProvider.Object));
        }
示例#4
0
        public async Task FunctionalTest_RoutingMiddleware_ThrowsStartPageNotFound_NoPage()
        {
            HttpContext ctx = new DefaultHttpContext();

            ctx.Request.Host = new HostString("test.qp.lan");

            RoutingMiddleware routingMiddleware = new RoutingMiddleware(_next, new NullTargetingFilterAccessor());

            Mock <IAbstractItemStorageProvider> mockAbstractItemStorageProvider = new Mock <IAbstractItemStorageProvider>();

            AbstractItemStorage abstractItemStorage = BuildAbstractItemStorage(new AbstractItemPersistentData[]
            {
                new AbstractItemPersistentData {
                    Id = 1, Title = "корневая страница", Alias = "root", Discriminator = typeof(RootPage).Name, IsPage = true, ParentId = null, ExtensionId = null
                },
            });

            mockAbstractItemStorageProvider
            .Setup(x => x.Get())
            .Returns(abstractItemStorage);

            await Assert.ThrowsExceptionAsync <StartPageNotFoundException>(() => routingMiddleware.Invoke(ctx, mockAbstractItemStorageProvider.Object));
        }
示例#5
0
 public TextPageController(IAbstractItemStorageProvider abstractItemProvider, ILogger <TextPageController> logger)
 {
     _provider = abstractItemProvider.Get();
     _logger   = logger;
 }