Initial commit: Nexus Mission Control Platform
- ASP.NET Core 10 Backend (JWT Auth, Agent config API) - Vue 3 Frontend (Dashboard, Team, Agents, Config Editor) - PostgreSQL Database - Docker Compose setup - Mission Control Dashboard redesign
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
using Nexus.Api.Services;
|
||||
using Nexus.Api.Integrations;
|
||||
using Nexus.Api.Domain;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Xunit;
|
||||
|
||||
namespace Nexus.Api.Tests;
|
||||
|
||||
public class AgentServiceTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task GetAgentsAsync_ReturnsCorrectCount()
|
||||
{
|
||||
var config = new ConfigurationBuilder()
|
||||
.AddInMemoryCollection(new Dictionary<string, string?>
|
||||
{
|
||||
["AgentConfigPath"] = "/home/node/.openclaw/openclaw.json"
|
||||
})
|
||||
.Build();
|
||||
var runtime = new FakeRuntime();
|
||||
var service = new AgentService(config, runtime);
|
||||
|
||||
var agents = await service.GetAgentsAsync(CancellationToken.None);
|
||||
Assert.True(agents.Count >= 4, $"Expected at least 4 agents, got {agents.Count}");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetAgentAsync_Iris_ReturnsOrchestrator()
|
||||
{
|
||||
var config = new ConfigurationBuilder()
|
||||
.AddInMemoryCollection(new Dictionary<string, string?>
|
||||
{
|
||||
["AgentConfigPath"] = "/home/node/.openclaw/openclaw.json"
|
||||
})
|
||||
.Build();
|
||||
var runtime = new FakeRuntime();
|
||||
var service = new AgentService(config, runtime);
|
||||
|
||||
var agent = await service.GetAgentAsync("iris", CancellationToken.None);
|
||||
Assert.NotNull(agent);
|
||||
Assert.Equal("Orchestrator", agent.Role);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task GetAgentAsync_Unknown_ReturnsNull()
|
||||
{
|
||||
var config = new ConfigurationBuilder()
|
||||
.AddInMemoryCollection(new Dictionary<string, string?>
|
||||
{
|
||||
["AgentConfigPath"] = "/home/node/.openclaw/openclaw.json"
|
||||
})
|
||||
.Build();
|
||||
var runtime = new FakeRuntime();
|
||||
var service = new AgentService(config, runtime);
|
||||
|
||||
var agent = await service.GetAgentAsync("nonexistent", CancellationToken.None);
|
||||
Assert.Null(agent);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class FakeRuntime : IAgentRuntime
|
||||
{
|
||||
public string Name => "FakeRuntime";
|
||||
|
||||
public Task<AgentRuntimeStatus> GetStatusAsync(CancellationToken cancellationToken = default)
|
||||
=> Task.FromResult(new AgentRuntimeStatus(
|
||||
Runtime: "OpenClaw",
|
||||
Status: OperationalStatus.Online,
|
||||
Latency: TimeSpan.FromMilliseconds(10),
|
||||
Detail: "Fake runtime for testing"));
|
||||
|
||||
public Task<AgentChatResult> ChatAsync(string message, string conversationId, string agentId, CancellationToken cancellationToken = default)
|
||||
=> Task.FromResult(new AgentChatResult(
|
||||
Runtime: "OpenClaw",
|
||||
AgentId: agentId,
|
||||
ConversationId: conversationId,
|
||||
Content: "Echo: " + message));
|
||||
}
|
||||
Reference in New Issue
Block a user