Skip to content

Commit 8a9a28e

Browse files
JohnMcLearclaude
andcommitted
test: add regression test for deleteGroup after deleteSession (#5798)
Creates a group, author, and session, then deletes the session first, then deletes the group. Without the fix, deleteGroup would throw "sessionID does not exist" when encountering the null session entry. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
1 parent 20119d7 commit 8a9a28e

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

src/tests/backend/specs/api/sessionsAndGroups.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,54 @@ describe(__filename, function () {
421421
});
422422
});
423423
});
424+
// Regression test for https://github.com/ether/etherpad-lite/issues/5798
425+
describe('API: deleteGroup after deleteSession (bug #5798)', function () {
426+
let testGroupID: string;
427+
let testAuthorID: string;
428+
let testSessionID: string;
429+
430+
it('creates group, author, and session', async function () {
431+
let res = await preparedAgent.get(endPoint('createGroup'))
432+
.set("Authorization", await generateJWTToken())
433+
.expect(200);
434+
assert.equal(res.body.code, 0);
435+
testGroupID = res.body.data.groupID;
436+
437+
res = await preparedAgent.get(`${endPoint('createAuthor')}?name=testuser`)
438+
.set("Authorization", await generateJWTToken())
439+
.expect(200);
440+
assert.equal(res.body.code, 0);
441+
testAuthorID = res.body.data.authorID;
442+
443+
res = await preparedAgent.get(
444+
`${endPoint('createSession')}?authorID=${testAuthorID}&groupID=${testGroupID}` +
445+
'&validUntil=999999999999')
446+
.set("Authorization", await generateJWTToken())
447+
.expect(200);
448+
assert.equal(res.body.code, 0);
449+
testSessionID = res.body.data.sessionID;
450+
});
451+
452+
it('deleteSession succeeds', async function () {
453+
await preparedAgent.get(`${endPoint('deleteSession')}?sessionID=${testSessionID}`)
454+
.set("Authorization", await generateJWTToken())
455+
.expect(200)
456+
.expect((res: any) => {
457+
assert.equal(res.body.code, 0);
458+
});
459+
});
460+
461+
it('deleteGroup succeeds after session was already deleted', async function () {
462+
// This used to fail with "sessionID does not exist" because deleteSession
463+
// left a null entry in group2sessions that deleteGroup tried to re-delete.
464+
await preparedAgent.get(`${endPoint('deleteGroup')}?groupID=${testGroupID}`)
465+
.set("Authorization", await generateJWTToken())
466+
.expect(200)
467+
.expect((res: any) => {
468+
assert.equal(res.body.code, 0);
469+
});
470+
});
471+
});
424472
});
425473

426474
function makeid() {

0 commit comments

Comments
 (0)