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); }
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"); }
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(); }
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"); }
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); }
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); }
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); }
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); }