test: update activitypub._sent to save targets as well, updated tests to accommodate format change

This commit is contained in:
Julian Lam
2026-01-06 11:14:11 -05:00
parent 483ab08389
commit 41368ef83d
4 changed files with 71 additions and 73 deletions

View File

@@ -418,15 +418,15 @@ ActivityPub.send = async (type, id, targets, payload) => {
ActivityPub.helpers.log(`[activitypub/send] ${payload.id}`);
if (process.env.hasOwnProperty('CI')) {
ActivityPub._sent.set(payload.id, payload);
return;
}
if (!Array.isArray(targets)) {
targets = [targets];
}
if (process.env.hasOwnProperty('CI')) {
ActivityPub._sent.set(payload.id, { payload, targets });
return;
}
const inboxes = await ActivityPub.resolveInboxes(targets);
const actor = ActivityPub.helpers.resolveActor(type, id);

View File

@@ -364,8 +364,8 @@ describe('as:Group', () => {
assert.strictEqual(activitypub._sent.size, 1);
const activity = Array.from(activitypub._sent.values()).pop();
assert.strictEqual(activity.type, 'Follow');
assert.strictEqual(activity.object, cid);
assert.strictEqual(activity.payload.type, 'Follow');
assert.strictEqual(activity.payload.object, cid);
});
it('should send out a Follow activity when the watch state changes to "watching"', async () => {
@@ -374,9 +374,9 @@ describe('as:Group', () => {
assert.strictEqual(activitypub._sent.size, 1);
const activity = Array.from(activitypub._sent.values()).pop();
assert(activity && activity.object && typeof activity.object === 'string');
assert.strictEqual(activity.type, 'Follow');
assert.strictEqual(activity.object, cid);
assert(activity && activity.payload.object && typeof activity.payload.object === 'string');
assert.strictEqual(activity.payload.type, 'Follow');
assert.strictEqual(activity.payload.object, cid);
});
it('should not show up in the user\'s following list', async () => {
@@ -432,11 +432,11 @@ describe('as:Group', () => {
assert.strictEqual(activitypub._sent.size, 1);
const activity = Array.from(activitypub._sent.values()).pop();
assert(activity && activity.object && typeof activity.object === 'object');
assert.strictEqual(activity.type, 'Undo');
assert.strictEqual(activity.object.type, 'Follow');
assert.strictEqual(activity.object.actor, `${nconf.get('url')}/uid/${uid}`);
assert.strictEqual(activity.object.object, cid);
assert(activity && activity.payload && activity.payload.object && typeof activity.payload.object === 'object');
assert.strictEqual(activity.payload.type, 'Undo');
assert.strictEqual(activity.payload.object.type, 'Follow');
assert.strictEqual(activity.payload.object.actor, `${nconf.get('url')}/uid/${uid}`);
assert.strictEqual(activity.payload.object.object, cid);
});
});
});

View File

@@ -68,15 +68,15 @@ describe('FEPs', () => {
const test1 = activities.some((activity) => {
[, activity] = activity;
return activity.type === 'Announce' &&
activity.object && activity.object.type === 'Create' &&
activity.object.object && activity.object.object.type === 'Note';
return activity.payload.type === 'Announce' &&
activity.payload.object && activity.payload.object.type === 'Create' &&
activity.payload.object.object && activity.payload.object.object.type === 'Note';
});
const test2 = activities.some((activity) => {
[, activity] = activity;
return activity.type === 'Announce' &&
activity.object && activity.object.type === 'Note';
return activity.payload.type === 'Announce' &&
activity.payload.object && activity.payload.object.type === 'Note';
});
assert(test1 && test2);
@@ -92,9 +92,9 @@ describe('FEPs', () => {
assert(activities.some((activity) => {
[, activity] = activity;
return activity.type === 'Announce' &&
activity.object && activity.object.type === 'Create' &&
activity.object.object && activity.object.object.type === 'Note';
return activity.payload.type === 'Announce' &&
activity.payload.object && activity.payload.object.type === 'Create' &&
activity.payload.object.object && activity.payload.object.object.type === 'Note';
}));
});
@@ -108,7 +108,7 @@ describe('FEPs', () => {
assert(activities.every((activity) => {
[, activity] = activity;
if (activity.type === 'Announce' && activity.object && activity.object.type === 'Note') {
if (activity.payload.type === 'Announce' && activity.payload.object && activity.payload.object.type === 'Note') {
return false;
}
@@ -123,8 +123,8 @@ describe('FEPs', () => {
assert(activities.some((activity) => {
[, activity] = activity;
return activity.type === 'Announce' &&
activity.object && activity.object.type === 'Like';
return activity.payload.type === 'Announce' &&
activity.payload.object && activity.payload.object.type === 'Like';
}));
});
});
@@ -164,22 +164,20 @@ describe('FEPs', () => {
});
pid = id;
({ activity } = await helpers.mocks.create(note));
console.log('before inbox create', activitypub._sent);
await activitypub.inbox.create({ body: activity });
console.log('after inbox create', activitypub._sent);
const activities = Array.from(activitypub._sent);
const test1 = activities.some((activity) => {
[, activity] = activity;
return activity.type === 'Announce' &&
activity.object && activity.object.type === 'Create' &&
activity.object.object && activity.object.object.type === 'Note';
return activity.payload.type === 'Announce' &&
activity.payload.object && activity.payload.object.type === 'Create' &&
activity.payload.object.object && activity.payload.object.object.type === 'Note';
});
assert(test1);
const test2 = activities.some((activity) => {
[, activity] = activity;
return activity.type === 'Announce' &&
activity.object && activity.object.type === 'Note';
return activity.payload.type === 'Announce' &&
activity.payload.object && activity.payload.object.type === 'Note';
});
assert(test2);
});
@@ -197,9 +195,9 @@ describe('FEPs', () => {
assert(activities.some((activity) => {
[, activity] = activity;
return activity.type === 'Announce' &&
activity.object && activity.object.type === 'Create' &&
activity.object.object && activity.object.object.type === 'Note';
return activity.payload.type === 'Announce' &&
activity.payload.object && activity.payload.object.type === 'Create' &&
activity.payload.object.object && activity.payload.object.object.type === 'Note';
}));
});
@@ -214,8 +212,8 @@ describe('FEPs', () => {
const activities = Array.from(activitypub._sent);
assert(activities.some((activity) => {
[, activity] = activity;
return activity.type === 'Announce' &&
activity.object && activity.object.type === 'Like';
return activity.payload.type === 'Announce' &&
activity.payload.object && activity.payload.object.type === 'Like';
}));
});
});
@@ -240,8 +238,8 @@ describe('FEPs', () => {
const key = Array.from(activitypub._sent.keys())[0];
const activity = activitypub._sent.get(key);
assert(activity && activity.object && typeof activity.object === 'object');
assert.strictEqual(activity.object.id, `${nconf.get('url')}/post/${reply1Pid}`);
assert(activity && activity.payload && activity.payload.object && typeof activity.payload.object === 'object');
assert.strictEqual(activity.payload.object.id, `${nconf.get('url')}/post/${reply1Pid}`);
});
it('should be called when a post is moved to another topic', async () => {
@@ -268,11 +266,11 @@ describe('FEPs', () => {
const activities = Array.from(activitypub._sent.keys()).map(key => activitypub._sent.get(key));
const activity = activities.pop();
assert.strictEqual(activity.type, 'Announce');
assert(activity.object && activity.object.type);
assert.strictEqual(activity.object.type, 'Create');
assert(activity.object.object && activity.object.object.type);
assert.strictEqual(activity.object.object.type, 'Note');
assert.strictEqual(activity.payload.type, 'Announce');
assert(activity.payload.object && activity.payload.object.type);
assert.strictEqual(activity.payload.object.type, 'Create');
assert(activity.payload.object.object && activity.payload.object.object.type);
assert.strictEqual(activity.payload.object.object.type, 'Note');
});
});
});

View File

@@ -255,26 +255,26 @@ describe('Notes', () => {
});
it('should federate out a Create activity', () => {
assert(activity && activity.to);
assert.strictEqual(activity.type, 'Create');
assert(activity && activity.payload && activity.payload.to);
assert.strictEqual(activity.payload.type, 'Create');
});
it('should have the local category addressed', () => {
const addressees = new Set([
...(activity.to || []),
...(activity.cc || []),
...(activity.bcc || []),
...(activity.object.to || []),
...(activity.object.cc || []),
...(activity.object.bcc || []),
...(activity.payload.to || []),
...(activity.payload.cc || []),
...(activity.payload.bcc || []),
...(activity.payload.object.to || []),
...(activity.payload.object.cc || []),
...(activity.payload.object.bcc || []),
]);
assert(addressees.has(`${nconf.get('url')}/category/${cid}`));
});
it('should federate out an activity with object of type "Article"', () => {
assert(activity.object && activity.object.type);
assert.strictEqual(activity.object.type, 'Article');
assert(activity.payload.object && activity.payload.object.type);
assert.strictEqual(activity.payload.object.type, 'Article');
});
});
@@ -299,8 +299,8 @@ describe('Notes', () => {
});
it('should federate out an activity with object of type "Note"', () => {
assert(activity.object && activity.object.type);
assert.strictEqual(activity.object.type, 'Note');
assert(activity.payload && activity.payload.object && activity.payload.object.type);
assert.strictEqual(activity.payload.object.type, 'Note');
});
});
});
@@ -330,16 +330,16 @@ describe('Notes', () => {
const key = Array.from(activitypub._sent.keys())[0];
const activity = activitypub._sent.get(key);
assert(activity && activity.to);
assert.strictEqual(activity.type, 'Create');
assert(activity && activity.payload && activity.payload.to);
assert.strictEqual(activity.payload.type, 'Create');
const addressees = new Set([
...(activity.to || []),
...(activity.cc || []),
...(activity.bcc || []),
...(activity.object.to || []),
...(activity.object.cc || []),
...(activity.object.bcc || []),
...(activity.payload.to || []),
...(activity.payload.cc || []),
...(activity.payload.bcc || []),
...(activity.payload.object.to || []),
...(activity.payload.object.cc || []),
...(activity.payload.object.bcc || []),
]);
assert(addressees.has(cid));
@@ -366,16 +366,16 @@ describe('Notes', () => {
const key = Array.from(activitypub._sent.keys())[0];
const activity = activitypub._sent.get(key);
assert(activity && activity.to);
assert.strictEqual(activity.type, 'Create');
assert(activity && activity.payload && activity.payload.to);
assert.strictEqual(activity.payload.type, 'Create');
const addressees = new Set([
...(activity.to || []),
...(activity.cc || []),
...(activity.bcc || []),
...(activity.object.to || []),
...(activity.object.cc || []),
...(activity.object.bcc || []),
...(activity.payload.to || []),
...(activity.payload.cc || []),
...(activity.payload.bcc || []),
...(activity.payload.object.to || []),
...(activity.payload.object.cc || []),
...(activity.payload.object.bcc || []),
]);
assert(addressees.has(cid));