From 6396e14504b8a15a641a5bf0a029e8eeb023dd63 Mon Sep 17 00:00:00 2001 From: Ryan Brandenburg Date: Fri, 13 Jan 2017 16:15:30 -0800 Subject: [PATCH] Add null-check back to MediaType --- .../Formatters/MediaType.cs | 17 ++++++++++------- .../Formatters/MediaTypeTest.cs | 10 ++++++++++ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/Microsoft.AspNetCore.Mvc.Core/Formatters/MediaType.cs b/src/Microsoft.AspNetCore.Mvc.Core/Formatters/MediaType.cs index 7d37dcbd9b..1c7e008657 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/Formatters/MediaType.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/Formatters/MediaType.cs @@ -55,16 +55,19 @@ namespace Microsoft.AspNetCore.Mvc.Formatters throw new ArgumentOutOfRangeException(nameof(offset)); } - if (length < 0 || length > mediaType.Length) + if (length != null) { - throw new ArgumentOutOfRangeException(nameof(length)); - } + if(length < 0 || length > mediaType.Length) + { + throw new ArgumentOutOfRangeException(nameof(length)); + } - if (offset > mediaType.Length - length) - { - throw new ArgumentException(Resources.FormatArgument_InvalidOffsetLength(nameof(offset), nameof(length))); + if (offset > mediaType.Length - length) + { + throw new ArgumentException(Resources.FormatArgument_InvalidOffsetLength(nameof(offset), nameof(length))); + } } - + _parameterParser = default(MediaTypeParameterParser); StringSegment type; diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/Formatters/MediaTypeTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/Formatters/MediaTypeTest.cs index b5bd23dacd..95fa6c6a8d 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/Formatters/MediaTypeTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/Formatters/MediaTypeTest.cs @@ -60,6 +60,16 @@ namespace Microsoft.AspNetCore.Mvc.Formatters Assert.Equal(new StringSegment("utf-8"), result.GetParameter("charset")); } + [Fact] + public void Constructor_NullLength_IgnoresLength() + { + // Arrange & Act + var result = new MediaType("mediaType", 1, length: null); + + // Assert + Assert.Equal(new StringSegment("ediaType"), result.Type); + } + [Fact] public void Constructor_NullMediaType_Throws() {