public void LogsCannotApplyRequestFormLimits()
        {
            // Arrange
            var sink          = new TestSink();
            var loggerFactory = new TestLoggerFactory(sink, enabled: true);

            var requestFormLimitsFilter = new RequestFormLimitsFilter(loggerFactory);

            requestFormLimitsFilter.FormOptions = new FormOptions();
            var authorizationFilterContext = CreateauthorizationFilterContext(
                new IFilterMetadata[] { requestFormLimitsFilter });

            authorizationFilterContext.HttpContext.Request.Form = new FormCollection(null);

            // Act
            requestFormLimitsFilter.OnAuthorization(authorizationFilterContext);

            // Assert
            var write = Assert.Single(sink.Writes);

            Assert.Equal(LogLevel.Warning, write.LogLevel);
            Assert.Equal(
                "Unable to apply configured form options since the request form has already been read.",
                write.State.ToString());
        }
        public void LogsAppliedRequestFormLimits_WhenFormFeatureIsNull()
        {
            // Arrange
            var sink          = new TestSink();
            var loggerFactory = new TestLoggerFactory(sink, enabled: true);

            var requestFormLimitsFilter = new RequestFormLimitsFilter(loggerFactory);

            requestFormLimitsFilter.FormOptions = new FormOptions();
            var authorizationFilterContext = CreateauthorizationFilterContext(
                new IFilterMetadata[] { requestFormLimitsFilter });

            // Set to null explicitly as we want to make sure the filter adds one
            authorizationFilterContext.HttpContext.Features.Set <IFormFeature>(null);

            // Act
            requestFormLimitsFilter.OnAuthorization(authorizationFilterContext);

            // Assert
            var write = Assert.Single(sink.Writes);

            Assert.Equal(LogLevel.Debug, write.LogLevel);
            Assert.Equal(
                "Applied the configured form options on the current request.",
                write.State.ToString());
        }
        public void SetsRequestFormFeature_WhenFeatureIsNotPresent()
        {
            // Arrange
            var requestFormLimitsFilter = new RequestFormLimitsFilter(NullLoggerFactory.Instance);

            requestFormLimitsFilter.FormOptions = new FormOptions();
            var authorizationFilterContext = CreateauthorizationFilterContext(
                new IFilterMetadata[] { requestFormLimitsFilter });

            // Set to null explicitly as we want to make sure the filter adds one
            authorizationFilterContext.HttpContext.Features.Set <IFormFeature>(null);

            // Act
            requestFormLimitsFilter.OnAuthorization(authorizationFilterContext);

            // Assert
            var formFeature = authorizationFilterContext.HttpContext.Features.Get <IFormFeature>();

            Assert.IsType <FormFeature>(formFeature);
        }