everything after postClearCache

This commit is contained in:
Michael C
2021-09-16 23:05:16 -04:00
parent 7cef510b29
commit e7d55d1e1b
10 changed files with 482 additions and 542 deletions

View File

@@ -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));
});
});