コード例 #1
0
        public async Task ReadAsync_ReturnsFailure_IfItCanNotUnderstandTheContentTypeEncoding()
        {
            // Arrange
            var formatter = new TestFormatter();

            formatter.SupportedEncodings.Add(Encoding.ASCII);

            var context = new InputFormatterContext(
                new DefaultHttpContext(),
                "something",
                new ModelStateDictionary(),
                new EmptyModelMetadataProvider().GetMetadataForType(typeof(object)),
                (stream, encoding) => new StreamReader(stream, encoding));

            context.HttpContext.Request.ContentType   = "application/json;charset=utf-8";
            context.HttpContext.Request.ContentLength = 1;

            // Act
            var result = await formatter.ReadAsync(context);

            // Assert
            Assert.True(result.HasError);
            Assert.True(context.ModelState.ContainsKey("something"));
            Assert.Single(context.ModelState["something"].Errors);

            var error = context.ModelState["something"].Errors[0];

            Assert.IsType <UnsupportedContentTypeException>(error.Exception);
        }
コード例 #2
0
        public async Task ReadAsync_WithEmptyRequest_ReturnsNoValueResultWhenExpected(bool allowEmptyInputValue, bool expectedIsModelSet)
        {
            // Arrange
            var formatter = new TestFormatter();
            var context   = new InputFormatterContext(
                new DefaultHttpContext(),
                string.Empty,
                new ModelStateDictionary(),
                new EmptyModelMetadataProvider().GetMetadataForType(typeof(object)),
                (s, e) => new StreamReader(s, e),
                allowEmptyInputValue);

            context.HttpContext.Request.ContentLength = 0;

            // Act
            var result = await formatter.ReadAsync(context);

            // Assert
            Assert.False(result.HasError);
            Assert.Null(result.Model);
            Assert.Equal(expectedIsModelSet, result.IsModelSet);
        }