fix Privilege check after bad merge

This commit is contained in:
evanpelle
2026-04-06 21:28:47 -07:00
parent 18da7134c8
commit ea7af50b25
2 changed files with 31 additions and 41 deletions
+2 -10
View File
@@ -123,16 +123,8 @@ function censorWithMatcher(
const clanTagIsProfane = clanTag
? matcher.hasMatch(clanTag) || clanTag.toLowerCase() === "ss"
: false;
const usernameIsProfane = matcher.hasMatch(nameWithoutClan);
const censoredName = usernameIsProfane
? shadowNames[simpleHash(nameWithoutClan) % shadowNames.length]
: nameWithoutClan;
// Restore clan tag only if it's clean, otherwise remove it entirely
if (clanTag && !clanTagIsProfane) {
return `[${clanTag.toUpperCase()}] ${censoredName}`;
}
const censoredClanTag =
clanTag && !clanTagIsProfane ? clanTag.toUpperCase() : null;
return { username: censoredName, clanTag: censoredClanTag };
}
+29 -31
View File
@@ -164,70 +164,68 @@ describe("UsernameCensor", () => {
describe("clan tag censoring", () => {
test("removes profane clan tag, keeps clean username", () => {
expect(checker.censorUsername("[NAZI]CoolPlayer")).toBe("CoolPlayer");
expect(checker.censorUsername("[ADOLF]CoolPlayer")).toBe("CoolPlayer");
expect(checker.censorUsername("[HEIL]CoolPlayer")).toBe("CoolPlayer");
expect(checker.censor("CoolPlayer", "NAZI").clanTag).toBeNull();
expect(checker.censor("CoolPlayer", "ADOLF").clanTag).toBeNull();
expect(checker.censor("CoolPlayer", "HEIL").clanTag).toBeNull();
});
test("removes clan tag that is a slur abbreviation", () => {
// [NIG] is caught as a standalone word by englishDataset's |nig| pattern
expect(checker.censorUsername("[NIG]CoolPlayer")).toBe("CoolPlayer");
expect(checker.censorUsername("[NIGG]CoolPlayer")).toBe("CoolPlayer");
expect(checker.censor("CoolPlayer", "NIG").clanTag).toBeNull();
expect(checker.censor("CoolPlayer", "NIGG").clanTag).toBeNull();
});
test("removes clan tag containing full slur (≤5 chars)", () => {
// Clan tags are capped at 5 chars — only slurs that fit are catchable this way
expect(checker.censorUsername("[NIGGA]CoolPlayer")).toBe("CoolPlayer");
expect(checker.censorUsername("[CHINK]CoolPlayer")).toBe("CoolPlayer");
expect(checker.censorUsername("[SPIC]CoolPlayer")).toBe("CoolPlayer");
expect(checker.censorUsername("[KIKE]CoolPlayer")).toBe("CoolPlayer");
expect(checker.censor("CoolPlayer", "NIGGA").clanTag).toBeNull();
expect(checker.censor("CoolPlayer", "CHINK").clanTag).toBeNull();
expect(checker.censor("CoolPlayer", "SPIC").clanTag).toBeNull();
expect(checker.censor("CoolPlayer", "KIKE").clanTag).toBeNull();
});
test("removes clan tag with leet speak profanity (≤5 chars)", () => {
expect(checker.censorUsername("[N4Z1]CoolPlayer")).toBe("CoolPlayer");
expect(checker.censor("CoolPlayer", "N4Z1").clanTag).toBeNull();
});
test("removes clan tag containing banned word as substring (≤5 chars)", () => {
expect(checker.censorUsername("[JEWS]CoolPlayer")).toBe("CoolPlayer");
expect(checker.censorUsername("[NAZI]CoolPlayer")).toBe("CoolPlayer");
expect(checker.censor("CoolPlayer", "JEWS").clanTag).toBeNull();
expect(checker.censor("CoolPlayer", "NAZI").clanTag).toBeNull();
});
test("removes [SS] clan tag", () => {
expect(checker.censorUsername("[SS]Player")).toBe("Player");
expect(checker.censorUsername("[ss]Player")).toBe("Player");
expect(checker.censor("Player", "SS").clanTag).toBeNull();
expect(checker.censor("Player", "ss").clanTag).toBeNull();
});
test("removes [KKK] clan tag", () => {
expect(checker.censorUsername("[KKK]Player")).toBe("Player");
expect(checker.censor("Player", "KKK").clanTag).toBeNull();
});
test("keeps clean clan tag when username is clean", () => {
expect(checker.censorUsername("[COOL]Player")).toBe("[COOL] Player");
expect(checker.censorUsername("[PRO]Player")).toBe("[PRO] Player");
expect(checker.censor("Player", "COOL").clanTag).toBe("COOL");
expect(checker.censor("Player", "PRO").clanTag).toBe("PRO");
});
test("keeps clean clan tag, censors profane username", () => {
const result = checker.censorUsername("[COOL]nigger");
expect(result).toMatch(/^\[COOL\] /);
expect(shadowNames).toContain(result.replace("[COOL] ", ""));
const result = checker.censor("nigger", "COOL");
expect(result.clanTag).toBe("COOL");
expect(shadowNames).toContain(result.username);
});
test("removes profane clan tag and censors profane username", () => {
const result = checker.censorUsername("[NAZI]hitler");
expect(shadowNames).toContain(result);
expect(result).not.toContain("[");
const result = checker.censor("hitler", "NAZI");
expect(result.clanTag).toBeNull();
expect(shadowNames).toContain(result.username);
});
test("removes profane clan tag and censors leet speak username", () => {
const result = checker.censorUsername("[N4Z1]h1tl3r");
expect(shadowNames).toContain(result);
expect(result).not.toContain("[");
const result = checker.censor("h1tl3r", "N4Z1");
expect(result.clanTag).toBeNull();
expect(shadowNames).toContain(result.username);
});
test("removes profane clan tag with slur, censors profane username", () => {
const result = checker.censorUsername("[NIG]nigger");
expect(shadowNames).toContain(result);
expect(result).not.toContain("[");
const result = checker.censor("nigger", "NIG");
expect(result.clanTag).toBeNull();
expect(shadowNames).toContain(result.username);
});
});