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]); }
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)); }
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)); }
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)); }
public TextPageController(IAbstractItemStorageProvider abstractItemProvider, ILogger <TextPageController> logger) { _provider = abstractItemProvider.Get(); _logger = logger; }