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
        }
Beispiel #2
0
        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);
            ;
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #8
0
        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);
        }