X-Git-Url: http://these/git/?a=blobdiff_plain;f=api_tests%2Fsrc%2Fpost.spec.ts;h=3e834dbe4074eb82d1ffbeda4a42f14bb63bdfe7;hb=dd865c5af5c53601a13b9d64a874c43b5560c3b1;hp=b3b52ee0bef9c935dec6554ecd0ac806f338bd79;hpb=f1aef631492dc8821cc3a3da527c2734a3de53c5;p=lemmy.git diff --git a/api_tests/src/post.spec.ts b/api_tests/src/post.spec.ts index b3b52ee0..3e834dbe 100644 --- a/api_tests/src/post.spec.ts +++ b/api_tests/src/post.spec.ts @@ -27,6 +27,9 @@ import { reportPost, listPostReports, randomString, + registerUser, + API, + getSite } from './shared'; import { PostView, CommunityView } from 'lemmy-js-client'; @@ -297,29 +300,46 @@ test('A and G subscribe to B (center) A posts, it gets announced to G', async () }); test('Enforce site ban for federated user', async () => { - let alphaShortname = `@lemmy_alpha@lemmy-alpha:8541`; - let alphaPerson = (await resolvePerson(beta, alphaShortname)).person; + // create a test user + let alphaUserJwt = await registerUser(alpha); + expect(alphaUserJwt).toBeDefined(); + let alphaUser: API = { + client: alpha.client, + auth: alphaUserJwt.jwt, + }; + let alphaUserActorId = (await getSite(alphaUser)).my_user.local_user_view.person.actor_id; + expect(alphaUserActorId).toBeDefined(); + let alphaPerson = (await resolvePerson(alphaUser, alphaUserActorId)).person; expect(alphaPerson).toBeDefined(); - // ban alpha from beta site - let banAlpha = await banPersonFromSite(beta, alphaPerson.person.id, true); + // alpha makes post in beta community, it federates to beta instance + let postRes1 = await createPost(alphaUser, betaCommunity.community.id); + let searchBeta1 = await searchPostLocal(beta, postRes1.post_view.post); + expect(searchBeta1.posts[0]).toBeDefined(); + + // ban alpha from its instance + let banAlpha = await banPersonFromSite(alpha, alphaPerson.person.id, true, true); expect(banAlpha.banned).toBe(true); - // Alpha makes post on beta - let postRes = await createPost(alpha, betaCommunity.community.id); - expect(postRes.post_view.post).toBeDefined(); - expect(postRes.post_view.community.local).toBe(false); - expect(postRes.post_view.creator.local).toBe(true); - expect(postRes.post_view.counts.score).toBe(1); + // alpha ban should be federated to beta + let alphaUserOnBeta1 = await resolvePerson(beta, alphaUserActorId); + expect(alphaUserOnBeta1.person.person.banned).toBe(true); - // Make sure that post doesn't make it to beta - let searchBeta = await searchPostLocal(beta, postRes.post_view.post); - let betaPost = searchBeta.posts[0]; - expect(betaPost).toBeUndefined(); + // existing alpha post should be removed on beta + let searchBeta2 = await searchPostLocal(beta, postRes1.post_view.post); + expect(searchBeta2.posts[0]).toBeUndefined(); // Unban alpha - let unBanAlpha = await banPersonFromSite(beta, alphaPerson.person.id, false); + let unBanAlpha = await banPersonFromSite(alpha, alphaPerson.person.id, false, false); expect(unBanAlpha.banned).toBe(false); + + // alpha makes new post in beta community, it federates + let postRes2 = await createPost(alphaUser, betaCommunity.community.id); + let searchBeta3 = await searchPostLocal(beta, postRes2.post_view.post); + expect(searchBeta3.posts[0]).toBeDefined(); + + let alphaUserOnBeta2 = await resolvePerson(beta, alphaUserActorId) + expect(alphaUserOnBeta2.person.person.banned).toBe(false); }); test('Enforce community ban for federated user', async () => { @@ -327,33 +347,41 @@ test('Enforce community ban for federated user', async () => { let alphaPerson = (await resolvePerson(beta, alphaShortname)).person; expect(alphaPerson).toBeDefined(); - // ban alpha from beta site - await banPersonFromCommunity(beta, alphaPerson.person.id, 2, false); - let banAlpha = await banPersonFromCommunity(beta, alphaPerson.person.id, 2, true); + // make a post in beta, it goes through + let postRes1 = await createPost(alpha, betaCommunity.community.id); + let searchBeta1 = await searchPostLocal(beta, postRes1.post_view.post); + expect(searchBeta1.posts[0]).toBeDefined(); + + // ban alpha from beta community + let banAlpha = await banPersonFromCommunity(beta, alphaPerson.person.id, 2, true, true); expect(banAlpha.banned).toBe(true); + // ensure that the post by alpha got removed + let searchAlpha1 = await searchPostLocal(alpha, postRes1.post_view.post); + expect(searchAlpha1.posts[0]).toBeUndefined(); + // Alpha tries to make post on beta, but it fails because of ban - let postRes = await createPost(alpha, betaCommunity.community.id); - expect(postRes.post_view).toBeUndefined(); + let postRes2 = await createPost(alpha, betaCommunity.community.id); + expect(postRes2.post_view).toBeUndefined(); // Unban alpha let unBanAlpha = await banPersonFromCommunity( beta, alphaPerson.person.id, 2, + false, false ); expect(unBanAlpha.banned).toBe(false); - let postRes2 = await createPost(alpha, betaCommunity.community.id); - expect(postRes2.post_view.post).toBeDefined(); - expect(postRes2.post_view.community.local).toBe(false); - expect(postRes2.post_view.creator.local).toBe(true); - expect(postRes2.post_view.counts.score).toBe(1); + let postRes3 = await createPost(alpha, betaCommunity.community.id); + expect(postRes3.post_view.post).toBeDefined(); + expect(postRes3.post_view.community.local).toBe(false); + expect(postRes3.post_view.creator.local).toBe(true); + expect(postRes3.post_view.counts.score).toBe(1); // Make sure that post makes it to beta community - let searchBeta = await searchPostLocal(beta, postRes2.post_view.post); - let betaPost = searchBeta.posts[0]; - expect(betaPost).toBeDefined(); + let searchBeta2 = await searchPostLocal(beta, postRes3.post_view.post); + expect(searchBeta2.posts[0]).toBeDefined(); }); test('Report a post', async () => {