mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-09 21:17:15 +03:00
everything after postClearCache
This commit is contained in:
@@ -3,8 +3,16 @@ import {db} from "../../src/databases/databases";
|
||||
import {Done, getbaseURL} from "../utils";
|
||||
import {getHash} from "../../src/utils/getHash";
|
||||
import assert from "assert";
|
||||
import { Category } from "../../src/types/segments.model";
|
||||
|
||||
describe("shadowBanUser", () => {
|
||||
const endpoint = `${getbaseURL()}/api/shadowBanUser`;
|
||||
const getShadowBan = (userID: string) => db.prepare("get", `SELECT * FROM "shadowBannedUsers" WHERE "userID" = ?`, [userID]);
|
||||
const getShadowBanSegments = (userID: string, status: number) => db.prepare("all", `SELECT "shadowHidden" FROM "sponsorTimes" WHERE "userID" = ? AND "shadowHidden" = ?`, [userID, status]);
|
||||
const getShadowBanSegmentCategory = (userID: string, status: number): Promise<{shadowHidden: number, category: Category}[]> => db.prepare("all", `SELECT "shadowHidden", "category" FROM "sponsorTimes" WHERE "userID" = ? AND "shadowHidden" = ?`, [userID, status]);
|
||||
|
||||
const VIPuserID = "shadow-ban-vip";
|
||||
|
||||
before(async () => {
|
||||
const insertQuery = `INSERT INTO "sponsorTimes" ("videoID", "startTime", "endTime", "votes", "locked", "UUID", "userID", "timeSubmitted", "views", "category", "service", "videoDuration", "hidden", "shadowHidden", "hashedVideoID") VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
|
||||
await db.prepare("run", insertQuery, ["testtesttest", 1, 11, 2, 0, "shadow-1-uuid-0", "shadowBanned", 0, 50, "sponsor", "YouTube", 100, 0, 0, getHash("testtesttest", 1)]);
|
||||
@@ -24,19 +32,18 @@ describe("shadowBanUser", () => {
|
||||
await db.prepare("run", `INSERT INTO "shadowBannedUsers" ("userID") VALUES(?)`, ["shadowBanned3"]);
|
||||
await db.prepare("run", `INSERT INTO "shadowBannedUsers" ("userID") VALUES(?)`, ["shadowBanned4"]);
|
||||
|
||||
await db.prepare("run", `INSERT INTO "vipUsers" ("userID") VALUES(?)`, [getHash("shadow-ban-vip")]);
|
||||
await db.prepare("run", `INSERT INTO "vipUsers" ("userID") VALUES(?)`, [getHash(VIPuserID)]);
|
||||
});
|
||||
|
||||
|
||||
it("Should be able to ban user and hide submissions", (done: Done) => {
|
||||
fetch(`${getbaseURL()
|
||||
}/api/shadowBanUser?userID=shadowBanned&adminUserID=shadow-ban-vip`, {
|
||||
const userID = "shadowBanned";
|
||||
fetch(`${endpoint}?userID=${userID}&adminUserID=${VIPuserID}`, {
|
||||
method: "POST"
|
||||
})
|
||||
.then(async res => {
|
||||
assert.strictEqual(res.status, 200);
|
||||
const videoRow = await db.prepare("all", `SELECT "shadowHidden" FROM "sponsorTimes" WHERE "userID" = ? AND "shadowHidden" = ?`, ["shadowBanned", 1]);
|
||||
const shadowRow = await db.prepare("get", `SELECT * FROM "shadowBannedUsers" WHERE "userID" = ?`, ["shadowBanned"]);
|
||||
const videoRow = await getShadowBanSegments(userID, 1);
|
||||
const shadowRow = await getShadowBan(userID);
|
||||
assert.ok(shadowRow);
|
||||
assert.strictEqual(videoRow.length, 3);
|
||||
done();
|
||||
@@ -45,14 +52,14 @@ describe("shadowBanUser", () => {
|
||||
});
|
||||
|
||||
it("Should be able to unban user without unhiding submissions", (done: Done) => {
|
||||
fetch(`${getbaseURL()
|
||||
}/api/shadowBanUser?userID=shadowBanned&adminUserID=shadow-ban-vip&enabled=false&unHideOldSubmissions=false`, {
|
||||
const userID = "shadowBanned";
|
||||
fetch(`${endpoint}?userID=${userID}&adminUserID=${VIPuserID}&enabled=false&unHideOldSubmissions=false`, {
|
||||
method: "POST"
|
||||
})
|
||||
.then(async res => {
|
||||
assert.strictEqual(res.status, 200);
|
||||
const videoRow = await db.prepare("all", `SELECT "shadowHidden" FROM "sponsorTimes" WHERE "userID" = ? AND "shadowHidden" = ?`, ["shadowBanned", 1]);
|
||||
const shadowRow = await db.prepare("get", `SELECT * FROM "shadowBannedUsers" WHERE "userID" = ?`, ["shadowBanned"]);
|
||||
const videoRow = await getShadowBanSegments(userID, 1);
|
||||
const shadowRow = await getShadowBan(userID);
|
||||
assert.ok(!shadowRow);
|
||||
assert.strictEqual(videoRow.length, 3);
|
||||
done();
|
||||
@@ -61,14 +68,14 @@ describe("shadowBanUser", () => {
|
||||
});
|
||||
|
||||
it("Should be able to ban user and hide submissions from only some categories", (done: Done) => {
|
||||
fetch(`${getbaseURL()
|
||||
}/api/shadowBanUser?userID=shadowBanned2&adminUserID=shadow-ban-vip&categories=["sponsor"]`, {
|
||||
const userID = "shadowBanned2";
|
||||
fetch(`${endpoint}?userID=${userID}&adminUserID=${VIPuserID}&categories=["sponsor"]`, {
|
||||
method: "POST"
|
||||
})
|
||||
.then(async res => {
|
||||
assert.strictEqual(res.status, 200);
|
||||
const videoRow: {category: string, shadowHidden: number}[] = (await db.prepare("all", `SELECT "shadowHidden", "category" FROM "sponsorTimes" WHERE "userID" = ? AND "shadowHidden" = ?`, ["shadowBanned2", 1]));
|
||||
const shadowRow = await db.prepare("get", `SELECT * FROM "shadowBannedUsers" WHERE "userID" = ?`, ["shadowBanned2"]);
|
||||
const videoRow = await getShadowBanSegmentCategory(userID, 1);
|
||||
const shadowRow = await getShadowBan(userID);
|
||||
assert.ok(shadowRow);
|
||||
assert.strictEqual(videoRow.length, 2);
|
||||
assert.strictEqual(videoRow.filter((elem) => elem.category === "sponsor").length, 2);
|
||||
@@ -78,14 +85,14 @@ describe("shadowBanUser", () => {
|
||||
});
|
||||
|
||||
it("Should be able to unban user and unhide submissions", (done: Done) => {
|
||||
fetch(`${getbaseURL()
|
||||
}/api/shadowBanUser?userID=shadowBanned2&adminUserID=shadow-ban-vip&enabled=false`, {
|
||||
const userID = "shadowBanned2";
|
||||
fetch(`${endpoint}?userID=${userID}&adminUserID=${VIPuserID}&enabled=false`, {
|
||||
method: "POST"
|
||||
})
|
||||
.then(async res => {
|
||||
assert.strictEqual(res.status, 200);
|
||||
const videoRow = await db.prepare("all", `SELECT "shadowHidden" FROM "sponsorTimes" WHERE "userID" = ? AND "shadowHidden" = ?`, ["shadowBanned2", 1]);
|
||||
const shadowRow = await db.prepare("get", `SELECT * FROM "shadowBannedUsers" WHERE "userID" = ?`, ["shadowBanned2"]);
|
||||
const videoRow = await getShadowBanSegments(userID, 1);
|
||||
const shadowRow = await getShadowBan(userID);
|
||||
assert.ok(!shadowRow);
|
||||
assert.strictEqual(videoRow?.length, 0);
|
||||
done();
|
||||
@@ -94,14 +101,14 @@ describe("shadowBanUser", () => {
|
||||
});
|
||||
|
||||
it("Should be able to unban user and unhide some submissions", (done: Done) => {
|
||||
fetch(`${getbaseURL()
|
||||
}/api/shadowBanUser?userID=shadowBanned3&adminUserID=shadow-ban-vip&enabled=false&categories=["sponsor"]`, {
|
||||
const userID = "shadowBanned3";
|
||||
fetch(`${endpoint}?userID=${userID}&adminUserID=${VIPuserID}&enabled=false&categories=["sponsor"]`, {
|
||||
method: "POST"
|
||||
})
|
||||
.then(async res => {
|
||||
assert.strictEqual(res.status, 200);
|
||||
const videoRow = await db.prepare("all", `SELECT "shadowHidden", "category" FROM "sponsorTimes" WHERE "userID" = ? AND "shadowHidden" = ?`, ["shadowBanned3", 1]);
|
||||
const shadowRow = await db.prepare("get", `SELECT * FROM "shadowBannedUsers" WHERE "userID" = ?`, ["shadowBanned3"]);
|
||||
const videoRow = await getShadowBanSegmentCategory(userID, 1);
|
||||
const shadowRow = await getShadowBan(userID);
|
||||
assert.ok(!shadowRow);
|
||||
assert.strictEqual(videoRow.length, 1);
|
||||
assert.strictEqual(videoRow[0].category, "intro");
|
||||
@@ -111,14 +118,14 @@ describe("shadowBanUser", () => {
|
||||
});
|
||||
|
||||
it("Should get 409 when re-shadowbanning user", (done: Done) => {
|
||||
fetch(`${getbaseURL()
|
||||
}/api/shadowBanUser?userID=shadowBanned4&adminUserID=shadow-ban-vip&enabled=true&categories=["sponsor"]&unHideOldSubmissions=false`, {
|
||||
const userID = "shadowBanned4";
|
||||
fetch(`${endpoint}?userID=${userID}&adminUserID=${VIPuserID}&enabled=true&categories=["sponsor"]&unHideOldSubmissions=false`, {
|
||||
method: "POST"
|
||||
})
|
||||
.then(async res => {
|
||||
assert.strictEqual(res.status, 409);
|
||||
const videoRow = await db.prepare("all", `SELECT "shadowHidden", "category" FROM "sponsorTimes" WHERE "userID" = ? AND "shadowHidden" = ?`, ["shadowBanned4", 0]);
|
||||
const shadowRow = await db.prepare("get", `SELECT * FROM "shadowBannedUsers" WHERE "userID" = ?`, ["shadowBanned4"]);
|
||||
const videoRow = await getShadowBanSegmentCategory(userID, 0);
|
||||
const shadowRow = await getShadowBan(userID);
|
||||
assert.ok(shadowRow); // ban still exists
|
||||
assert.strictEqual(videoRow.length, 1); // videos should not be hidden
|
||||
assert.strictEqual(videoRow[0].category, "sponsor");
|
||||
@@ -128,14 +135,14 @@ describe("shadowBanUser", () => {
|
||||
});
|
||||
|
||||
it("Should be able to re-shadowban user to hide old submissions", (done: Done) => {
|
||||
fetch(`${getbaseURL()
|
||||
}/api/shadowBanUser?userID=shadowBanned4&adminUserID=shadow-ban-vip&enabled=true&categories=["sponsor"]&unHideOldSubmissions=true`, {
|
||||
const userID = "shadowBanned4";
|
||||
fetch(`${endpoint}?userID=${userID}&adminUserID=${VIPuserID}&enabled=true&categories=["sponsor"]&unHideOldSubmissions=true`, {
|
||||
method: "POST"
|
||||
})
|
||||
.then(async res => {
|
||||
assert.strictEqual(res.status, 200);
|
||||
const videoRow = await db.prepare("all", `SELECT "shadowHidden", "category" FROM "sponsorTimes" WHERE "userID" = ? AND "shadowHidden" = ?`, ["shadowBanned4", 1]);
|
||||
const shadowRow = await db.prepare("get", `SELECT * FROM "shadowBannedUsers" WHERE "userID" = ?`, ["shadowBanned4"]);
|
||||
const videoRow = await getShadowBanSegmentCategory(userID, 1);
|
||||
const shadowRow = await getShadowBan(userID);
|
||||
assert.ok(shadowRow); // ban still exists
|
||||
assert.strictEqual(videoRow.length, 1); // videos should be hidden
|
||||
assert.strictEqual(videoRow[0].category, "sponsor");
|
||||
@@ -143,5 +150,4 @@ describe("shadowBanUser", () => {
|
||||
})
|
||||
.catch(err => done(err));
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user