| File: BuildMetadataServiceCollectionExtensionsTests.cs | Web Access |
| Project: src\test\Libraries\Microsoft.Extensions.AmbientMetadata.Build.Tests\Microsoft.Extensions.AmbientMetadata.Build.Tests.csproj (Microsoft.Extensions.AmbientMetadata.Build.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.Collections.Generic; using FluentAssertions; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Xunit; namespace Microsoft.Extensions.AmbientMetadata.Test; public class BuildMetadataServiceCollectionExtensionsTests { [Fact] public void GivenAnyNullArgument_ShouldThrowArgumentNullException() { var serviceCollection = new ServiceCollection(); var config = new ConfigurationBuilder().Build(); serviceCollection.Invoking(x => ((IServiceCollection)null!).AddBuildMetadata(config.GetSection(string.Empty))) .Should().Throw<ArgumentNullException>(); serviceCollection.Invoking(x => x.AddBuildMetadata((Action<BuildMetadata>)null!)) .Should().Throw<ArgumentNullException>(); serviceCollection.Invoking(x => ((IServiceCollection)null!).AddBuildMetadata(_ => { })) .Should().Throw<ArgumentNullException>(); serviceCollection.Invoking(x => x.AddBuildMetadata((IConfigurationSection)null!)) .Should().Throw<ArgumentNullException>(); } [Fact] public void GivenConfigurationSection_ShouldRegisterMetadataFromIt() { // Arrange var testData = new BuildMetadata { BuildId = Guid.NewGuid().ToString(), BuildNumber = "v1.2.3", SourceBranchName = "main", SourceVersion = "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0", }; var config = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary<string, string?> { [$"{nameof(BuildMetadata)}:{nameof(BuildMetadata.BuildId)}"] = testData.BuildId, [$"{nameof(BuildMetadata)}:{nameof(BuildMetadata.BuildNumber)}"] = testData.BuildNumber, [$"{nameof(BuildMetadata)}:{nameof(BuildMetadata.SourceBranchName)}"] = testData.SourceBranchName, [$"{nameof(BuildMetadata)}:{nameof(BuildMetadata.SourceVersion)}"] = testData.SourceVersion, }) .Build(); var configurationSection = config .GetSection(nameof(BuildMetadata)); // Act using var provider = new ServiceCollection() .AddBuildMetadata(configurationSection) .BuildServiceProvider(); var metadata = provider .GetRequiredService<IOptions<BuildMetadata>>().Value; // Assert metadata.Should().BeEquivalentTo(testData); } [Fact] public void GivenActionDelegate_ShouldRegisterMetadataFromIt() { // Arrange var testData = new BuildMetadata { BuildId = Guid.NewGuid().ToString(), BuildNumber = "v1.2.3", SourceBranchName = "main", SourceVersion = "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0", }; // Act using var provider = new ServiceCollection() .AddBuildMetadata(m => { m.BuildId = testData.BuildId; m.BuildNumber = testData.BuildNumber; m.SourceVersion = testData.SourceVersion; m.SourceBranchName = testData.SourceBranchName; }) .BuildServiceProvider(); var metadata = provider .GetRequiredService<IOptions<BuildMetadata>>().Value; // Assert metadata.Should().BeEquivalentTo(testData); } }