Files
natsdotnet/tests/NATS.Server.Tests/JetStreamStreamConfigBehaviorTests.cs
2026-02-23 12:11:19 -05:00

42 lines
1.4 KiB
C#

using NATS.Server.JetStream.Models;
using NATS.Server.JetStream;
using NATS.Server.JetStream.Publish;
namespace NATS.Server.Tests;
public class JetStreamStreamConfigBehaviorTests
{
[Fact]
public void Stream_honors_dedup_window_and_sealed_delete_purge_guards()
{
var streamManager = new StreamManager();
streamManager.CreateOrUpdate(new StreamConfig
{
Name = "ORDERS",
Subjects = ["orders.*"],
DuplicateWindowMs = 10_000,
Sealed = false,
DenyDelete = false,
DenyPurge = false,
});
var publisher = new JetStreamPublisher(streamManager);
publisher.TryCaptureWithOptions("orders.created", "one"u8.ToArray(), new PublishOptions { MsgId = "m-1" }, out var first).ShouldBeTrue();
publisher.TryCaptureWithOptions("orders.created", "two"u8.ToArray(), new PublishOptions { MsgId = "m-1" }, out var second).ShouldBeTrue();
second.Seq.ShouldBe(first.Seq);
streamManager.CreateOrUpdate(new StreamConfig
{
Name = "ORDERS",
Subjects = ["orders.*"],
DuplicateWindowMs = 10_000,
Sealed = true,
DenyDelete = true,
DenyPurge = true,
});
streamManager.DeleteMessage("ORDERS", first.Seq).ShouldBeFalse();
streamManager.Purge("ORDERS").ShouldBeFalse();
}
}