Ejemplo n.º 1
0
        public async Task MaxRequestBodySizeLimit_InPlaceHolderMode_DoesNotUpdateConfiguration(string requestBodySizeLimit)
        {
            var environment = new TestEnvironment();

            environment.SetEnvironmentVariable(EnvironmentSettingNames.FunctionsRequestBodySizeLimit, requestBodySizeLimit);
            environment.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebsitePlaceholderMode, "1");

            bool            nextInvoked     = false;
            long?           configuredLimit = 0;
            RequestDelegate next            = (ctxt) =>
            {
                nextInvoked = true;
                ctxt.Response.StatusCode = (int)HttpStatusCode.Accepted;
                configuredLimit          = ctxt.Features.Get <IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize;
                return(Task.CompletedTask);
            };

            var middleware = new HttpRequestBodySizeMiddleware(next, environment);

            var httpContext = new DefaultHttpContext();

            httpContext.Features.Set <IHttpMaxRequestBodySizeFeature>(new TestHttpMaxRequestBodySizeFeature());
            await middleware.Invoke(httpContext);

            Assert.True(nextInvoked);
            Assert.Equal(configuredLimit, ScriptConstants.DefaultMaxRequestBodySize);
        }
Ejemplo n.º 2
0
        public async Task MaxRequestBodySizeLimit_MiddleWareInvoke_GetWiredUpCorrectly(bool inPlaceHolderMode, bool isLimitSet)
        {
            bool            nextInvoked     = false;
            long?           configuredLimit = 0;
            RequestDelegate next            = (ctxt) =>
            {
                nextInvoked = true;
                ctxt.Response.StatusCode = (int)HttpStatusCode.Accepted;
                configuredLimit          = ctxt.Features.Get <IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize;
                return(Task.CompletedTask);
            };

            var environment = new TestEnvironment();

            string placeHolderModeValue = inPlaceHolderMode ? "1" : "0";
            string limit = isLimitSet ? "100" : "invalid";

            environment.SetEnvironmentVariable(EnvironmentSettingNames.AzureWebsitePlaceholderMode, placeHolderModeValue);
            environment.SetEnvironmentVariable(EnvironmentSettingNames.FunctionsRequestBodySizeLimit, limit);

            var middleware  = new HttpRequestBodySizeMiddleware(next, environment);
            var httpContext = new DefaultHttpContext();

            httpContext.Features.Set <IHttpMaxRequestBodySizeFeature>(new TestHttpMaxRequestBodySizeFeature());
            await middleware.Invoke(httpContext);

            Assert.True(nextInvoked);

            if (inPlaceHolderMode)
            {
                Assert.Equal(middleware.InnerInvoke, middleware.InvokeBeforeSpecialization);
            }

            if (!inPlaceHolderMode && isLimitSet)
            {
                Assert.Equal(middleware.InnerInvoke, middleware.InvokeAfterSpecialization);
            }

            if (!inPlaceHolderMode && !isLimitSet)
            {
                Assert.Equal(middleware.InnerInvoke, next);
            }
        }