| File: Buffering\PerRequestLogBufferingOptionsConfigureOptionsTests.cs | Web Access |
| Project: src\test\Libraries\Microsoft.AspNetCore.Diagnostics.Middleware.Tests\Microsoft.AspNetCore.Diagnostics.Middleware.Tests.csproj (Microsoft.AspNetCore.Diagnostics.Middleware.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #if NET9_0_OR_GREATER using System.Collections.Generic; using Microsoft.AspNetCore.Diagnostics.Buffering; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Xunit; namespace Microsoft.Extensions.Diagnostics.Buffering.Test; public class PerRequestLogBufferingOptionsConfigureOptionsTests { [Fact] public void Configure_WhenConfigurationIsNull_DoesNotModifyOptions() { // Arrange var options = new PerRequestLogBufferingOptions(); var configureOptions = new PerRequestLogBufferingConfigureOptions(null!); // Act configureOptions.Configure(options); // Assert Assert.Equivalent(new PerRequestLogBufferingOptions(), options); } [Fact] public void Configure_WhenSectionDoesNotExist_DoesNotModifyOptions() { // Arrange var options = new PerRequestLogBufferingOptions(); IConfigurationRoot configuration = new ConfigurationBuilder().Build(); var configureOptions = new PerRequestLogBufferingConfigureOptions(configuration); // Act configureOptions.Configure(options); // Assert Assert.Equivalent(new PerRequestLogBufferingOptions(), options); } [Fact] public void Configure_WhenSectionContainsInvalidPropertyNames_DoesNotModifyOptions() { // Arrange var configValues = new Dictionary<string, string?> { ["GlobalLogBuffering"] = "1", }; IConfigurationRoot configuration = new ConfigurationBuilder() .AddInMemoryCollection(configValues) .Build(); var options = new PerRequestLogBufferingOptions(); var configureOptions = new PerRequestLogBufferingConfigureOptions(configuration); // Act configureOptions.Configure(options); // Assert Assert.Equivalent(new PerRequestLogBufferingOptions(), options); } [Fact] public void Configure_WithValidConfiguration_UpdatesOptions() { // Arrange var configValues = new Dictionary<string, string?> { ["PerIncomingRequestLogBuffering:MaxLogRecordSizeInBytes"] = "1024", ["PerIncomingRequestLogBuffering:MaxPerRequestBufferSizeInBytes"] = "4096", ["PerIncomingRequestLogBuffering:Rules:0:CategoryName"] = "TestCategory", ["PerIncomingRequestLogBuffering:Rules:0:LogLevel"] = "Information" }; IConfigurationRoot configuration = new ConfigurationBuilder() .AddInMemoryCollection(configValues) .Build(); var options = new PerRequestLogBufferingOptions(); var configureOptions = new PerRequestLogBufferingConfigureOptions(configuration); // Act configureOptions.Configure(options); // Assert Assert.Equal(1024, options.MaxLogRecordSizeInBytes); Assert.Equal(4096, options.MaxPerRequestBufferSizeInBytes); Assert.Single(options.Rules); Assert.Equal("TestCategory", options.Rules[0].CategoryName); Assert.Equal(LogLevel.Information, options.Rules[0].LogLevel); } [Fact] public void Configure_WithMultipleRules_AddsAllRules() { // Arrange var configValues = new Dictionary<string, string?> { ["PerIncomingRequestLogBuffering:Rules:0:CategoryName"] = "Category1", ["PerIncomingRequestLogBuffering:Rules:0:LogLevel"] = "Warning", ["PerIncomingRequestLogBuffering:Rules:1:CategoryName"] = "Category2", ["PerIncomingRequestLogBuffering:Rules:1:LogLevel"] = "Error" }; IConfigurationRoot configuration = new ConfigurationBuilder() .AddInMemoryCollection(configValues) .Build(); var options = new PerRequestLogBufferingOptions(); var configureOptions = new PerRequestLogBufferingConfigureOptions(configuration); // Act configureOptions.Configure(options); // Assert Assert.Equal(2, options.Rules.Count); Assert.Equal("Category1", options.Rules[0].CategoryName); Assert.Equal(LogLevel.Warning, options.Rules[0].LogLevel); Assert.Equal("Category2", options.Rules[1].CategoryName); Assert.Equal(LogLevel.Error, options.Rules[1].LogLevel); } } #endif