test(batch28): port jetstream api object-shape and delayed-response tests
This commit is contained in:
@@ -6,6 +6,71 @@ namespace ZB.MOM.NatsNet.Server.Tests.ImplBacklog;
|
|||||||
|
|
||||||
public sealed class JetStreamEngineTests
|
public sealed class JetStreamEngineTests
|
||||||
{
|
{
|
||||||
|
[Fact] // T:1716
|
||||||
|
public void IsJSONObjectOrArray_ShouldSucceed()
|
||||||
|
{
|
||||||
|
var tests = new (string Name, byte[] Data, bool Valid)[]
|
||||||
|
{
|
||||||
|
("empty", [], false),
|
||||||
|
("empty_object", "{}"u8.ToArray(), true),
|
||||||
|
("empty object, not trimmed", "\t\n\r{ }"u8.ToArray(), true),
|
||||||
|
("empty_array", "[]"u8.ToArray(), true),
|
||||||
|
("empty array, not trimmed", "\t\n\r[ ]"u8.ToArray(), true),
|
||||||
|
("empty_string", "\"\""u8.ToArray(), false),
|
||||||
|
("whitespace_only", " "u8.ToArray(), false),
|
||||||
|
("object_with_whitespace", "{ }"u8.ToArray(), true),
|
||||||
|
("array_with_whitespace", "[ ]"u8.ToArray(), true),
|
||||||
|
("string_with_whitespace", " \"text\""u8.ToArray(), false),
|
||||||
|
("number", "123"u8.ToArray(), false),
|
||||||
|
("boolean_true", "true"u8.ToArray(), false),
|
||||||
|
("boolean_false", "false"u8.ToArray(), false),
|
||||||
|
("null_value", "null"u8.ToArray(), false),
|
||||||
|
("invalid_json", "invalid"u8.ToArray(), false),
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var test in tests)
|
||||||
|
{
|
||||||
|
JetStreamApi.IsJSONObjectOrArray(test.Data).ShouldBe(test.Valid, test.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact] // T:1719
|
||||||
|
public void JetStreamDelayedAPIResponses_ShouldSucceed()
|
||||||
|
{
|
||||||
|
var account = new Account { Name = "ACC" };
|
||||||
|
DelayedApiResponse? head = null;
|
||||||
|
DelayedApiResponse? tail = null;
|
||||||
|
var now = DateTime.UtcNow;
|
||||||
|
|
||||||
|
var responses = new[]
|
||||||
|
{
|
||||||
|
NewDelayed(account, "request2", "response2", now.AddMilliseconds(500)),
|
||||||
|
NewDelayed(account, "request1", "response1", now.AddMilliseconds(200)),
|
||||||
|
NewDelayed(account, "request4", "response4", now.AddMilliseconds(800)),
|
||||||
|
NewDelayed(account, "request3", "response3", now.AddMilliseconds(650)),
|
||||||
|
};
|
||||||
|
|
||||||
|
foreach (var response in responses)
|
||||||
|
JetStreamApi.AddDelayedResponse(ref head, ref tail, response);
|
||||||
|
|
||||||
|
var orderedRequests = new List<string>();
|
||||||
|
for (var current = head; current is not null; current = current.Next)
|
||||||
|
orderedRequests.Add(current.Request);
|
||||||
|
|
||||||
|
orderedRequests.ShouldBe(["request1", "request2", "request3", "request4"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static DelayedApiResponse NewDelayed(Account account, string request, string response, DateTime deadlineUtc) =>
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
Account = account,
|
||||||
|
Subject = "SUB",
|
||||||
|
Reply = string.Empty,
|
||||||
|
Request = request,
|
||||||
|
Response = response,
|
||||||
|
DeadlineUtc = deadlineUtc,
|
||||||
|
};
|
||||||
|
|
||||||
[Fact] // T:1477
|
[Fact] // T:1477
|
||||||
public void JetStreamMaxConsumers_ShouldSucceed()
|
public void JetStreamMaxConsumers_ShouldSucceed()
|
||||||
{
|
{
|
||||||
|
|||||||
BIN
porting.db
BIN
porting.db
Binary file not shown.
Reference in New Issue
Block a user