aspnetcore/test/Microsoft.AspNet.Mvc.Header.../HeaderParsingHelpersTests.cs

90 lines
3.3 KiB
C#

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using Xunit;
namespace Microsoft.AspNet.Mvc.HeaderValueAbstractions
{
public class HeaderParsingHelpersTests
{
//Accept Headers
[Fact]
public void GetAcceptHeaders_ReturnsParsedHeaders()
{
// Arrange & Act
var headers = HeaderParsingHelpers.GetAcceptHeaders("application/xml;q=0.4, application/xhtml;q=0.9");
// Assert
Assert.Equal(2, headers.Count);
Assert.Equal("application", headers[0].MediaType);
Assert.Equal("xml", headers[0].MediaSubType);
Assert.Equal(0.4, headers[0].Quality);
Assert.Equal("application", headers[1].MediaType);
Assert.Equal("xhtml", headers[1].MediaSubType);
Assert.Equal(0.9, headers[1].Quality);
}
public static IEnumerable<object[]> CasesWhereGetAcceptHeadersReturnsNull
{
get
{
yield return new object[] { "" };
yield return new object[] { "application/xml;q=0.4, application/xhtml;q=0,9" };
yield return new object[] { "application/xml;q=0.4, application/xhtml;q=-0.4" };
yield return new object[] { "application/xml;q=0 4" };
yield return new object[] { "application/xml;q=0*4" };
yield return new object[] { "application/xml;q=1^4" };
}
}
[Theory]
[MemberData(nameof(CasesWhereGetAcceptHeadersReturnsNull))]
public void GetAcceptHeaders_ReturnsNull(string acceptHeader)
{
// Arrange & Act
var headers = HeaderParsingHelpers.GetAcceptHeaders(acceptHeader);
// Assert
Assert.Null(headers);
}
// Charset Headers
[Fact]
public void GetAcceptCharsetHeaders_ReturnsParsedHeaders()
{
// Arrange & Act
var headers = HeaderParsingHelpers.GetAcceptCharsetHeaders("utf-8;q=0.7,gzip;q=0.3");
// Assert
Assert.Equal(2, headers.Count);
Assert.Equal("utf-8", headers[0].Value);
Assert.Equal(0.7, headers[0].Quality);
Assert.Equal("gzip", headers[1].Value);
Assert.Equal(0.3, headers[1].Quality);
}
public static IEnumerable<object[]> CasesWhereGetCharsetHeadersReturnsNull
{
get
{
yield return new object[] { "" };
yield return new object[] { "utf-8;q=0,7,gzip;q=-1" };
yield return new object[] { "utf-8;q=0*7,gzip;q=1.0" };
yield return new object[] { "utf-8;q=0 7" };
yield return new object[] { "utf-8;q=0^7" };
}
}
[Theory]
[MemberData(nameof(CasesWhereGetCharsetHeadersReturnsNull))]
public void GetAcceptCharsetHeaders_ReturnsNull_IfAcceptHeaderIsEmpty(string charsetHeader)
{
// Arrange & Act
var headers = HeaderParsingHelpers.GetAcceptCharsetHeaders(charsetHeader);
// Assert
Assert.Null(headers);
}
}
}