Files
wehub-resource-sync db620d33df
CodeQL / Analyze (csharp) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
dotnet-build-and-test / dotnet-test-functions (push) Has been cancelled
dotnet-build-and-test / paths-filter (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Debug, windows-latest, net9.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net8.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-foundry-hosted-it (push) Has been cancelled
dotnet-build-and-test / dotnet-build-and-test-check (push) Has been cancelled
dotnet-build-and-test / Integration Test Report (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:39:25 +08:00

67 lines
2.1 KiB
C#

// Copyright (c) Microsoft. All rights reserved.
using System;
using System.Threading.Tasks;
using Foundry.Hosting.IntegrationTests.Fixtures;
namespace Foundry.Hosting.IntegrationTests;
/// <summary>
/// Basic round trip, streaming, and container-instruction behaviour for a hosted Responses agent.
/// Store and session semantics live in <see cref="HostedResponsesStoreConfigTests"/>.
/// </summary>
[Trait("Category", "FoundryHostedAgents")]
public sealed class HappyPathHostedAgentTests(HappyPathHostedAgentFixture fixture) : IClassFixture<HappyPathHostedAgentFixture>
{
private readonly HappyPathHostedAgentFixture _fixture = fixture;
[Fact]
public async Task RunAsync_ReturnsNonEmptyTextAsync()
{
// Arrange
var agent = this._fixture.Agent;
// Act
var response = await agent.RunAsync("Reply with a short greeting.");
// Assert
Assert.False(string.IsNullOrWhiteSpace(response.Text));
}
[Fact]
public async Task RunStreamingAsync_YieldsAtLeastOneUpdateAsync()
{
// Arrange
var agent = this._fixture.Agent;
// Act
var collected = new System.Collections.Generic.List<string>();
await foreach (var update in agent.RunStreamingAsync("Reply with a short greeting."))
{
if (!string.IsNullOrEmpty(update.Text))
{
collected.Add(update.Text);
}
}
// Assert
Assert.NotEmpty(collected);
Assert.False(string.IsNullOrWhiteSpace(string.Concat(collected)));
}
[Fact]
public async Task Instructions_FromContainerDefinition_AreObeyedAsync()
{
// Arrange: the container-side happy-path instructions require every reply to end with the
// marker token CONTAINER-OK. See TestContainer/Program.cs.
var agent = this._fixture.Agent;
// Act
var response = await agent.RunAsync("Say something useful.");
// Assert
Assert.False(string.IsNullOrWhiteSpace(response.Text));
Assert.Contains("CONTAINER-OK", response.Text, StringComparison.OrdinalIgnoreCase);
}
}