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
67 lines
2.1 KiB
C#
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);
|
|
}
|
|
}
|