mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-24 16:38:41 +03:00
4
.gitignore
vendored
4
.gitignore
vendored
@@ -89,9 +89,13 @@ typings/
|
||||
|
||||
# Databases
|
||||
databases/sponsorTimes.db
|
||||
databases/sponsorTimes.db-shm
|
||||
databases/sponsorTimes.db-wal
|
||||
databases/private.db
|
||||
databases/sponsorTimesReal.db
|
||||
test/databases/sponsorTimes.db
|
||||
test/databases/sponsorTimes.db-shm
|
||||
test/databases/sponsorTimes.db-wal
|
||||
test/databases/private.db
|
||||
|
||||
# Config files
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
{
|
||||
// Remove all comments from the config when using it!
|
||||
|
||||
"port": 80,
|
||||
"globalSalt": "[global salt (pepper) that is added to every ip before hashing to make it even harder for someone to decode the ip]",
|
||||
"adminUserID": "[the hashed id of the user who can perform admin actions]",
|
||||
@@ -8,6 +10,9 @@
|
||||
"behindProxy": true,
|
||||
"db": "./databases/sponsorTimes.db",
|
||||
"privateDB": "./databases/private.db",
|
||||
"createDatabaseIfNotExist": true, //This will run on startup every time (unless readOnly is true) - so ensure "create table if not exists" is used in the schema
|
||||
"dbSchema": "./databases/_sponsorTimes.db.sql",
|
||||
"privateDBSchema": "./databases/_private.db.sql",
|
||||
"mode": "development",
|
||||
"readOnly": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,8 @@ var Sqlite3 = require('better-sqlite3');
|
||||
var fs = require('fs');
|
||||
|
||||
let options = {
|
||||
readonly: config.readOnly
|
||||
readonly: config.readOnly,
|
||||
fileMustExist: !config.createDatabaseIfNotExist
|
||||
};
|
||||
|
||||
var db = new Sqlite3(config.db, options);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
var db = require('../databases/databases.js').db;
|
||||
var getHash = require('../utils/getHash.js');
|
||||
|
||||
module.exports = function getSavedTimeForUser (req, res) {
|
||||
let userID = req.query.userID;
|
||||
|
||||
@@ -168,6 +168,16 @@ module.exports = async function submitSponsorTimes(req, res) {
|
||||
}
|
||||
}]
|
||||
}
|
||||
}, (err, res) => {
|
||||
if (err) {
|
||||
console.log("Failed to send first time submission Discord hook.");
|
||||
console.log(JSON.stringify(err));
|
||||
console.log("\n");
|
||||
} else if (res && res.statusCode >= 400) {
|
||||
console.log("Error sending first time submission Discord hook");
|
||||
console.log(JSON.stringify(res));
|
||||
console.log("\n");
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -119,6 +119,16 @@ module.exports = async function voteOnSponsorTime(req, res) {
|
||||
}
|
||||
}]
|
||||
}
|
||||
}, (err, res) => {
|
||||
if (err) {
|
||||
console.log("Failed to send reported submission Discord hook.");
|
||||
console.log(JSON.stringify(err));
|
||||
console.log("\n");
|
||||
} else if (res && res.statusCode >= 400) {
|
||||
console.log("Error sending reported submission Discord hook");
|
||||
console.log(JSON.stringify(res));
|
||||
console.log("\n");
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
20
test/cases/getSavedTimeForUser.js
Normal file
20
test/cases/getSavedTimeForUser.js
Normal file
@@ -0,0 +1,20 @@
|
||||
var request = require('request');
|
||||
var utils = require('../utils.js');
|
||||
var db = require('../../src/databases/databases.js').db;
|
||||
var getHash = require('../../src/utils/getHash.js');
|
||||
|
||||
describe('getSavedTimeForUser', () => {
|
||||
before(() => {
|
||||
db.exec("INSERT INTO sponsorTimes VALUES ('getSavedTimeForUser', 1, 11, 2, 'abc1239999', '"+getHash("testman")+"', 0, 50, 0)");
|
||||
});
|
||||
|
||||
it('Should be able to get a 200', (done) => {
|
||||
request.get(utils.getbaseURL()
|
||||
+ "/api/getSavedTimeForUser?userID=testman", null,
|
||||
(err, res, body) => {
|
||||
if (err) done(false);
|
||||
else if (res.statusCode !== 200) done("non 200");
|
||||
else done();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -19,7 +19,8 @@ var utils = require('../utils.js');
|
||||
|
||||
describe('getVideoSponsorTime', () => {
|
||||
before(() => {
|
||||
db.exec("INSERT INTO sponsorTimes VALUES ('testtesttest', 1, 11, 2, 'abc123', 'testman', 0, 50, 0)");
|
||||
db.exec("INSERT INTO sponsorTimes VALUES ('testtesttest', 1, 11, 2, 'uuid-0', 'testman', 0, 50, 0)");
|
||||
db.exec("INSERT INTO sponsorTimes VALUES ('testtesttest,test', 1, 11, 2, 'uuid-1', 'testman', 0, 50, 0)");
|
||||
});
|
||||
|
||||
it('Should be able to get a time', (done) => {
|
||||
@@ -32,6 +33,37 @@ describe('getVideoSponsorTime', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('Should return 404 if no segment found', (done) => {
|
||||
request.get(utils.getbaseURL()
|
||||
+ "/api/getVideoSponsorTimes?videoID=notarealvideo", null,
|
||||
(err, res, body) => {
|
||||
if (err) done(false);
|
||||
else if (res.statusCode !== 404) done("non 404 respone code: " + res.statusCode);
|
||||
else done();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
it('Should be possible to send unexpected query parameters', (done) => {
|
||||
request.get(utils.getbaseURL()
|
||||
+ "/api/getVideoSponsorTimes?videoID=testtesttest&fakeparam=hello", null,
|
||||
(err, res, body) => {
|
||||
if (err) done(false);
|
||||
else if (res.statusCode !== 200) done("non 200");
|
||||
else done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Should be able send a comma in a query param', (done) => {
|
||||
request.get(utils.getbaseURL()
|
||||
+ "/api/getVideoSponsorTimes?videoID=testtesttest,test", null,
|
||||
(err, res, body) => {
|
||||
if (err) done(false);
|
||||
else if (res.statusCode !== 200) done("non 200 response: " + res.statusCode);
|
||||
else (JSON.parse(body).UUIDs[0] === 'uuid-1') && done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Should be able to get the correct time', (done) => {
|
||||
request.get(utils.getbaseURL()
|
||||
+ "/api/getVideoSponsorTimes?videoID=testtesttest", null,
|
||||
@@ -42,7 +74,7 @@ describe('getVideoSponsorTime', () => {
|
||||
let parsedBody = JSON.parse(body);
|
||||
if (parsedBody.sponsorTimes[0][0] === 1
|
||||
&& parsedBody.sponsorTimes[0][1] === 11
|
||||
&& parsedBody.UUIDs[0] === 'abc123') {
|
||||
&& parsedBody.UUIDs[0] === 'uuid-0') {
|
||||
done();
|
||||
} else {
|
||||
done("Wrong data was returned + " + parsedBody);
|
||||
|
||||
@@ -4,10 +4,12 @@ var app = express();
|
||||
var config = require('../src/config.js');
|
||||
|
||||
app.post('/ReportChannelWebhook', (req, res) => {
|
||||
console.log("report mock hit");
|
||||
res.status(200);
|
||||
});
|
||||
|
||||
app.post('/FirstTimeSubmissionsWebhook', (req, res) => {
|
||||
console.log("first time submisson mock hit");
|
||||
res.status(200);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user