Beispiel #1
0
        public void SetsMaxRequestBodySize()
        {
            // Arrange
            var requestSizeLimitResourceFilter = new RequestSizeLimitResourceFilter(NullLoggerFactory.Instance);

            requestSizeLimitResourceFilter.Bytes = 12345;
            var resourceExecutingContext = CreateResourceExecutingContext(new IFilterMetadata[] { requestSizeLimitResourceFilter });

            var httpMaxRequestBodySize = new TestHttpMaxRequestBodySizeFeature();

            resourceExecutingContext.HttpContext.Features.Set <IHttpMaxRequestBodySizeFeature>(httpMaxRequestBodySize);

            // Act
            requestSizeLimitResourceFilter.OnResourceExecuting(resourceExecutingContext);

            // Assert
            Assert.Equal(12345, httpMaxRequestBodySize.MaxRequestBodySize);
        }
Beispiel #2
0
        public void LogsFeatureNotFound()
        {
            // Arrange
            var sink          = new TestSink();
            var loggerFactory = new TestLoggerFactory(sink, enabled: true);

            var requestSizeLimitResourceFilter = new RequestSizeLimitResourceFilter(loggerFactory);

            requestSizeLimitResourceFilter.Bytes = 12345;
            var resourceExecutingContext = CreateResourceExecutingContext(new IFilterMetadata[] { requestSizeLimitResourceFilter });

            // Act
            requestSizeLimitResourceFilter.OnResourceExecuting(resourceExecutingContext);

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

            Assert.Equal($"A request body size limit could not be applied. This server does not support the IHttpRequestBodySizeFeature.",
                         write.State.ToString());
        }
Beispiel #3
0
        public void SkipsWhenOverridden()
        {
            // Arrange
            var requestSizeLimitResourceFilter = new RequestSizeLimitResourceFilter(NullLoggerFactory.Instance);

            requestSizeLimitResourceFilter.Bytes = 12345;
            var requestSizeLimitResourceFilterFinal = new RequestSizeLimitResourceFilter(NullLoggerFactory.Instance);

            requestSizeLimitResourceFilterFinal.Bytes = 0;
            var resourceExecutingContext = CreateResourceExecutingContext(new IFilterMetadata[] { requestSizeLimitResourceFilter, requestSizeLimitResourceFilterFinal });

            var httpMaxRequestBodySize = new TestHttpMaxRequestBodySizeFeature();

            resourceExecutingContext.HttpContext.Features.Set <IHttpMaxRequestBodySizeFeature>(httpMaxRequestBodySize);

            // Act
            requestSizeLimitResourceFilter.OnResourceExecuting(resourceExecutingContext);
            requestSizeLimitResourceFilterFinal.OnResourceExecuting(resourceExecutingContext);

            // Assert
            Assert.Equal(0, httpMaxRequestBodySize.MaxRequestBodySize);
            Assert.Equal(1, httpMaxRequestBodySize.Count);
        }
Beispiel #4
0
        public void LogsMaxRequestBodySizeSet()
        {
            // Arrange
            var sink          = new TestSink();
            var loggerFactory = new TestLoggerFactory(sink, enabled: true);

            var requestSizeLimitResourceFilter = new RequestSizeLimitResourceFilter(loggerFactory);

            requestSizeLimitResourceFilter.Bytes = 12345;
            var resourceExecutingContext = CreateResourceExecutingContext(new IFilterMetadata[] { requestSizeLimitResourceFilter });

            var httpMaxRequestBodySize = new TestHttpMaxRequestBodySizeFeature();

            resourceExecutingContext.HttpContext.Features.Set <IHttpMaxRequestBodySizeFeature>(httpMaxRequestBodySize);

            // Act
            requestSizeLimitResourceFilter.OnResourceExecuting(resourceExecutingContext);

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

            Assert.Equal($"The maximum request body size has been set to 12345.", write.State.ToString());
        }
Beispiel #5
0
        public void LogsFeatureIsReadOnly()
        {
            // Arrange
            var sink          = new TestSink();
            var loggerFactory = new TestLoggerFactory(sink, enabled: true);

            var requestSizeLimitResourceFilter = new RequestSizeLimitResourceFilter(loggerFactory);

            requestSizeLimitResourceFilter.Bytes = 12345;
            var resourceExecutingContext = CreateResourceExecutingContext(new IFilterMetadata[] { requestSizeLimitResourceFilter });

            var httpMaxRequestBodySize = new TestHttpMaxRequestBodySizeFeature();

            httpMaxRequestBodySize.IsReadOnly = true;
            resourceExecutingContext.HttpContext.Features.Set <IHttpMaxRequestBodySizeFeature>(httpMaxRequestBodySize);

            // Act
            requestSizeLimitResourceFilter.OnResourceExecuting(resourceExecutingContext);

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

            Assert.Equal($"A request body size limit could not be applied. The IHttpRequestBodySizeFeature for the server is read-only.", write.State.ToString());
        }