Merge pull request #66 from Joe-Dowd/refactor

Refactor
This commit is contained in:
Ajay Ramachandran
2020-04-03 16:48:38 -04:00
committed by GitHub
9 changed files with 89 additions and 4 deletions

4
.gitignore vendored
View File

@@ -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

View File

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

View File

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

View File

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

View File

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

View File

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

View 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();
});
});
});

View File

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

View File

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