コード例 #1
0
    public void CanWriteResult_ByDefault_ReturnsTrue_IfTheValueIsNull(
        object value,
        bool declaredTypeAsString,
        bool expected,
        bool useNonNullContentType)
    {
        // Arrange
        var type        = declaredTypeAsString ? typeof(string) : typeof(object);
        var contentType = useNonNullContentType ? new StringSegment("text/plain") : new StringSegment();

        var context = new OutputFormatterWriteContext(
            new DefaultHttpContext(),
            new TestHttpResponseStreamWriterFactory().CreateWriter,
            type,
            value)
        {
            ContentType = contentType,
        };

        var formatter = new HttpNoContentOutputFormatter();

        // Act
        var result = formatter.CanWriteResult(context);

        // Assert
        Assert.Equal(expected, result);
    }
コード例 #2
0
    public void CanWriteResult_ReturnsTrue_IfReturnValueIsNullAndTreatNullValueAsNoContentIsNotSet(
        string value,
        bool treatNullValueAsNoContent,
        bool expected)
    {
        // Arrange
        var context = new OutputFormatterWriteContext(
            new DefaultHttpContext(),
            new TestHttpResponseStreamWriterFactory().CreateWriter,
            typeof(string),
            value)
        {
            ContentType = new StringSegment("text/plain"),
        };

        var formatter = new HttpNoContentOutputFormatter()
        {
            TreatNullValueAsNoContent = treatNullValueAsNoContent
        };

        // Act
        var result = formatter.CanWriteResult(context);

        // Assert
        Assert.Equal(expected, result);
    }
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            var result = context.Result as ObjectResult;
            if (result != null)
            {
                var noContentFormatter = new HttpNoContentOutputFormatter() { TreatNullValueAsNoContent = false };
                result.Formatters.Add(noContentFormatter);
            }

            base.OnActionExecuted(context);
        }
コード例 #4
0
    public override void OnActionExecuted(ActionExecutedContext context)
    {
        var result = context.Result as ObjectResult;

        if (result != null)
        {
            var noContentFormatter = new HttpNoContentOutputFormatter()
            {
                TreatNullValueAsNoContent = false
            };
            result.Formatters.Add(noContentFormatter);
        }

        base.OnActionExecuted(context);
    }
コード例 #5
0
    public async Task WriteAsync_WritesTheStatusCode204()
    {
        // Arrange
        var context = new OutputFormatterWriteContext(
            new DefaultHttpContext(),
            new TestHttpResponseStreamWriterFactory().CreateWriter,
            typeof(string),
            @object: null);

        var formatter = new HttpNoContentOutputFormatter();

        // Act
        await formatter.WriteAsync(context);

        // Assert
        Assert.Equal(StatusCodes.Status204NoContent, context.HttpContext.Response.StatusCode);
    }
コード例 #6
0
ファイル: NoContentFormatterTests.cs プロジェクト: zt97/Mvc
        public async Task WriteAsync_WritesTheStatusCode204()
        {
            // Arrange
            var defaultHttpContext = new DefaultHttpContext();
            var formatterContext   = new OutputFormatterContext()
            {
                Object      = null,
                HttpContext = defaultHttpContext,
            };

            var formatter = new HttpNoContentOutputFormatter();

            // Act
            await formatter.WriteAsync(formatterContext);

            // Assert
            Assert.Equal(StatusCodes.Status204NoContent, defaultHttpContext.Response.StatusCode);
        }
コード例 #7
0
        public void CanWriteResult_ReturnsTrue_IfReturnTypeIsVoidOrTask(Type declaredType)
        {
            // Arrange
            var formatterContext = new OutputFormatterContext()
            {
                Object = "Something non null.",
                DeclaredType = declaredType,
                ActionContext = null,
            };
            var contetType = MediaTypeHeaderValue.Parse("text/plain");
            var formatter = new HttpNoContentOutputFormatter();

            // Act
            var actualCanWriteResult = formatter.CanWriteResult(formatterContext, contetType);

            // Assert
            Assert.True(actualCanWriteResult);
        }
コード例 #8
0
        public async Task WriteAsync_WritesTheStatusCode204()
        {
            // Arrange
            var defaultHttpContext = new DefaultHttpContext();
            var formatterContext   = new OutputFormatterContext()
            {
                Object        = null,
                ActionContext = new ActionContext(defaultHttpContext, new RouteData(), new ActionDescriptor())
            };

            var formatter = new HttpNoContentOutputFormatter();

            // Act
            await formatter.WriteAsync(formatterContext);

            // Assert
            Assert.Equal(204, defaultHttpContext.Response.StatusCode);
        }
コード例 #9
0
        public void CanWriteResult_ReturnsTrue_IfReturnTypeIsVoidOrTask(Type declaredType)
        {
            // Arrange
            var formatterContext = new OutputFormatterContext()
            {
                Object        = "Something non null.",
                DeclaredType  = declaredType,
                ActionContext = null,
            };
            var contetType = MediaTypeHeaderValue.Parse("text/plain");
            var formatter  = new HttpNoContentOutputFormatter();

            // Act
            var actualCanWriteResult = formatter.CanWriteResult(formatterContext, contetType);

            // Assert
            Assert.True(actualCanWriteResult);
        }
コード例 #10
0
ファイル: NoContentFormatterTests.cs プロジェクト: zt97/Mvc
        public async Task WriteAsync_ContextStatusCodeSet_WritesSameStatusCode()
        {
            // Arrange
            var defaultHttpContext = new DefaultHttpContext();
            var formatterContext   = new OutputFormatterContext()
            {
                Object      = null,
                HttpContext = defaultHttpContext,
                StatusCode  = StatusCodes.Status201Created
            };

            var formatter = new HttpNoContentOutputFormatter();

            // Act
            await formatter.WriteAsync(formatterContext);

            // Assert
            Assert.Equal(StatusCodes.Status201Created, defaultHttpContext.Response.StatusCode);
        }
コード例 #11
0
    public void CanWriteResult_ReturnsTrue_IfReturnTypeIsVoidOrTask(Type declaredType)
    {
        // Arrange
        var context = new OutputFormatterWriteContext(
            new DefaultHttpContext(),
            new TestHttpResponseStreamWriterFactory().CreateWriter,
            declaredType,
            "Something non null.")
        {
            ContentType = new StringSegment("text/plain"),
        };

        var formatter = new HttpNoContentOutputFormatter();

        // Act
        var result = formatter.CanWriteResult(context);

        // Assert
        Assert.True(result);
    }
コード例 #12
0
    public async Task WriteAsync_ContextStatusCodeSet_WritesSameStatusCode()
    {
        // Arrange
        var httpContext = new DefaultHttpContext();

        httpContext.Response.StatusCode = StatusCodes.Status201Created;

        var context = new OutputFormatterWriteContext(
            httpContext,
            new TestHttpResponseStreamWriterFactory().CreateWriter,
            typeof(string),
            @object: null);

        var formatter = new HttpNoContentOutputFormatter();

        // Act
        await formatter.WriteAsync(context);

        // Assert
        Assert.Equal(StatusCodes.Status201Created, httpContext.Response.StatusCode);
    }
コード例 #13
0
        public void CanWriteResult_ByDefault_ReturnsTrue_IfTheValueIsNull(object value,
                                                                          bool declaredTypeAsString,
                                                                          bool expectedCanwriteResult,
                                                                          bool useNonNullContentType)
        {
            // Arrange
            var typeToUse = declaredTypeAsString ? typeof(string) : typeof(object);
            var formatterContext = new OutputFormatterContext()
            {
                Object = value,
                DeclaredType = typeToUse,
                ActionContext = null,
            };
            var contetType = useNonNullContentType ? MediaTypeHeaderValue.Parse("text/plain") : null;
            var formatter = new HttpNoContentOutputFormatter();

            // Act
            var actualCanWriteResult = formatter.CanWriteResult(formatterContext, contetType);

            // Assert
            Assert.Equal(expectedCanwriteResult, actualCanWriteResult);
        }
コード例 #14
0
        public void CanWriteResult_ByDefault_ReturnsTrue_IfTheValueIsNull(object value,
                                                                          bool declaredTypeAsString,
                                                                          bool expectedCanwriteResult,
                                                                          bool useNonNullContentType)
        {
            // Arrange
            var typeToUse        = declaredTypeAsString ? typeof(string) : typeof(object);
            var formatterContext = new OutputFormatterContext()
            {
                Object        = value,
                DeclaredType  = typeToUse,
                ActionContext = null,
            };
            var contetType = useNonNullContentType ? MediaTypeHeaderValue.Parse("text/plain") : null;
            var formatter  = new HttpNoContentOutputFormatter();

            // Act
            var actualCanWriteResult = formatter.CanWriteResult(formatterContext, contetType);

            // Assert
            Assert.Equal(expectedCanwriteResult, actualCanWriteResult);
        }
コード例 #15
0
        CanWriteResult_ReturnsTrue_IfReturnValueIsNullAndTreatNullValueAsNoContentIsNotSet(string value,
                                                                                           bool treatNullValueAsNoContent,
                                                                                           bool expectedCanwriteResult)
        {
            // Arrange
            var formatterContext = new OutputFormatterContext()
            {
                Object        = value,
                DeclaredType  = typeof(string),
                ActionContext = null,
            };

            var contetType = MediaTypeHeaderValue.Parse("text/plain");
            var formatter  = new HttpNoContentOutputFormatter()
            {
                TreatNullValueAsNoContent = treatNullValueAsNoContent
            };

            // Act
            var actualCanWriteResult = formatter.CanWriteResult(formatterContext, contetType);

            // Assert
            Assert.Equal(expectedCanwriteResult, actualCanWriteResult);
        }
コード例 #16
0
        public async Task WriteAsync_WritesTheStatusCode204()
        {
            // Arrange
            var defaultHttpContext = new DefaultHttpContext();
            var formatterContext = new OutputFormatterContext()
            {
                Object = null,
                HttpContext = defaultHttpContext,
            };

            var formatter = new HttpNoContentOutputFormatter();

            // Act
            await formatter.WriteAsync(formatterContext);

            // Assert
            Assert.Equal(StatusCodes.Status204NoContent, defaultHttpContext.Response.StatusCode);
        }
コード例 #17
0
            CanWriteResult_ReturnsTrue_IfReturnValueIsNullAndTreatNullValueAsNoContentIsNotSet(string value,
                                                                                      bool treatNullValueAsNoContent,
                                                                                      bool expectedCanwriteResult)
        {
            // Arrange
            var formatterContext = new OutputFormatterContext()
            {
                Object = value,
                DeclaredType = typeof(string),
                ActionContext = null,
            };

            var contetType = MediaTypeHeaderValue.Parse("text/plain");
            var formatter = new HttpNoContentOutputFormatter()
            {
                TreatNullValueAsNoContent = treatNullValueAsNoContent
            };

            // Act
            var actualCanWriteResult = formatter.CanWriteResult(formatterContext, contetType);

            // Assert
            Assert.Equal(expectedCanwriteResult, actualCanWriteResult);
        }
コード例 #18
0
        public async Task WriteAsync_ContextStatusCodeSet_WritesSameStatusCode()
        {
            // Arrange
            var defaultHttpContext = new DefaultHttpContext();
            var formatterContext = new OutputFormatterContext()
            {
                Object = null,
                ActionContext = new ActionContext(defaultHttpContext, new RouteData(), new ActionDescriptor()),
                StatusCode = StatusCodes.Status201Created
            };

            var formatter = new HttpNoContentOutputFormatter();

            // Act
            await formatter.WriteAsync(formatterContext);

            // Assert
            Assert.Equal(StatusCodes.Status201Created, defaultHttpContext.Response.StatusCode);
        }