diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml index c4f8618bcba..10562bd52af 100644 --- a/.github/workflows/backend-tests.yml +++ b/.github/workflows/backend-tests.yml @@ -146,7 +146,7 @@ jobs: ep_hash_auth ep_headings2 ep_markdown - ep_readonly_guest + ep_guest ep_set_title_on_pad ep_spellcheck ep_subscript_and_superscript @@ -289,7 +289,7 @@ jobs: ep_hash_auth ep_headings2 ep_markdown - ep_readonly_guest + ep_guest ep_set_title_on_pad ep_spellcheck ep_subscript_and_superscript diff --git a/.github/workflows/frontend-tests.yml b/.github/workflows/frontend-tests.yml index 81029f00cb2..19fa6da3f03 100644 --- a/.github/workflows/frontend-tests.yml +++ b/.github/workflows/frontend-tests.yml @@ -219,7 +219,7 @@ jobs: ep_hash_auth ep_headings2 ep_markdown - ep_readonly_guest + ep_guest ep_set_title_on_pad ep_spellcheck ep_subscript_and_superscript @@ -308,7 +308,7 @@ jobs: ep_hash_auth ep_headings2 ep_markdown - ep_readonly_guest + ep_guest ep_set_title_on_pad ep_spellcheck ep_subscript_and_superscript diff --git a/.github/workflows/load-test.yml b/.github/workflows/load-test.yml index 29311e09386..8b1b3f3f8f0 100644 --- a/.github/workflows/load-test.yml +++ b/.github/workflows/load-test.yml @@ -93,7 +93,7 @@ jobs: ep_hash_auth ep_headings2 ep_markdown - ep_readonly_guest + ep_guest ep_set_title_on_pad ep_spellcheck ep_subscript_and_superscript diff --git a/.github/workflows/upgrade-from-latest-release.yml b/.github/workflows/upgrade-from-latest-release.yml index 432e94db7b6..c3ef545f519 100644 --- a/.github/workflows/upgrade-from-latest-release.yml +++ b/.github/workflows/upgrade-from-latest-release.yml @@ -76,7 +76,7 @@ jobs: ep_hash_auth ep_headings2 ep_markdown - ep_readonly_guest + ep_guest ep_set_title_on_pad ep_spellcheck ep_subscript_and_superscript diff --git a/src/tests/backend/specs/admin/anonymizeAuthorSocket.ts b/src/tests/backend/specs/admin/anonymizeAuthorSocket.ts index a0de7349527..25f9f32ebf2 100644 --- a/src/tests/backend/specs/admin/anonymizeAuthorSocket.ts +++ b/src/tests/backend/specs/admin/anonymizeAuthorSocket.ts @@ -62,17 +62,21 @@ const ask = (socket: any, evt: string, payload: any, replyEvt: string) => }); // adminSocket() depends on Etherpad's default plain-text password check for -// settings.users[name].password. Plugins like ep_hash_auth replace the -// authenticate hook to expect hashed credentials, so the basic-auth probe -// returns no admin session, /settings's connection handler returns without +// settings.users[name].password. Any authenticate-hook plugin that claims +// the request before the built-in basic-auth fallback can block this: +// the historical offender was ep_readonly_guest, whose authenticate hook +// sorts itself first and silently swaps req.session.user with a guest +// (#7795); ep_hash_auth-style plugins that expect hashed credentials +// would do the same. When that happens the basic-auth probe returns no +// admin session, /settings's connection handler returns without // registering listeners (see src/node/hooks/express/adminsettings.ts:25), // and every socket.emit() afterwards waits forever for a reply that // nothing will ever send. The socket itself still connects when admin // session is missing, so the probe has to run at the application layer: -// emit a known `/settings` event (`load`) and wait for the matching reply -// (`settings`). If it doesn't arrive within the budget, skip — much -// cheaper than letting mocha's 120s per-test timeout absorb 7 stalled -// tests. Tracked in #7795. +// emit a known `/settings` event (`authorLoad`) and wait for the matching +// reply (`results:authorLoad`). If it doesn't arrive within the budget, +// skip — much cheaper than letting mocha's 120s per-test timeout absorb +// 7 stalled tests. const PROBE_BUDGET_MS = 15000; const adminSocketWithProbe = async (budgetMs: number): Promise<{ ok: true; socket: any; @@ -135,8 +139,9 @@ describe(__filename, function () { if (!probe.ok) { console.warn( `[anonymizeAuthorSocket] admin socket probe failed (${probe.reason}); ` + - 'skipping suite — likely an authenticate-hook plugin (e.g. ep_hash_auth) ' + - 'rejecting the test\'s plain-text admin credentials. Tracked in #7795.'); + 'skipping suite — an authenticate-hook plugin (e.g. ep_readonly_guest, ' + + 'or an ep_hash_auth-style plugin requiring hashed credentials) is ' + + 'rejecting the test\'s plain-text admin credentials.'); this.skip(); return; }