Fix tests

This commit is contained in:
Cooldude2606 committed 2026-07-25 15:23:34 +01:00
1 parent cc92e851ad
commit 9fe1819ea5
2 files changed
+92 -66

No files matched your search

+27
View File
@@ -16,6 +16,33 @@ describe("lib/data/messages_core", function() {
const instanceBr = new Address(Address.broadcast, Address.instance);
const controlBr = new Address(Address.broadcast, Address.control);
describe(".withoutRequestId()", () => {
it("returns the same instance when requestId is undefined", () => {
const address = new Address(1, 2);
assert.strictEqual(address.withoutRequestId(), address);
});
it("returns a new instance when requestId is present", () => {
const address = new Address(1, 2, 123);
const result = address.withoutRequestId();
assert.notStrictEqual(result, address);
assert.deepEqual(result, new Address(1, 2));
});
it("does not modify the original address", () => {
const address = new Address(1, 2, 123);
address.withoutRequestId();
assert.equal(address.type, 1);
assert.equal(address.id, 2);
assert.equal(address.requestId, 123);
});
});
it("Should correctly resolve addressedTo", function() {
assert(controller.addressedTo(controller));
assert(!controller.addressedTo(host1));
+65 -66
View File
@@ -520,72 +520,6 @@ describe("lib/subscriptions", function() {
});
});
describe("subscriber addressing", function() {
// A subscribe arrives as a request, so the source address it is
// handled with carries the request id used to route the response
// back to the caller. That id identifies one request in flight and
// means nothing on an event, see #847. These use a controller of
// their own because a subscription is only ever addressed when it
// is first created, and the shared one is already subscribed.
const connectorData = connectorSetupDate[0];
function requestSource(requestId) {
return new lib.Address(connectorData.dst.type, connectorData.dst.id, requestId);
}
function lastSentMessage() {
return getLink(connectorData.id).connector.sentMessages.at(-1);
}
it("should strip the request id from broadcast events", async function() {
const ownSubscriptions = new lib.SubscriptionController(mockController);
ownSubscriptions.handle(RegisteredEvent);
await ownSubscriptions.handleRequest(
getLink(connectorData.id),
new lib.SubscriptionRequest(RegisteredEvent.name, "subscribe"),
requestSource(213), connectorData.src
);
ownSubscriptions.broadcast(new RegisteredEvent());
await onceConnectorSend(connectorData.id);
assert.equal(lastSentMessage().name, RegisteredEvent.name);
assert.equal(lastSentMessage().dst.requestId, undefined, "event addressed to a request id");
assert.deepEqual(lastSentMessage().dst.toJSON(), connectorData.dst.toJSON());
});
it("should strip the request id from the replayed event", async function() {
const ownSubscriptions = new lib.SubscriptionController(mockController);
ownSubscriptions.handle(RegisteredEvent, async () => new RegisteredEvent());
await ownSubscriptions.handleRequest(
getLink(connectorData.id),
new lib.SubscriptionRequest(RegisteredEvent.name, "subscribe"),
requestSource(417), connectorData.src
);
assert.equal(lastSentMessage().name, RegisteredEvent.name);
assert.equal(lastSentMessage().dst.requestId, undefined, "replay addressed to a request id");
assert.deepEqual(lastSentMessage().dst.toJSON(), connectorData.dst.toJSON());
});
it("should strip the request id when replacing filters creates the subscription", async function() {
const ownSubscriptions = new lib.SubscriptionController(mockController);
ownSubscriptions.handle(RegisteredEvent);
await ownSubscriptions.handleRequest(
getLink(connectorData.id),
new lib.SubscriptionRequest(RegisteredEvent.name, "replace", 0, "foo"),
requestSource(918), connectorData.src
);
ownSubscriptions.broadcast(new RegisteredEvent(), "foo");
await onceConnectorSend(connectorData.id);
assert.equal(lastSentMessage().name, RegisteredEvent.name);
assert.equal(lastSentMessage().dst.requestId, undefined, "event addressed to a request id");
assert.deepEqual(lastSentMessage().dst.toJSON(), connectorData.dst.toJSON());
});
});
describe(".unsubscribeLink() / .unsubscribeAddress()", function() {
beforeEach(function() {
subscriptions.handle(RegisteredEvent);
@@ -680,6 +614,71 @@ describe("lib/subscriptions", function() {
), /unreachable case: invalid action/);
});
describe("addressing", function() {
// A subscribe arrives as a request, so the source address it is
// handled with carries the request id which should not be persisted
const connectorData = connectorSetupDate[0];
function requestSource(requestId) {
return new lib.Address(connectorData.dst.type, connectorData.dst.id, requestId);
}
function lastSentMessage() {
return getLink(connectorData.id).connector.sentMessages.at(-1);
}
it("should strip the request id from broadcast events", async function() {
const ownSubscriptions = new lib.SubscriptionController(mockController);
ownSubscriptions.handle(RegisteredEvent);
await ownSubscriptions.handleRequest(
getLink(connectorData.id),
new lib.SubscriptionRequest(RegisteredEvent.name, "subscribe"),
requestSource(213), connectorData.src
);
ownSubscriptions.broadcast(new RegisteredEvent());
await onceConnectorSend(connectorData.id);
const message = lastSentMessage();
assert.equal(message.name, RegisteredEvent.name);
assert.equal(message.dst.requestId, undefined, "event addressed to a request id");
assert.deepEqual(message.dst.toJSON(), connectorData.dst.toJSON());
});
it("should strip the request id from the replayed event", async function() {
const ownSubscriptions = new lib.SubscriptionController(mockController);
ownSubscriptions.handle(RegisteredEvent, async () => new RegisteredEvent());
await ownSubscriptions.handleRequest(
getLink(connectorData.id),
new lib.SubscriptionRequest(RegisteredEvent.name, "subscribe"),
requestSource(417), connectorData.src
);
const message = lastSentMessage();
assert.equal(message.name, RegisteredEvent.name);
assert.equal(message.dst.requestId, undefined, "replay addressed to a request id");
assert.deepEqual(message.dst.toJSON(), connectorData.dst.toJSON());
});
it("should strip the request id when replacing filters creates the subscription", async function() {
const ownSubscriptions = new lib.SubscriptionController(mockController);
ownSubscriptions.handle(RegisteredEvent);
await ownSubscriptions.handleRequest(
getLink(connectorData.id),
new lib.SubscriptionRequest(RegisteredEvent.name, "replace", 0, "foo"),
requestSource(918), connectorData.src
);
ownSubscriptions.broadcast(new RegisteredEvent(), "foo");
await onceConnectorSend(connectorData.id);
const message = lastSentMessage();
assert.equal(message.name, RegisteredEvent.name);
assert.equal(message.dst.requestId, undefined, "event addressed to a request id");
assert.deepEqual(message.dst.toJSON(), connectorData.dst.toJSON());
});
});
describe("subscribe", function() {
it("should create a new subscription", async function() {
const request = new lib.SubscriptionRequest(RegisteredEvent.name, "subscribe");