| File: HeaderRegistryTests.cs | Web Access |
| Project: src\test\Libraries\Microsoft.AspNetCore.HeaderParsing.Tests\Microsoft.AspNetCore.HeaderParsing.Tests.csproj (Microsoft.AspNetCore.HeaderParsing.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Globalization; using Microsoft.AspNetCore.HeaderParsing.Parsers; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Xunit; namespace Microsoft.AspNetCore.HeaderParsing.Test; public class HeaderRegistryTests { private readonly IOptions<HeaderParsingOptions> _options; private readonly IServiceCollection _services; public HeaderRegistryTests() { _options = Options.Create(new HeaderParsingOptions()); _services = new ServiceCollection(); } [Fact] public void Registers_header_without_default_value() { var registry = new HeaderRegistry(_services.BuildServiceProvider(), _options); var key = registry.Register(CommonHeaders.Date); Assert.Equal(0, key.Position); Assert.Equal(CommonHeaders.Date.ParserInstance, key.Parser); Assert.Equal(CommonHeaders.Date.HeaderName, key.Name); Assert.False(key.HasDefaultValue); } [Fact] public void Registers_header_with_typed_default_value() { var date = DateTimeOffset.Now.ToString("R", CultureInfo.InvariantCulture); _options.Value.DefaultValues.Add("Date", date); var registry = new HeaderRegistry(_services.BuildServiceProvider(), _options); var key = registry.Register(CommonHeaders.Date); Assert.True(key.HasDefaultValue); Assert.Equal(date, key.DefaultValue.ToString("R", CultureInfo.InvariantCulture)); } [Fact] public void Registers_header_with_bad_default_value() { var date = "BOGUS"; _options.Value.DefaultValues.Add("Date", date); var registry = new HeaderRegistry(_services.BuildServiceProvider(), _options); Assert.Throws<InvalidOperationException>(() => registry.Register(CommonHeaders.Date)); } [Fact] public void Registers_multiple_headers_with_rising_index() { var registry = new HeaderRegistry(_services.BuildServiceProvider(), _options); var key1 = registry.Register(CommonHeaders.Date); var key2 = registry.Register(CommonHeaders.Accept); var key3 = registry.Register(CommonHeaders.AcceptLanguage); Assert.Equal(0, key1.Position); Assert.Equal(1, key2.Position); Assert.Equal(2, key3.Position); } [Fact] public void Registers_same_header_with_same_index() { var registry = new HeaderRegistry(_services.BuildServiceProvider(), _options); var key1 = registry.Register(CommonHeaders.Date); var key2 = registry.Register(CommonHeaders.Date); Assert.Equal(key1.Position, key2.Position); } [Fact] public void Registers_header_with_parser_type() { _services.AddSingleton(DateTimeOffsetParser.Instance); var registry = new HeaderRegistry(_services.BuildServiceProvider(), _options); var key = registry.Register(new HeaderSetup<DateTimeOffset>("MyDate", typeof(DateTimeOffsetParser))); Assert.IsType<DateTimeOffsetParser>(key.Parser); } }