mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2024-11-10 01:02:30 +01:00
141 lines
No EOL
4.5 KiB
TypeScript
141 lines
No EOL
4.5 KiB
TypeScript
import { getHash } from "../../src/utils/getHash";
|
|
import { HashedUserID } from "../../src/types/user.model";
|
|
import { client } from "../utils/httpClient";
|
|
import { db } from "../../src/databases/databases";
|
|
import assert from "assert";
|
|
|
|
// helpers
|
|
const checkUserVIP = (publicID: string) => db.prepare("get", `SELECT "userID" FROM "vipUsers" WHERE "userID" = ?`, [publicID]);
|
|
|
|
const adminPrivateUserID = "testUserId";
|
|
const permVIP1 = "addVIP_permaVIPOne";
|
|
const publicPermVIP1 = getHash(permVIP1) as HashedUserID;
|
|
const permVIP2 = "addVIP_permaVIPTwo";
|
|
const publicPermVIP2 = getHash(permVIP2) as HashedUserID;
|
|
const permVIP3 = "addVIP_permaVIPThree";
|
|
const publicPermVIP3 = getHash(permVIP3) as HashedUserID;
|
|
|
|
const endpoint = "/api/addUserAsVIP";
|
|
const addUserAsVIP = (userID: string, enabled: boolean, adminUserID = adminPrivateUserID) => client({
|
|
method: "POST",
|
|
url: endpoint,
|
|
params: {
|
|
userID,
|
|
adminUserID,
|
|
enabled: String(enabled)
|
|
}
|
|
});
|
|
|
|
describe("addVIP test", function() {
|
|
it("User should not already be VIP", (done) => {
|
|
checkUserVIP(publicPermVIP1)
|
|
.then(result => {
|
|
assert.ok(!result);
|
|
done();
|
|
})
|
|
.catch(err => done(err));
|
|
});
|
|
it("Should be able to add user as VIP", (done) => {
|
|
addUserAsVIP(publicPermVIP1, true)
|
|
.then(async res => {
|
|
assert.strictEqual(res.status, 200);
|
|
const row = await checkUserVIP(publicPermVIP1);
|
|
assert.ok(row);
|
|
done();
|
|
})
|
|
.catch(err => done(err));
|
|
});
|
|
it("Should be able to add second user as VIP", (done) => {
|
|
addUserAsVIP(publicPermVIP2, true)
|
|
.then(async res => {
|
|
assert.strictEqual(res.status, 200);
|
|
const row = await checkUserVIP(publicPermVIP2);
|
|
assert.ok(row);
|
|
done();
|
|
})
|
|
.catch(err => done(err));
|
|
});
|
|
it("Should return 403 with invalid adminID", (done) => {
|
|
addUserAsVIP(publicPermVIP1, true, "Invalid_Admin_User_ID")
|
|
.then(res => {
|
|
assert.strictEqual(res.status, 403);
|
|
done();
|
|
})
|
|
.catch(err => done(err));
|
|
});
|
|
it("Should return 400 with missing adminID", (done) => {
|
|
client({
|
|
method: "POST",
|
|
url: endpoint,
|
|
params: {
|
|
userID: publicPermVIP1,
|
|
enabled: String(true)
|
|
}
|
|
})
|
|
.then(res => {
|
|
assert.strictEqual(res.status, 400);
|
|
done();
|
|
})
|
|
.catch(err => done(err));
|
|
});
|
|
it("Should return 400 with missing userID", (done) => {
|
|
client({
|
|
method: "POST",
|
|
url: endpoint,
|
|
params: {
|
|
enabled: String(true),
|
|
adminUserID: adminPrivateUserID
|
|
}
|
|
})
|
|
.then(res => {
|
|
assert.strictEqual(res.status, 400);
|
|
done();
|
|
})
|
|
.catch(err => done(err));
|
|
});
|
|
it("Should be able to remove VIP", (done) => {
|
|
addUserAsVIP(publicPermVIP1, false)
|
|
.then(async res => {
|
|
assert.strictEqual(res.status, 200);
|
|
const row = await checkUserVIP(publicPermVIP1);
|
|
assert.ok(!row);
|
|
done();
|
|
})
|
|
.catch(err => done(err));
|
|
});
|
|
it("Should remove VIP if enabled is false", (done) => {
|
|
client({
|
|
method: "POST",
|
|
url: endpoint,
|
|
params: {
|
|
userID: publicPermVIP2,
|
|
adminUserID: adminPrivateUserID,
|
|
enabled: "invalid-text"
|
|
}
|
|
})
|
|
.then(async res => {
|
|
assert.strictEqual(res.status, 200);
|
|
const row = await checkUserVIP(publicPermVIP2);
|
|
assert.ok(!row);
|
|
done();
|
|
})
|
|
.catch(err => done(err));
|
|
});
|
|
it("Should remove VIP if enabled is missing", (done) => {
|
|
client({
|
|
method: "POST",
|
|
url: endpoint,
|
|
params: {
|
|
userID: publicPermVIP3,
|
|
adminUserID: adminPrivateUserID
|
|
}
|
|
})
|
|
.then(async res => {
|
|
assert.strictEqual(res.status, 200);
|
|
const row = await checkUserVIP(publicPermVIP3);
|
|
assert.ok(!row);
|
|
done();
|
|
})
|
|
.catch(err => done(err));
|
|
});
|
|
}); |