File: DotNet\DotNetAppHostRestorePreviewTests.cs
Web Access
Project: src\tests\Aspire.Cli.Tests\Aspire.Cli.Tests.csproj (Aspire.Cli.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.Text;
using Aspire.Cli.DotNet;
using Aspire.Cli.Tests.TestServices;
 
namespace Aspire.Cli.Tests.DotNet;
 
public class DotNetAppHostRestorePreviewTests(ITestOutputHelper outputHelper)
{
    [Fact]
    public async Task CreateAsync_RejectsConfigOutsideAppHostHierarchyBeforeWritingDraft()
    {
        using var workspace = TemporaryWorkspace.CreateForCli(outputHelper);
        var appHost = workspace.CreateDirectory("apphost");
        var unrelated = workspace.CreateDirectory("unrelated");
        var project = new FileInfo(Path.Combine(appHost.FullName, "AppHost.csproj"));
        var candidate = new DotNetAppHostNuGetConfigMergerCandidate(
            new FileInfo(Path.Combine(unrelated.FullName, "NuGet.Config")), null,
            Encoding.UTF8.GetBytes("<configuration />"));
        var settings = new DotNetRestoreSettings(project.FullName, "NuGet.targets", []);
 
        await Assert.ThrowsAsync<InvalidOperationException>(() => DotNetAppHostRestorePreview.CreateAsync(
            NuGetTestHelper.CreateService(), candidate, settings, project,
            new Dictionary<string, string>(), TestContext.Current.CancellationToken));
 
        Assert.Empty(unrelated.EnumerateFileSystemInfos());
        Assert.Empty(appHost.EnumerateFileSystemInfos());
    }
}