File: NuGetConfigTests.cs
Web Access
Project: src\tests\Infrastructure.Tests\Infrastructure.Tests.csproj (Infrastructure.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.Xml.Linq;
 
using Xunit;
 
namespace Infrastructure.Tests;
 
public sealed class NuGetConfigTests
{
    [Fact]
    public void TemplateRestoresUseOnlyLocalAndApprovedFeeds()
    {
        var document = XDocument.Load(Path.Combine(RepoRoot.Path, "tests", "Shared", "TemplatesTesting", "data", "nuget8.config"));
        var root = document.Root;
        Assert.NotNull(root);
        var sources = root.Element("packageSources")!.Elements("add")
            .ToDictionary(element => element.Attribute("key")!.Value, element => element.Attribute("value")!.Value, StringComparer.Ordinal);
        string[] expectedSources = ["built-local", "dotnet-eng", "dotnet-public", "dotnet10", "dotnet11", "dotnet9"];
        Assert.Equal(expectedSources, sources.Keys.Order(StringComparer.Ordinal));
        Assert.Equal("%BUILT_NUGETS_PATH%", sources["built-local"]);
        Assert.All(sources.Where(source => source.Key != "built-local"), source => AssertApprovedSource(source.Value));
 
        var mappings = root.Element("packageSourceMapping")!.Elements("packageSource")
            .ToDictionary(element => element.Attribute("key")!.Value,
                element => element.Elements("package").Select(package => package.Attribute("pattern")!.Value).ToArray(),
                StringComparer.Ordinal);
        Assert.Equal(expectedSources, mappings.Keys.Order(StringComparer.Ordinal));
        Assert.All(mappings.Values, patterns => Assert.Equal(["*"], patterns));
    }
 
    [Fact]
    public void AuditSourceIsSeparateFromPackageSources()
    {
        var root = XDocument.Load(Path.Combine(RepoRoot.Path, "NuGet.config")).Root!;
        var auditSources = Assert.Single(root.Elements("auditSources"));
 
        Assert.Collection(auditSources.Elements(),
            clear =>
            {
                Assert.Equal("clear", clear.Name.LocalName);
                Assert.Empty(clear.Attributes());
                Assert.Empty(clear.Nodes());
            },
            source =>
            {
                Assert.Equal("add", source.Name.LocalName);
                Assert.Equal("nuget.org", (string?)source.Attribute("key"));
                Assert.Equal("https://data.nuget.org/v3/index.json", (string?)source.Attribute("value"));
                Assert.Equal(2, source.Attributes().Count());
                Assert.Empty(source.Nodes());
            });
 
        var sources = root.Element("packageSources")!.Elements("add").ToArray();
        Assert.All(sources, source => AssertApprovedSource(source.Attribute("value")!.Value));
        Assert.Equal(
            sources.Select(source => source.Attribute("key")!.Value).Order(StringComparer.Ordinal),
            root.Element("packageSourceMapping")!.Elements("packageSource")
                .Select(source => source.Attribute("key")!.Value).Order(StringComparer.Ordinal));
    }
 
    [Fact]
    public void DiagnosticsPackagesAreMappedToPublicAndToolsFeeds()
    {
        var document = XDocument.Load(Path.Combine(RepoRoot.Path, "NuGet.config"));
        var root = document.Root;
        Assert.NotNull(root);
        string[] diagnosticsPackages =
        [
            "Microsoft.Diagnostics.NETCore.Client",
            "Microsoft.Diagnostics.Runtime",
        ];
 
        var source = Assert.Single(
            root.Element("packageSources")!.Elements("add"),
            element => (string?)element.Attribute("key") == "dotnet-tools");
        Assert.Equal(
            "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json",
            (string?)source.Attribute("value"));
 
        var mapping = Assert.Single(
            root.Element("packageSourceMapping")!.Elements("packageSource"),
            element => (string?)element.Attribute("key") == "dotnet-tools");
        var patterns = mapping.Elements("package")
            .Select(element => element.Attribute("pattern")!.Value)
            .ToArray();
 
        Assert.Equal(diagnosticsPackages, patterns);
 
        var publicMapping = Assert.Single(
            root.Element("packageSourceMapping")!.Elements("packageSource"),
            element => (string?)element.Attribute("key") == "dotnet-public");
        var publicPatterns = publicMapping.Elements("package")
            .Select(element => element.Attribute("pattern")!.Value);
 
        foreach (var package in diagnosticsPackages)
        {
            Assert.Contains(package, publicPatterns);
        }
    }
 
    private static void AssertApprovedSource(string source)
    {
        Assert.True(
            source.StartsWith("https://pkgs.dev.azure.com/dnceng/", StringComparison.Ordinal) ||
            source.StartsWith("https://dnceng.pkgs.visualstudio.com/public/", StringComparison.Ordinal),
            $"Unexpected package source: {source}");
    }
}