Files
agent-framework/dotnet/tests/Microsoft.Agents.AI.Workflows.Declarative.UnitTests/CodeGen/InvokeAzureAgentTemplateTest.cs
Ren Finlayson 539852f81c
Some checks failed
CodeQL / Analyze (csharp) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
dotnet-build-and-test / paths-filter (push) Has been cancelled
dotnet-build-and-test / dotnet-build-and-test (Debug, windows-latest, net9.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build-and-test (Release, integration, true, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build-and-test (Release, integration, true, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-build-and-test (Release, ubuntu-latest, net8.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build-and-test-check (push) Has been cancelled
Python - Merge - Tests / paths-filter (push) Has been cancelled
Python - Merge - Tests / Python Tests - Core (integration, ubuntu-latest, 3.10) (push) Has been cancelled
Python - Merge - Tests / Python Tests - Azure AI (integration, ubuntu-latest, 3.10) (push) Has been cancelled
Python - Merge - Tests / python-integration-tests-check (push) Has been cancelled
Python - Lab Tests / paths-filter (push) Has been cancelled
Python - Lab Tests / Python Lab Tests (ubuntu-latest, 3.10) (push) Has been cancelled
Python - Lab Tests / Python Lab Tests (ubuntu-latest, 3.11) (push) Has been cancelled
Python - Lab Tests / Python Lab Tests (ubuntu-latest, 3.12) (push) Has been cancelled
Python - Lab Tests / Python Lab Tests (ubuntu-latest, 3.13) (push) Has been cancelled
Python - Lab Tests / Python Lab Tests (ubuntu-latest, 3.14) (push) Has been cancelled
Python - Lab Tests / Python Lab Tests (windows-latest, 3.10) (push) Has been cancelled
Python - Lab Tests / Python Lab Tests (windows-latest, 3.11) (push) Has been cancelled
Python - Lab Tests / Python Lab Tests (windows-latest, 3.12) (push) Has been cancelled
Python - Lab Tests / Python Lab Tests (windows-latest, 3.13) (push) Has been cancelled
Python - Lab Tests / Python Lab Tests (windows-latest, 3.14) (push) Has been cancelled
Check .md links / markdown-link-check (push) Has been cancelled
test
2026-01-24 03:05:12 +11:00

141 lines
4.5 KiB
C#

// Copyright (c) Microsoft. All rights reserved.
using Microsoft.Agents.AI.Workflows.Declarative.CodeGen;
using Microsoft.Agents.AI.Workflows.Declarative.Kit;
using Microsoft.Bot.ObjectModel;
using Xunit.Abstractions;
namespace Microsoft.Agents.AI.Workflows.Declarative.UnitTests.CodeGen;
public class InvokeAzureAgentTemplateTest(ITestOutputHelper output) : WorkflowActionTemplateTest(output)
{
[Fact]
public void LiteralConversation()
{
// Act, Assert
this.ExecuteTest(
nameof(LiteralConversation),
StringExpression.Literal("asst_123abc"),
StringExpression.Literal("conv_123abc"),
messagesVariable: null);
}
[Fact]
public void VariableConversation()
{
// Act, Assert
this.ExecuteTest(
nameof(VariableConversation),
StringExpression.Variable(PropertyPath.GlobalVariable("TestAgent")),
StringExpression.Variable(PropertyPath.TopicVariable("TestConversation")),
"MyMessages",
BoolExpression.Literal(true));
}
[Fact]
public void ExpressionAutosend()
{
// Act, Assert
this.ExecuteTest(
nameof(VariableConversation),
StringExpression.Literal("asst_123abc"),
StringExpression.Variable(PropertyPath.TopicVariable("TestConversation")),
"MyMessages",
BoolExpression.Expression("1 < 2"));
}
[Fact]
public void InputMessagesVariable()
{
// Act, Assert
this.ExecuteTest(
nameof(VariableConversation),
StringExpression.Literal("asst_123abc"),
StringExpression.Variable(PropertyPath.TopicVariable("TestConversation")),
"MyMessages",
messages: ValueExpression.Variable(PropertyPath.TopicVariable("TestConversation")));
}
[Fact]
public void InputMessagesExpression()
{
// Act, Assert
this.ExecuteTest(
nameof(VariableConversation),
StringExpression.Literal("asst_123abc"),
StringExpression.Literal("conv_123abc"),
"MyMessages",
messages: ValueExpression.Expression("[UserMessage(System.LastMessageText)]"));
}
private void ExecuteTest(
string displayName,
StringExpression.Builder agentName,
StringExpression.Builder conversation,
string? messagesVariable = null,
BoolExpression.Builder? autoSend = null,
ValueExpression.Builder? messages = null)
{
// Arrange
InvokeAzureAgent model =
this.CreateModel(
displayName,
agentName,
conversation,
messagesVariable,
autoSend,
messages);
// Act
InvokeAzureAgentTemplate template = new(model);
string workflowCode = template.TransformText();
this.Output.WriteLine(workflowCode.Trim());
// Assert
AssertGeneratedCode<AgentExecutor>(template.Id, workflowCode);
AssertAgentProvider(template.UseAgentProvider, workflowCode);
AssertOptionalAssignment(model.Output?.Messages?.Path, workflowCode);
}
private InvokeAzureAgent CreateModel(
string displayName,
StringExpression.Builder agentName,
StringExpression.Builder conversation,
string? messagesVariable = null,
BoolExpression.Builder? autoSend = null,
ValueExpression.Builder? messages = null)
{
InitializablePropertyPath? outputMessages = null;
if (messagesVariable is not null)
{
outputMessages = PropertyPath.Create(FormatVariablePath(messagesVariable));
}
InvokeAzureAgent.Builder actionBuilder =
new()
{
Id = this.CreateActionId("invoke_agent"),
DisplayName = this.FormatDisplayName(displayName),
ConversationId = conversation,
Agent =
new AzureAgentUsage.Builder
{
Name = agentName,
},
Input =
new AzureAgentInput.Builder
{
Messages = messages,
},
Output =
new AzureAgentOutput.Builder
{
AutoSend = autoSend,
Messages = outputMessages,
},
};
return actionBuilder.Build();
}
}