public async Task ReturnsPongBodyContent() { var bodyStream = new MemoryStream(); var context = new DefaultHttpContext(); context.Response.Body = bodyStream; context.Request.Path = "/ping"; // creates a DefaultHttpContext and initializes the body with a MemoryStream to capture the response RequestDelegate next = (ctx) => Task.CompletedTask; var middleware = new StatusMiddleware(next: next); // creates an instance of the middleware and passes in a simple RequestDelegate await middleware.Invoke(context); // invokes the middleware string response; bodyStream.Seek(0, SeekOrigin.Begin); using (var stringReader = new StreamReader(bodyStream)) { response = await stringReader.ReadToEndAsync(); } // rewins the MemoryStream and reads the response body into a string Assert.Equal("pong", response); // verify the response value if correct Assert.Equal("text/plain", context.Response.ContentType); // check the content-type Assert.Equal(200, context.Response.StatusCode); // check status code }
public async Task ReturnsPlainTextType() { RequestDelegate next = (ctx) => Task.CompletedTask; var middleware = new StatusMiddleware(next: next); var context = new DefaultHttpContext(); context.Request.Path = "/ping"; await middleware.Invoke(context); Assert.Equal("text/plain", context.Response.ContentType); }
public async Task ForNonMatchingRequest_CallsNextDelegate() { var context = new DefaultHttpContext(); //Creates a DefaultHttpContext and sets the path for the request context.Request.Path = "/somepaths"; var wasExecuted = false; //tracks wheter the RequestDelegate was executed RequestDelegate next = (ctx) => { wasExecuted = true; return(Task.CompletedTask); }; var middelware = new StatusMiddleware(next: next); await middelware.Invoke(context); Assert.True(wasExecuted); ; }
public async Task ForMatchingRequest_Returns200() { RequestDelegate next = (ctx) => { ctx.Response.StatusCode = 404; return(Task.CompletedTask); }; var middleware = new StatusMiddleware(next: next); var context = new DefaultHttpContext(); context.Request.Path = "/ping"; await middleware.Invoke(context); Assert.Equal(200, context.Response.StatusCode); }
public async Task ForNonMatchingRequest_CallsNextDelegate() { var context = new DefaultHttpContext(); context.Request.Path = "/somethingelse"; var wasExecuted = false; RequestDelegate next = (ctx) => { wasExecuted = true; return(Task.CompletedTask); }; var middleware = new StatusMiddleware(next: next); await middleware.Invoke(context); Assert.True(wasExecuted); }
public async Task ForNonMatchingRequest_CallsNextDelegate() { var context = new DefaultHttpContext(); context.Request.Path = "/somethingelse"; // creates a DefaultHttpContext and sets the path for the request var wasExecuted = false; // this will track whether RequestDelegate was executed RequestDelegate next = (ctx) => { wasExecuted = true; return(Task.CompletedTask); }; var middleware = new StatusMiddleware(next: next); // creates an instance of the middleware passing the the next Request Delegate await middleware.Invoke(context); // should invoke the RequestDelegate Assert.True(wasExecuted); // verification }
public async Task ReturnsPongBodyContent() //using testing StatusMiddleware when a matching Path is provided { var bodyStream = new MemoryStream(); //to read Body with memory stream var context = new DefaultHttpContext(); context.Response.Body = bodyStream; context.Request.Path = "/ping"; RequestDelegate next = (ctx) => Task.CompletedTask; var middleware = new StatusMiddleware(next); await middleware.Invoke(context); string response; bodyStream.Seek(0, SeekOrigin.Begin); using (var stringReader = new StreamReader(bodyStream)) { response = await stringReader.ReadToEndAsync(); } Assert.Equal("pong", response); Assert.Equal("text/plain", context.Response.ContentType); Assert.Equal(200, context.Response.StatusCode); }
public async Task ReturnsPongBodyContent() { var bodyStream = new MemoryStream(); var context = new DefaultHttpContext(); context.Response.Body = bodyStream; context.Request.Path = "/ping"; RequestDelegate next = (ctx) => Task.CompletedTask; var middleware = new StatusMiddleware(next: next); await middleware.Invoke(context); string response; bodyStream.Seek(0, SeekOrigin.Begin); using (var stringReader = new StreamReader(bodyStream)) { response = await stringReader.ReadToEndAsync(); } Assert.Equal("pong", response); }