// expect(mentionsRes.mentions[0].score).toBe(1);
});
+test('Check that activity from another instance is sent to third instance', async () => {
+ // Alpha and gamma users follow beta community
+ let alphaFollow = await followBeta(alpha);
+ expect(alphaFollow.community_view.community.local).toBe(false);
+ expect(alphaFollow.community_view.community.name).toBe('main');
+
+ let gammaFollow = await followBeta(gamma);
+ expect(gammaFollow.community_view.community.local).toBe(false);
+ expect(gammaFollow.community_view.community.name).toBe('main');
+
+ // Create a post on beta
+ let betaPost = await createPost(beta, 2);
+ expect(betaPost.post_view.community.local).toBe(true);
+
+ // Make sure gamma and alpha see it
+ let gammaPost = (await resolvePost(gamma, betaPost.post_view.post)).post;
+ expect(gammaPost.post).toBeDefined();
+ let alphaPost = (await resolvePost(alpha, betaPost.post_view.post)).post;
+ expect(alphaPost.post).toBeDefined();
+
+ // The bug: gamma comments, and alpha should see it.
+ let commentContent = 'Comment from gamma';
+ let commentRes = await createComment(
+ gamma,
+ gammaPost.post.id,
+ undefined,
+ commentContent
+ );
+ expect(commentRes.comment_view.comment.content).toBe(commentContent);
+ expect(commentRes.comment_view.community.local).toBe(false);
+ expect(commentRes.comment_view.creator.local).toBe(true);
+ expect(commentRes.comment_view.counts.score).toBe(1);
+
+ // Make sure alpha sees it
+ let alphaPost2 = await getPost(alpha, alphaPost.post.id);
+ expect(alphaPost2.comments[0].comment.content).toBe(commentContent);
+ expect(alphaPost2.comments[0].community.local).toBe(false);
+ expect(alphaPost2.comments[0].creator.local).toBe(false);
+ expect(alphaPost2.comments[0].counts.score).toBe(1);
+ assertCommentFederation(alphaPost2.comments[0], commentRes.comment_view);
+
+ await unfollowRemotes(alpha);
+ await unfollowRemotes(gamma);
+});
+
test('Fetch in_reply_tos: A is unsubbed from B, B makes a post, and some embedded comments, A subs to B, B updates the lowest level comment, A fetches both the post and all the inreplyto comments for that post.', async () => {
// Unfollow all remote communities
let site = await unfollowRemotes(alpha);
expect(betaReport.resolved).toBe(false);
expect(betaReport.original_comment_text).toBe(alphaReport.original_comment_text);
expect(betaReport.reason).toBe(alphaReport.reason);
-});
\ No newline at end of file
+});
receive_group_inbox(activity.clone(), request, &context).await?;
- if let GroupInboxActivities::AnnouncableActivities(announcable) = activity {
- let community = extract_community(&announcable.cc(), &context, &mut 0).await?;
- if community.local {
- AnnounceActivity::send(announcable, &community, vec![], &context).await?;
- }
- }
Ok(HttpResponse::Ok().finish())
}
request: HttpRequest,
context: &LemmyContext,
) -> Result<HttpResponse, LemmyError> {
- receive_activity(request, activity.clone(), context).await
+ let res = receive_activity(request, activity.clone(), context).await;
+ if let GroupInboxActivities::AnnouncableActivities(announcable) = activity.clone() {
+ let community = extract_community(&announcable.cc(), context, &mut 0).await?;
+ if community.local {
+ AnnounceActivity::send(announcable, &community, vec![], context).await?;
+ }
+ }
+ res
}
/// Returns an empty followers collection, only populating the size (for privacy).