// Copyright (c) Microsoft. All rights reserved. using System; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.AI; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace Microsoft.Agents.AI.Hosting.OpenAI.UnitTests; /// /// Tests for EndpointRouteBuilderExtensions.MapOpenAIResponses method. /// public sealed class EndpointRouteBuilderExtensionsTests { /// /// Verifies that MapOpenAIResponses throws ArgumentNullException for null endpoints. /// [Fact] public void MapOpenAIResponses_NullEndpoints_ThrowsArgumentNullException() { // Arrange AspNetCore.Routing.IEndpointRouteBuilder endpoints = null!; AIAgent agent = null!; // Act & Assert ArgumentNullException exception = Assert.Throws(() => endpoints.MapOpenAIResponses(agent)); Assert.Equal("endpoints", exception.ParamName); } /// /// Verifies that MapOpenAIResponses throws ArgumentNullException for null agent. /// [Fact] public void MapOpenAIResponses_NullAgent_ThrowsArgumentNullException() { // Arrange WebApplicationBuilder builder = WebApplication.CreateBuilder(); builder.AddOpenAIResponses(); using WebApplication app = builder.Build(); // Act & Assert AIAgent agent = null!; ArgumentNullException exception = Assert.Throws(() => app.MapOpenAIResponses(agent)); Assert.Equal("agent", exception.ParamName); } /// /// Verifies that MapOpenAIResponses validates agent name characters for URL safety. /// [Theory] [InlineData("agent with spaces")] [InlineData("agent