public async Task When_context_has_started_response_should_contain_header()
        {
            var expectedHeader = new KeyValuePair <string, StringValues>(
                CorrelationHttpHeaders.CorrelationId,
                new StringValues(_correlationContext.CorrelationId)
                );

            // Act
            _sut.Start(_correlationContext);
            await _responseFeature.FireOnSendingHeadersAsync();

            // Assert
            _httpContext.Response.Headers.Should().Contain(expectedHeader);
        }
示例#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 async Task OnResultExecuting_SavesTempData_WhenTempData_NotSavedAlready(IActionResult result)
        {
            // Arrange
            var tempDataDictionary = GetTempDataDictionary();
            var filter             = GetFilter(tempDataDictionary.Object);
            var responseFeature    = new TestResponseFeature();
            var actionContext      = GetActionContext(GetHttpContext(responseFeature));
            var context            = GetResultExecutingContext(actionContext, result);

            filter.OnResultExecuting(context); // registers callback

            // Act
            await responseFeature.FireOnSendingHeadersAsync();

            // Assert
            tempDataDictionary.Verify(tdd => tdd.Save(), Times.Once());
        }
示例#4
0
    public async Task OnResultExecuting_DoesNotKeepTempData_ForNonIKeepTempDataResult()
    {
        // Arrange
        var tempDataDictionary = GetTempDataDictionary();
        var filter             = GetFilter(tempDataDictionary.Object);
        var responseFeature    = new TestResponseFeature();
        var actionContext      = GetHttpContext(responseFeature);
        var context            = GetResourceExecutingContext(actionContext);

        filter.OnResourceExecuting(context); // registers callback

        // Act
        await responseFeature.FireOnSendingHeadersAsync();

        // Assert
        tempDataDictionary.Verify(tdf => tdf.Keep(), Times.Never());
        tempDataDictionary.Verify(tdf => tdf.Save(), Times.Once());
    }
示例#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 async Task OnResultExecuting_DoesNotSaveTempData_WhenTempDataAlreadySaved()
        {
            // Arrange
            var responseFeature = new TestResponseFeature();
            var httpContext     = GetHttpContext(responseFeature);

            httpContext.Items[SaveTempDataFilter.TempDataSavedKey] = true; // indicate that tempdata was already saved
            var tempDataFactory = new Mock <ITempDataDictionaryFactory>(MockBehavior.Strict);

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

            filter.OnResultExecuting(context); // registers callback

            // Act
            await responseFeature.FireOnSendingHeadersAsync();

            // Assert
            tempDataFactory.Verify(tdf => tdf.GetTempData(It.IsAny <HttpContext>()), Times.Never());
        }