diff --git a/apps/meteor/tests/end-to-end/api/rooms.ts b/apps/meteor/tests/end-to-end/api/rooms.ts index 1acfebab2598..e513ebb4ee7b 100644 --- a/apps/meteor/tests/end-to-end/api/rooms.ts +++ b/apps/meteor/tests/end-to-end/api/rooms.ts @@ -4206,22 +4206,35 @@ describe('[Rooms]', () => { }); describe('/rooms.close', () => { - let room: IRoom; + let roomA: IRoom; + let roomB: IRoom; const roomName = `rooms.close.test.${Date.now()}`; + let memberA: TestUser; + let memberB: TestUser; + let nonMember: TestUser; + let nonMemberCredentials: Credentials; + + before(async () => { + memberA = await createUser(); + memberB = await createUser(); + nonMember = await createUser(); + nonMemberCredentials = await login(nonMember.username, password); + }); before(async () => { - room = (await createRoom({ type: 'c', name: roomName })).body.channel; + roomA = (await createRoom({ type: 'c', name: roomName, members: [memberA.username, memberB.username] })).body.channel; + roomB = (await createRoom({ type: 'd', username: memberB.username })).body.room; }); after(async () => { - await deleteRoom({ type: 'c', roomId: room._id }); + await deleteRoom({ type: 'c', roomId: roomA._id }); }); it('should close the room', (done) => { void request .post(api('rooms.close')) .set(credentials) - .send({ roomId: room._id }) + .send({ roomId: roomA._id }) .expect('Content-Type', 'application/json') .expect(200) .expect((res) => { @@ -4234,7 +4247,7 @@ describe('[Rooms]', () => { void request .post(api('rooms.close')) .set(credentials) - .send({ roomId: room._id }) + .send({ roomId: roomA._id }) .expect('Content-Type', 'application/json') .expect(400) .expect((res) => { @@ -4244,8 +4257,8 @@ describe('[Rooms]', () => { .end(done); }); - it('should fail if roomId is not provided', async () => { - await request + it('should fail if roomId is not provided', (done) => { + void request .post(api('rooms.close')) .set(credentials) .send() @@ -4253,7 +4266,47 @@ describe('[Rooms]', () => { .expect(400) .expect((res: Response) => { expect(res.body).to.have.property('success', false); - }); + }) + .end(done); + }); + + it('should return 401 if user is not logged in', (done) => { + void request + .post(api('rooms.close')) + .expect('Content-Type', 'application/json') + .expect(401) + .expect((res) => { + expect(res.body).to.have.property('status', 'error'); + expect(res.body).to.have.property('message'); + }) + .end(done); + }); + + it('should fail if user not subscribed to the room', (done) => { + void request + .post(api('rooms.close')) + .set(nonMemberCredentials) + .send({ roomId: roomA._id }) + .expect('Content-Type', 'application/json') + .expect(400) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'The user is not subscribed to the room'); + }) + .end(done); + }); + + it('should return forbidden if user does not have access to the room', (done) => { + void request + .post(api('rooms.close')) + .set(nonMemberCredentials) + .send({ roomId: roomB._id }) + .expect('Content-Type', 'application/json') + .expect(403) + .expect((res) => { + expect(res.body).to.have.property('success', false); + }) + .end(done); }); }); });