35 lines
1.0 KiB
C#
35 lines
1.0 KiB
C#
using System.Linq;
|
|
using StellaOps.Graph.Api.Services;
|
|
using Xunit;
|
|
|
|
namespace StellaOps.Graph.Api.Tests;
|
|
|
|
public class AuditLoggerTests
|
|
{
|
|
[Trait("Category", TestCategories.Unit)]
|
|
[Fact]
|
|
public void LogsAndCapsSize()
|
|
{
|
|
var logger = new InMemoryAuditLogger();
|
|
for (var i = 0; i < 510; i++)
|
|
{
|
|
logger.Log(new AuditEvent(
|
|
Timestamp: DateTimeOffset.UnixEpoch.AddMinutes(i),
|
|
Tenant: "t",
|
|
Route: "/r",
|
|
Method: "POST",
|
|
Actor: "auth",
|
|
Scopes: new[] { "graph:query" },
|
|
StatusCode: 200,
|
|
DurationMs: 5));
|
|
}
|
|
|
|
var recent = logger.GetRecent();
|
|
Assert.True(recent.Count <= 100);
|
|
// First entry is the most recent (minute 509). Verify using total minutes from epoch.
|
|
var minutesFromEpoch = (int)(recent.First().Timestamp - DateTimeOffset.UnixEpoch).TotalMinutes;
|
|
using StellaOps.TestKit;
|
|
Assert.Equal(509, minutesFromEpoch);
|
|
}
|
|
}
|