Пример #1
0
        public async void Invoke_WithBypassUrlPathAndSvcOverride_WhenMatchResponseCodeShouldBeAppropriate(string requestPath,
                                                                                                          string bypassPath,
                                                                                                          string overridenPath,
                                                                                                          int expectedStatusCode)
        {
            MiddlewareTestDesk desk = GetTestDesk(
                (httpContext) =>
            {
                httpContext.Request.Path = new PathString(requestPath);
            },
                (optionBuilder) =>
            {
                optionBuilder.BypassUrlPath(bypassPath);
            },
                (optionsToOverrideFromSvc) =>
            {
                // this is an option, passed as a parameter to
                // the method EnterMaintanence() of MaintenanceControlService
                optionsToOverrideFromSvc.BypassUrlPath(overridenPath);
            });


            await desk.MiddlewareInstance
            .Invoke(desk.CurrentHttpContext);


            desk.CurrentHttpContext.Response.StatusCode
            .ShouldBe(expectedStatusCode);
        }
Пример #2
0
        public async void Invoke_WithUseResponse_ResponseShouldBeAppropriate()
        {
            MiddlewareTestDesk desk = GetTestDesk(
                (httpContext) =>
            {
            },
                (optionBuilder) =>
            {
                optionBuilder.UseResponse(Encoding.UTF8.GetBytes("test"), ResponseContentType.Text, Encoding.UTF8);
            });


            await desk.MiddlewareInstance
            .Invoke(desk.CurrentHttpContext);


            desk.CurrentHttpContext.Response.StatusCode
            .ShouldBe(503);
            desk.CurrentHttpContext.Response.Headers
            .Any(h => h.Key == "Retry-After")
            .ShouldBeTrue();
            desk.CurrentHttpContext.Response.ContentType
            .ShouldBe("text/plain");
            GetResponseString(desk.CurrentHttpContext)
            .ShouldBe("test");
        }
Пример #3
0
        public async void Invoke_WithUseDefaultResponse_ResponseShouldBeAppropriate()
        {
            MiddlewareTestDesk desk = GetTestDesk(
                (httpContext) =>
            {
            },
                (optionBuilder) =>
            {
                // UseDefaultResponseOption() is automatically set if no response option is specified
                // and UseNoDefaultValues() is not called.
            });


            await desk.MiddlewareInstance
            .Invoke(desk.CurrentHttpContext);


            desk.CurrentHttpContext.Response.StatusCode
            .ShouldBe(503);
            desk.CurrentHttpContext.Response.Headers
            .Any(h => h.Key == "Retry-After").ShouldBeTrue();
            desk.CurrentHttpContext.Response.ContentType
            .ShouldBe("text/html");
            GetResponseString(desk.CurrentHttpContext)
            .ShouldNotBeNullOrEmpty();
        }
Пример #4
0
        public async void Invoke_WithUseResponseFile_ResponseShouldBeAppropriate(string fileName, string expectedContentType, EnvDirectory baseDir)
        {
            string tempDir = Path.GetTempPath();
            string rootDir;

            if (baseDir == EnvDirectory.ContentRootPath)
            {
                rootDir = Path.Combine(tempDir, "contentRoot");
            }
            else
            {
                rootDir = Path.Combine(tempDir, "wwwRoot");
            }
            string safeTempFileName = SafeTempPath.Create(fileName);

            File.WriteAllText(Path.Combine(rootDir, safeTempFileName), "test");

            MiddlewareTestDesk desk = GetTestDesk(
                (httpContext) =>
            {
            },
                (optionBuilder) =>
            {
                optionBuilder.UseResponseFromFile(safeTempFileName, baseDir);
            },
                null,
                tempDir);


            await desk.MiddlewareInstance
            .Invoke(desk.CurrentHttpContext);


            desk.CurrentHttpContext.Response.StatusCode
            .ShouldBe(503);
            desk.CurrentHttpContext.Response.Headers
            .Any(h => h.Key == "Retry-After")
            .ShouldBeTrue();
            desk.CurrentHttpContext.Response.ContentType
            .ShouldBe(expectedContentType);
            GetResponseString(desk.CurrentHttpContext)
            .ShouldBe("test");
        }
Пример #5
0
        public async void Invoke_WithBypassUserRoles_ResponseCodeShouldBeAppropriate(string requestUserRole, string[] bypassUserRoles, int expectedStatusCode)
        {
            MiddlewareTestDesk desk = GetTestDesk(
                (httpContext) =>
            {
                httpContext.User = MockUser(null, requestUserRole, true);
            },
                (optionBuilder) =>
            {
                optionBuilder.BypassUserRoles(bypassUserRoles);
            });


            await desk.MiddlewareInstance
            .Invoke(desk.CurrentHttpContext);


            desk.CurrentHttpContext.Response.StatusCode
            .ShouldBe(expectedStatusCode);
        }
Пример #6
0
        public async void Invoke_WithBypassAllAuthenticatedUsers_WhenMatchResponseCodeShouldBeAppropriate(bool isUserAuthenticated, int expectedStatusCode)
        {
            MiddlewareTestDesk desk = GetTestDesk(
                (httpContext) =>
            {
                httpContext.User = MockUser(null, null, isUserAuthenticated);
            },
                (optionBuilder) =>
            {
                optionBuilder.BypassAllAuthenticatedUsers();
            });


            await desk.MiddlewareInstance
            .Invoke(desk.CurrentHttpContext);


            desk.CurrentHttpContext.Response.StatusCode
            .ShouldBe(expectedStatusCode);
        }
Пример #7
0
        public async void Invoke_WithBypassFileExtensions_WhenMatchResponseCodeShouldBeAppropriate(string[] extensions, string requestPath, int expectedStatusCode)
        {
            MiddlewareTestDesk desk = GetTestDesk(
                (httpContext) =>
            {
                httpContext.Request.Path = new PathString(requestPath);
            },
                (optionBuilder) =>
            {
                optionBuilder.BypassFileExtensions(extensions);
            });


            await desk.MiddlewareInstance
            .Invoke(desk.CurrentHttpContext);


            desk.CurrentHttpContext.Response.StatusCode
            .ShouldBe(expectedStatusCode);
        }
Пример #8
0
        public async void Invoke_WithBypassUrlPaths_WhenMatchResponseCodeShouldBeAppropriate(string requestPath, string[] bypassPaths, StringComparison comparison, int expectedStatusCode)
        {
            MiddlewareTestDesk desk = GetTestDesk(
                (httpContext) =>
            {
                httpContext.Request.Path = new PathString(requestPath);
            },
                (optionBuilder) =>
            {
                var bypassPathStrings = bypassPaths
                                        .Select(s => new PathString(s));
                optionBuilder.BypassUrlPaths(bypassPathStrings, comparison);
            });


            await desk.MiddlewareInstance
            .Invoke(desk.CurrentHttpContext);


            desk.CurrentHttpContext.Response.StatusCode
            .ShouldBe(expectedStatusCode);
        }