+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;
+ if (!gammaPost) {
+ throw "Missing gamma post";
+ }
+ expect(gammaPost.post).toBeDefined();
+
+ let alphaPost = (await resolvePost(alpha, betaPost.post_view.post)).post;
+ if (!alphaPost) {
+ throw "Missing alpha 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 alphaPostComments2 = await getComments(alpha, alphaPost.post.id);
+ expect(alphaPostComments2.comments[0].comment.content).toBe(commentContent);
+ expect(alphaPostComments2.comments[0].community.local).toBe(false);
+ expect(alphaPostComments2.comments[0].creator.local).toBe(false);
+ expect(alphaPostComments2.comments[0].counts.score).toBe(1);
+ assertCommentFederation(
+ alphaPostComments2.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 () => {