| File: ProjectWithReferenceTests.cs | Web Access |
| Project: src\tests\Aspire.Hosting.Foundry.Tests\Aspire.Hosting.Foundry.Tests.csproj (Aspire.Hosting.Foundry.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Hosting.Tests.Utils; using Aspire.Hosting.Utils; namespace Aspire.Hosting.Foundry.Tests; public class ProjectWithReferenceTests { [Fact] public async Task WithReference_InjectsFoundryProjectEndpointAsConnectionProperty() { using var builder = TestDistributedApplicationBuilder.Create(); var project = builder.AddFoundry("test-account") .AddProject("test-project"); var pyapp = builder.AddPythonApp("app", "./app.py", "main:app") .WithReference(project); builder.Build(); var envVars = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync( pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); Assert.Contains(envVars, kvp => kvp.Key == "TEST_PROJECT_URI" && kvp.Value == "{test-project.outputs.endpoint}"); } [Fact] public async Task WithReference_InjectsApplicationInsightsAsConnectionProperty() { using var builder = TestDistributedApplicationBuilder.Create(); var project = builder.AddFoundry("test-account") .AddProject("test-project"); var pyapp = builder.AddPythonApp("app", "./app.py", "main:app") .WithReference(project); builder.Build(); var envVars = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync( pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); Assert.Contains(envVars, kvp => kvp.Key == "TEST_PROJECT_APPLICATIONINSIGHTSCONNECTIONSTRING" && kvp.Value == "{test-project.outputs.APPLICATION_INSIGHTS_CONNECTION_STRING}"); } [Fact] public async Task WithReference_InjectsStandardConnectionString() { using var builder = TestDistributedApplicationBuilder.Create(); var project = builder.AddFoundry("test-account") .AddProject("test-project"); var pyapp = builder.AddPythonApp("app", "./app.py", "main:app") .WithReference(project); builder.Build(); var envVars = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync( pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); // Standard connection string is also injected via ResourceBuilderExtensions.WithReference Assert.Contains(envVars, kvp => kvp.Key.StartsWith("ConnectionStrings__", StringComparison.Ordinal)); } [Fact] public async Task WithReference_DeploymentInjectsModelNameAsConnectionProperty() { using var builder = TestDistributedApplicationBuilder.Create(); var foundry = builder.AddFoundry("test-account"); var deployment = foundry.AddDeployment("chat", "gpt-4", "1", "OpenAI"); var pyapp = builder.AddPythonApp("app", "./app.py", "main:app") .WithReference(deployment); builder.Build(); var envVars = await EnvironmentVariableEvaluator.GetEnvironmentVariablesAsync( pyapp.Resource, DistributedApplicationOperation.Publish, TestServiceProvider.Instance); Assert.Contains(envVars, kvp => kvp.Key == "CHAT_MODELNAME" && kvp.Value == "chat"); Assert.Contains(envVars, kvp => kvp.Key == "CHAT_FORMAT" && kvp.Value == "OpenAI"); Assert.Contains(envVars, kvp => kvp.Key == "CHAT_VERSION" && kvp.Value == "1"); Assert.Contains(envVars, kvp => kvp.Key == "CHAT_URI"); } }