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); }
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); }