Files
nexus/backend-tests/OperationResultContractTests.cs
AzuTear f5552218bc
CI - Build & Test / Backend (.NET) (push) Successful in 42s
CI - Build & Test / Frontend (Vue/TS) (push) Successful in 2m46s
CI - Build & Test / Security Check (push) Successful in 3s
CI - Build & Test / Deploy Nexus (push) Successful in 56s
feat: ship agent-first mission control v0.2.57
2026-07-31 22:39:47 +02:00

58 lines
1.8 KiB
C#

using Microsoft.AspNetCore.Http;
using Nexus.Api.Models;
using Nexus.Api.Services;
using Xunit;
namespace Nexus.Api.Tests;
public sealed class OperationResultContractTests
{
[Fact]
public void FromHttpContext_UsesSafeCorrelationAndDeduplicatesAffectedRefs()
{
var context = new DefaultHttpContext
{
TraceIdentifier = "request-trace-1"
};
context.Request.Headers["X-Correlation-ID"] = "operation-42";
var primary = new EntityRefDto("task", "task-1", "Primary task");
var result = OperationResultFactory.FromHttpContext(
context,
"updated",
primary,
revision: 7,
affectedRefs:
[
primary,
new EntityRefDto("agent", "iris", "Iris"),
new EntityRefDto("agent", "iris", "Duplicate")
]);
Assert.Equal("operation-42", result.OperationId);
Assert.Equal("operation-42", context.Response.Headers["X-Correlation-ID"]);
Assert.Equal(7, result.Revision);
var affected = Assert.Single(result.AffectedRefs);
Assert.Equal("agent", affected.Type);
Assert.Equal("iris", affected.Id);
}
[Fact]
public void FromHttpContext_RejectsOversizedCallerCorrelation()
{
var context = new DefaultHttpContext
{
TraceIdentifier = "server-trace"
};
context.Request.Headers["X-Correlation-ID"] = new string('x', 129);
var result = OperationResultFactory.FromHttpContext(
context,
"completed",
new EntityRefDto("project", "project-1"));
Assert.Equal("server-trace", result.OperationId);
Assert.Equal("server-trace", context.Response.Headers["X-Correlation-ID"]);
}
}