Пример #1
0
    public void OnResourceExecuting_RegistersOnStartingCallback()
    {
        // Arrange
        var responseFeature = new Mock <IHttpResponseFeature>(MockBehavior.Strict);

        responseFeature
        .Setup(rf => rf.OnStarting(It.IsAny <Func <object, Task> >(), It.IsAny <object>()))
        .Verifiable();
        responseFeature
        .SetupGet(rf => rf.HasStarted)
        .Returns(false);

        var tempDataFactory = new Mock <ITempDataDictionaryFactory>(MockBehavior.Strict);

        tempDataFactory
        .Setup(f => f.GetTempData(It.IsAny <HttpContext>()))
        .Verifiable();
        var filter      = new SaveTempDataFilter(tempDataFactory.Object);
        var httpContext = GetHttpContext(responseFeature.Object);
        var context     = GetResourceExecutingContext(httpContext);

        // Act
        filter.OnResourceExecuting(context);

        // Assert
        responseFeature.Verify();
        tempDataFactory.Verify(tdf => tdf.GetTempData(It.IsAny <HttpContext>()), Times.Never());
    }
Пример #2
0
    public async Task OnResourceExecuting_DoesNotSaveTempData_WhenUnhandledExceptionOccurs()
    {
        // Arrange
        var responseFeature = new TestResponseFeature();
        var httpContext     = GetHttpContext(responseFeature);

        httpContext.Items[SaveTempDataFilter.SaveTempDataFilterContextKey] = new SaveTempDataFilter.SaveTempDataContext()
        {
            RequestHasUnhandledException = true
        };
        var tempDataFactory = new Mock <ITempDataDictionaryFactory>(MockBehavior.Strict);

        tempDataFactory
        .Setup(f => f.GetTempData(It.IsAny <HttpContext>()))
        .Verifiable();
        var filter  = new SaveTempDataFilter(tempDataFactory.Object);
        var context = GetResourceExecutingContext(httpContext);

        filter.OnResourceExecuting(context); // registers callback

        // Act
        await responseFeature.FireOnSendingHeadersAsync();

        // Assert
        tempDataFactory.Verify(tdf => tdf.GetTempData(It.IsAny <HttpContext>()), Times.Never());
    }
Пример #3
0
        public void SaveTempDataFilter_OnResourceExecuted_SavesTempData()
        {
            // Arrange
            var tempData = new Mock<ITempDataDictionary>(MockBehavior.Strict);
            tempData
                .Setup(m => m.Save())
                .Verifiable();

            var tempDataFactory = new Mock<ITempDataDictionaryFactory>(MockBehavior.Strict);
            tempDataFactory
                .Setup(f => f.GetTempData(It.IsAny<HttpContext>()))
                .Returns(tempData.Object);

            var filter = new SaveTempDataFilter(tempDataFactory.Object);

            var context = new ResourceExecutedContext(
                new ActionContext(new DefaultHttpContext(), new RouteData(), new ActionDescriptor()),
                new IFilterMetadata[] { });

            // Act
            filter.OnResourceExecuted(context);

            // Assert
            tempData.Verify();
        }
Пример #4
0
    public void OnResultExecuted_DoesNotSaveTempData_WhenResponseHas_AlreadyStarted()
    {
        // Arrange
        var tempDataFactory = new Mock <ITempDataDictionaryFactory>(MockBehavior.Strict);

        tempDataFactory
        .Setup(f => f.GetTempData(It.IsAny <HttpContext>()))
        .Verifiable();
        var filter      = new SaveTempDataFilter(tempDataFactory.Object);
        var httpContext = GetHttpContext(new TestResponseFeature(hasStarted: true));
        var context     = GetResultExecutedContext(httpContext);

        // Act
        filter.OnResultExecuted(context);

        // Assert
        tempDataFactory.Verify(tdf => tdf.GetTempData(It.IsAny <HttpContext>()), Times.Never());
    }
Пример #5
0
    public async Task OnResultExecuting_DoesntThrowIfResponseStarted()
    {
        // Arrange
        var responseFeature = new TestResponseFeature(hasStarted: true);
        var httpContext     = GetHttpContext(responseFeature);
        var tempDataFactory = new Mock <ITempDataDictionaryFactory>(MockBehavior.Loose);

        tempDataFactory
        .Setup(f => f.GetTempData(It.IsAny <HttpContext>()))
        .Verifiable();
        var filter  = new SaveTempDataFilter(tempDataFactory.Object);
        var context = GetResultExecutingContext(httpContext);

        filter.OnResultExecuting(context);

        // Act
        // Checking it doesn't throw
        await responseFeature.FireOnSendingHeadersAsync();
    }
Пример #6
0
    public void OnResultExecuted_CanBeCalledTwice()
    {
        // Arrange
        var responseFeature = new TestResponseFeature();
        var httpContext     = GetHttpContext(responseFeature);
        var tempData        = GetTempDataDictionary();
        var tempDataFactory = new Mock <ITempDataDictionaryFactory>(MockBehavior.Strict);

        tempDataFactory
        .Setup(f => f.GetTempData(It.IsAny <HttpContext>()))
        .Returns(tempData.Object)
        .Verifiable();
        var filter  = new SaveTempDataFilter(tempDataFactory.Object);
        var context = GetResultExecutedContext(httpContext);

        // Act (No Assert)
        filter.OnResultExecuted(context);
        // Shouldn't have thrown
        filter.OnResultExecuted(context);
    }
Пример #7
0
        public void SaveTempDataFilter_OnResultExecuted_DoesNotKeepTempData_ForNonIKeepTempDataResult()
        {
            // Arrange
            var tempData = new Mock<ITempDataDictionary>(MockBehavior.Strict);

            var tempDataFactory = new Mock<ITempDataDictionaryFactory>(MockBehavior.Strict);
            tempDataFactory
                .Setup(f => f.GetTempData(It.IsAny<HttpContext>()))
                .Returns(tempData.Object);

            var filter = new SaveTempDataFilter(tempDataFactory.Object);

            var context = new ResultExecutedContext(
                new ActionContext(new DefaultHttpContext(), new RouteData(), new ActionDescriptor()),
                new IFilterMetadata[] { },
                new Mock<IActionResult>().Object,
                new object());

            // Act
            filter.OnResultExecuted(context);

            // Assert - The mock will throw if we do the wrong thing.
        }