mirror of
https://github.com/wekan/wekan.git
synced 2026-11-05 09:40:20 -05:00
Tests: the Hall of Fame guards read a linked vulnerability name too.
hallOfFameProblemsCoverage and securityRegressionCoverage collected the names from <td valign="top"><b>Name</b></td>, so a name that was a link to its page was never seen. Now that every name is one, the match takes the link; the four it had missed - ImportPlacementBleed, SamlSubjectBleed, StampBleed and UploadBleed - are listed as guarded by the suites that name them, and the inventory count goes from 137 to 141. Thanks to xet7 !
This commit is contained in:
1 parent
8097935f5d
commit
43c4d41877
2 files changed
+12
-3
No files matched your search
@@ -124,7 +124,7 @@ const keyed = new Set([...catalog.matchAll(/bleed: '(\w+)'/g)].map(m => m[1]));
|
||||
const hallOfFameNames = () => {
|
||||
if (!HOF) return null;
|
||||
const html = fs.readFileSync(HOF, 'utf8');
|
||||
return [...new Set([...html.matchAll(/<td valign="top"><b>(\w*Bleed)<\/b><\/td>/gi)]
|
||||
return [...new Set([...html.matchAll(/<td valign="top"><b>(?:<a href="[a-z0-9]+\/">)?(\w*Bleed)(?:<\/a>)?<\/b><\/td>/gi)]
|
||||
.map(m => m[1]))].sort();
|
||||
};
|
||||
|
||||
|
||||
@@ -213,6 +213,12 @@ const GUARDED = {
|
||||
filenamebleed: ['tests/canaryCoverage.test.cjs', 'tests/fileNameBleedRename.test.cjs'],
|
||||
inputbleed: ['tests/canaryCoverage.test.cjs'],
|
||||
spacebleed: ['tests/canaryCoverage.test.cjs'],
|
||||
// Published with their names already linked, which the Hall of Fame match
|
||||
// did not read until every name was linked (2026-10-30).
|
||||
importplacementbleed: ['tests/importPlacementBleed.test.cjs', 'tests/playwright/specs/security-import-placement.e2e.js'],
|
||||
samlsubjectbleed: ['tests/samlIdentityBinding.test.cjs'],
|
||||
stampbleed: ['tests/stampBleed.test.cjs', 'tests/playwright/specs/upload-stamp-bleed.e2e.js'],
|
||||
uploadbleed: ['tests/uploadBleed.test.cjs', 'tests/playwright/specs/upload-stamp-bleed.e2e.js'],
|
||||
};
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
@@ -352,14 +358,17 @@ test('the whole published list is accounted for', () => {
|
||||
// 123 -> 124: EmailBleed, published since 2021 but missed by a case-sensitive
|
||||
// match of its "Emailbleed" spelling; guarded.
|
||||
// 124 -> 137: thirteen newly published 2026-10-02 names, all guarded.
|
||||
assert.strictEqual(total, 137, 'the Hall of Fame and this list disagree on how many there are');
|
||||
// 137 -> 141: ImportPlacementBleed, SamlSubjectBleed, StampBleed and
|
||||
// UploadBleed, published with linked names the match below did not read
|
||||
// until every Hall of Fame name became a link (2026-10-30); all guarded.
|
||||
assert.strictEqual(total, 141, 'the Hall of Fame and this list disagree on how many there are');
|
||||
});
|
||||
|
||||
test('the companion Hall of Fame names match the inventory when available', () => {
|
||||
if (!fs.existsSync(HOF)) return;
|
||||
const html = fs.readFileSync(HOF, 'utf8');
|
||||
const published = [...new Set(
|
||||
[...html.matchAll(/<td valign="top"><b>(\w*Bleed)<\/b><\/td>/gi)]
|
||||
[...html.matchAll(/<td valign="top"><b>(?:<a href="[a-z0-9]+\/">)?(\w*Bleed)(?:<\/a>)?<\/b><\/td>/gi)]
|
||||
.map(match => match[1].toLowerCase()),
|
||||
)].sort();
|
||||
const inventoried = [...Object.keys(GUARDED), ...Object.keys(RECORDED)].sort();
|
||||
|
||||
Reference in new issue
Block a user