示例#1
0
        public async Task ContentResult_DisablesResponseBuffering_IfBufferingFeatureAvailable()
        {
            // Arrange
            var data          = "Test Content";
            var contentResult = new ContentResult
            {
                Content     = data,
                ContentType = new MediaTypeHeaderValue("text/plain")
                {
                    Encoding = Encoding.ASCII
                }
            };
            var httpContext = GetHttpContext();

            httpContext.Features.Set <IHttpBufferingFeature>(new TestBufferingFeature());
            var memoryStream = new MemoryStream();

            httpContext.Response.Body = memoryStream;
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal("text/plain; charset=us-ascii", httpContext.Response.ContentType);
            Assert.Equal(Encoding.ASCII.GetString(memoryStream.ToArray()), data);
            var bufferingFeature = (TestBufferingFeature)httpContext.Features.Get <IHttpBufferingFeature>();

            Assert.True(bufferingFeature.DisableResponseBufferingInvoked);
        }
示例#2
0
        public async Task ContentResult_DisablesResponseBuffering_IfBufferingFeatureAvailable()
        {
            // Arrange
            var data = "Test Content";
            var contentResult = new ContentResult
            {
                Content = data,
                ContentType = new MediaTypeHeaderValue("text/plain")
                {
                    Encoding = Encoding.ASCII
                }
            };
            var httpContext = GetHttpContext();
            httpContext.Features.Set<IHttpBufferingFeature>(new TestBufferingFeature());
            var memoryStream = new MemoryStream();
            httpContext.Response.Body = memoryStream;
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal("text/plain; charset=us-ascii", httpContext.Response.ContentType);
            Assert.Equal(Encoding.ASCII.GetString(memoryStream.ToArray()), data);
            var bufferingFeature = (TestBufferingFeature)httpContext.Features.Get<IHttpBufferingFeature>();
            Assert.True(bufferingFeature.DisableResponseBufferingInvoked);
        }
示例#3
0
        public async Task ContentResult_ExecuteResultAsync_SetContentTypeAndEncoding_OnResponse(
            MediaTypeHeaderValue contentType,
            string content,
            string responseContentType,
            string expectedContentType,
            byte[] expectedContentData)
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content     = content,
                ContentType = contentType
            };
            var httpContext  = GetHttpContext();
            var memoryStream = new MemoryStream();

            httpContext.Response.Body        = memoryStream;
            httpContext.Response.ContentType = responseContentType;
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal(expectedContentType, httpContext.Response.ContentType);
            Assert.Equal(expectedContentData, memoryStream.ToArray());
        }
示例#4
0
        public async Task ContentResult_Response_NullEncoding_SetsContentTypeAndDefaultEncoding()
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content = "Test Content",
                ContentType = new MediaTypeHeaderValue("application/json")
            };
            var httpContext = GetHttpContext();
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal("application/json; charset=utf-8", httpContext.Response.ContentType);
        }
示例#5
0
        public async Task ContentResult_Response_NullEncoding_SetsContentTypeAndDefaultEncoding()
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content     = "Test Content",
                ContentType = new MediaTypeHeaderValue("application/json")
            };
            var httpContext   = GetHttpContext();
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal("application/json; charset=utf-8", httpContext.Response.ContentType);
        }
示例#6
0
        public async Task ContentResult_Response_NullContentType_SetsEncodingAndDefaultContentType()
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content = "Test Content",
                ContentType = null,
                ContentEncoding = Encoding.UTF7
            };
            var httpContext = GetHttpContext();
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal("text/plain; charset=utf-7", httpContext.Response.ContentType);
        }
示例#7
0
        public async Task ContentResult_Response_SetsContentTypeAndEncoding()
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content = "Test Content",
                ContentType = "text/plain",
                ContentEncoding = Encoding.ASCII
            };
            var httpContext = GetHttpContext();
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal("text/plain; charset=us-ascii", httpContext.Response.ContentType);
        }
示例#8
0
        public async Task ContentResult_Response_NullContent_SetsContentTypeAndEncoding()
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content         = null,
                ContentType     = "application/json",
                ContentEncoding = Encoding.UTF8
            };
            var httpContext   = GetHttpContext();
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal("application/json; charset=utf-8", httpContext.Response.ContentType);
        }
示例#9
0
        public async Task ContentResult_Response_NullContentType_SetsEncodingAndDefaultContentType()
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content         = "Test Content",
                ContentType     = null,
                ContentEncoding = Encoding.UTF7
            };
            var httpContext   = GetHttpContext();
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal("text/plain; charset=utf-7", httpContext.Response.ContentType);
        }
示例#10
0
        public async Task ContentResult_Response_SetsContentTypeAndEncoding()
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content         = "Test Content",
                ContentType     = "text/plain",
                ContentEncoding = Encoding.ASCII
            };
            var httpContext   = GetHttpContext();
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal("text/plain; charset=us-ascii", httpContext.Response.ContentType);
        }
示例#11
0
        public async Task ContentResult_Response_BadContentType_ThrowsFormatException()
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content         = "Test Content",
                ContentType     = "some-type",
                ContentEncoding = null
            };
            var httpContext   = GetHttpContext();
            var actionContext = GetActionContext(httpContext);

            // Act
            var exception = await Assert.ThrowsAsync <FormatException>(
                async() => await contentResult.ExecuteResultAsync(actionContext));

            // Assert
            Assert.Equal("Invalid media type 'some-type'.", exception.Message);
        }
示例#12
0
        public async Task ContentResult_Response_NullContent_SetsContentTypeAndEncoding()
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content = null,
                ContentType = new MediaTypeHeaderValue("text/plain")
                {
                    Encoding = Encoding.UTF7
                }
            };
            var httpContext = GetHttpContext();
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal("text/plain; charset=utf-7", httpContext.Response.ContentType);
        }
示例#13
0
        public async Task ContentResult_Response_NullContent_SetsContentTypeAndEncoding()
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content     = null,
                ContentType = new MediaTypeHeaderValue("text/plain")
                {
                    Encoding = Encoding.UTF7
                }
            };
            var httpContext   = GetHttpContext();
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal("text/plain; charset=utf-7", httpContext.Response.ContentType);
        }
示例#14
0
        public async Task ContentResult_Response_BadContentType_ThrowsFormatException()
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content = "Test Content",
                ContentType = "some-type",
                ContentEncoding = null
            };
            var httpContext = GetHttpContext();
            var actionContext = GetActionContext(httpContext);

            // Act
            var exception = await Assert.ThrowsAsync<FormatException>(
                        async () => await contentResult.ExecuteResultAsync(actionContext));

            // Assert
            Assert.Equal("Invalid media type 'some-type'.", exception.Message);
        }
示例#15
0
        public async Task ContentResult_Response_NullContent_SetsContentTypeAndEncoding()
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content = null,
                ContentType = "application/json",
                ContentEncoding = Encoding.UTF8
            };
            var httpContext = GetHttpContext();
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal("application/json; charset=utf-8", httpContext.Response.ContentType);
        }
示例#16
0
        public async Task ContentResult_ExecuteResultAsync_SetContentTypeAndEncoding_OnResponse(
            MediaTypeHeaderValue contentType,
            string content,
            string expectedContentType,
            byte[] expectedContentData)
        {
            // Arrange
            var contentResult = new ContentResult
            {
                Content = content,
                ContentType = contentType
            };
            var httpContext = GetHttpContext();
            var memoryStream = new MemoryStream();
            httpContext.Response.Body = memoryStream;
            var actionContext = GetActionContext(httpContext);

            // Act
            await contentResult.ExecuteResultAsync(actionContext);

            // Assert
            Assert.Equal(expectedContentType, httpContext.Response.ContentType);
            Assert.Equal(expectedContentData, memoryStream.ToArray());
        }