From 3371c6a099e9d910b61b827edcc14bba0958ab5d Mon Sep 17 00:00:00 2001 From: Michael C Date: Wed, 7 Jul 2021 00:22:05 -0400 Subject: [PATCH 1/8] add reason to getLockCategories --- src/routes/getLockCategories.ts | 12 ++++++++--- src/routes/getLockCategoriesByHash.ts | 9 ++++++-- test/cases/getLockCategories.ts | 18 +++++++++------- test/cases/getLockCategoriesByHash.ts | 30 ++++++++++++++++++--------- 4 files changed, 47 insertions(+), 22 deletions(-) diff --git a/src/routes/getLockCategories.ts b/src/routes/getLockCategories.ts index e27acea..7267b86 100644 --- a/src/routes/getLockCategories.ts +++ b/src/routes/getLockCategories.ts @@ -13,11 +13,17 @@ export async function getLockCategories(req: Request, res: Response): Promise entry.category); + const categories = row.map(item => item.category); + if (categories.length === 0 || !categories[0]) return res.sendStatus(404); + // Get existing lock categories markers + const reasons = row.map(item => item.reason); + let longReason = ""; + // set longReason if current length is longer + reasons.forEach((e) => { if (e.length > longReason.length) longReason = e; }); return res.send({ + reason: longReason, categories }); } catch (err) { diff --git a/src/routes/getLockCategoriesByHash.ts b/src/routes/getLockCategoriesByHash.ts index 90772b2..3f76c59 100644 --- a/src/routes/getLockCategoriesByHash.ts +++ b/src/routes/getLockCategoriesByHash.ts @@ -7,13 +7,15 @@ import { Category, VideoID, VideoIDHash } from "../types/segments.model"; interface LockResultByHash { videoID: VideoID, hash: VideoIDHash, + reason: string, categories: Category[] } interface DBLock { videoID: VideoID, hash: VideoIDHash, - category: Category + category: Category, + reason: string, } const mergeLocks = (source: DBLock[]) => { @@ -22,12 +24,15 @@ const mergeLocks = (source: DBLock[]) => { // videoID already exists const destMatch = dest.find(s => s.videoID === obj.videoID); if (destMatch) { + // override longer reason + if (destMatch.reason.length > obj.reason.length) destMatch.reason = obj.reason; // push to categories destMatch.categories.push(obj.category); } else { dest.push({ videoID: obj.videoID, hash: obj.hash, + reason: obj.reason, categories: [obj.category] }); } @@ -45,7 +50,7 @@ export async function getLockCategoriesByHash(req: Request, res: Response): Prom try { // Get existing lock categories markers - const lockedRows = await db.prepare('all', 'SELECT "videoID", "hashedVideoID" as "hash", "category" from "lockCategories" where "hashedVideoID" LIKE ?', [hashPrefix + '%']) as DBLock[]; + const lockedRows = await db.prepare('all', 'SELECT "videoID", "hashedVideoID" as "hash", "category", "reason" from "lockCategories" where "hashedVideoID" LIKE ?', [hashPrefix + '%']) as DBLock[]; if (lockedRows.length === 0 || !lockedRows[0]) return res.sendStatus(404); // merge all locks return res.send(mergeLocks(lockedRows)); diff --git a/test/cases/getLockCategories.ts b/test/cases/getLockCategories.ts index 177710e..e9c7796 100644 --- a/test/cases/getLockCategories.ts +++ b/test/cases/getLockCategories.ts @@ -9,19 +9,19 @@ describe('getLockCategories', () => { const insertVipUserQuery = 'INSERT INTO "vipUsers" ("userID") VALUES (?)'; await db.prepare("run", insertVipUserQuery, [getHash("VIPUser-getLockCategories")]); - const insertLockCategoryQuery = 'INSERT INTO "lockCategories" ("userID", "videoID", "category") VALUES (?, ?, ?)'; - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLock-1', 'sponsor']); - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLock-1', 'interaction']); + const insertLockCategoryQuery = 'INSERT INTO "lockCategories" ("userID", "videoID", "category", "reason") VALUES (?, ?, ?, ?)'; + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLock-1', 'sponsor', '1-short']); + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLock-1', 'interaction', '2-longer-reason']); - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLock-2', 'preview']); + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLock-2', 'preview', '2-reason']); - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLock-3', 'nonmusic']); + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLock-3', 'nonmusic', '3-reason']); }); it('Should update the database version when starting the application', async () => { const version = (await db.prepare('get', 'SELECT key, value FROM config where key = ?', ['version'])).value; - if (version > 1) return; - else return 'Version isn\'t greater than 1. Version is ' + version; + if (version > 20) return; + else return 'Version isn\'t greater than 20. Version is ' + version; }); it('Should be able to get multiple locks', (done: Done) => { @@ -37,6 +37,8 @@ describe('getLockCategories', () => { done(`Returned incorrect category "${data.categories[0]}"`); } else if (data.categories[1] !== "interaction") { done(`Returned incorrect category "${data.categories[1]}"`); + } else if (data.reason !== "1-longer-reason") { + done(`Returned incorrect reason "${data.reason}"`); } else { done(); // pass } @@ -56,6 +58,8 @@ describe('getLockCategories', () => { done('Returned incorrect number of locks "' + data.categories.length + '"'); } else if (data.categories[0] !== "preview") { done(`Returned incorrect category "${data.categories[0].category}"`); + } else if (data.reason !== "2-reason") { + done(`Returned incorrect reason "${data.reason}"`); } else { done(); // pass } diff --git a/test/cases/getLockCategoriesByHash.ts b/test/cases/getLockCategoriesByHash.ts index 585c08e..5a89ef0 100644 --- a/test/cases/getLockCategoriesByHash.ts +++ b/test/cases/getLockCategoriesByHash.ts @@ -9,23 +9,23 @@ describe('getLockCategoriesByHash', () => { const insertVipUserQuery = 'INSERT INTO "vipUsers" ("userID") VALUES (?)'; await db.prepare("run", insertVipUserQuery, [getHash("VIPUser-getLockCategories")]); - const insertLockCategoryQuery = 'INSERT INTO "lockCategories" ("userID", "videoID", "category", "hashedVideoID") VALUES (?, ?, ?, ?)'; - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLockHash-1', 'sponsor', '67a654898fda3a5541774aea345796c7709982bb6018cb08d22a18eeddccc1d0']); - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLockHash-1', 'interaction', '67a654898fda3a5541774aea345796c7709982bb6018cb08d22a18eeddccc1d0']); + const insertLockCategoryQuery = 'INSERT INTO "lockCategories" ("userID", "videoID", "category", "reaspm", "hashedVideoID") VALUES (?, ?, ?, ?)'; + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLockHash-1', 'sponsor', '1-reason-short', '67a654898fda3a5541774aea345796c7709982bb6018cb08d22a18eeddccc1d0']); + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLockHash-1', 'interaction', '1-longer-reason', '67a654898fda3a5541774aea345796c7709982bb6018cb08d22a18eeddccc1d0']); - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLockHash-2', 'preview', 'dff09120437b4bd594dffae5f3cde3cfc5f6099fb01d0ef4051919b2908d9a50']); + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLockHash-2', 'preview', '2-reason', 'dff09120437b4bd594dffae5f3cde3cfc5f6099fb01d0ef4051919b2908d9a50']); - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLockHash-3', 'nonmusic', 'bf1b122fd5630e0df8626d00c4a95c58954ad715e5595b0f75a19ac131e28928']); + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLockHash-3', 'nonmusic', '3-reason', 'bf1b122fd5630e0df8626d00c4a95c58954ad715e5595b0f75a19ac131e28928']); - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'fakehash-1', 'outro', 'b05a20424f24a53dac1b059fb78d861ba9723645026be2174c93a94f9106bb35']); - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'fakehash-2', 'intro', 'b05acd1cd6ec7dffe5ffea64ada91ae7469d6db2ce21c7e30ad7fa62075d450']); - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'fakehash-2', 'preview', 'b05acd1cd6ec7dffe5ffea64ada91ae7469d6db2ce21c7e30ad7fa62075d450']); + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'fakehash-1', 'outro', 'fake1-reason', 'b05a20424f24a53dac1b059fb78d861ba9723645026be2174c93a94f9106bb35']); + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'fakehash-2', 'intro', 'fake2-longer-reason', 'b05acd1cd6ec7dffe5ffea64ada91ae7469d6db2ce21c7e30ad7fa62075d450']); + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'fakehash-2', 'preview', 'fake2-short', 'b05acd1cd6ec7dffe5ffea64ada91ae7469d6db2ce21c7e30ad7fa62075d450']); }); it('Database should be greater or equal to version 18', async () => { const version = (await db.prepare('get', 'SELECT key, value FROM config where key = ?', ['version'])).value; - if (version >= 18) return; - else return 'Version isn\'t greater than 18. Version is ' + version; + if (version >= 20) return; + else return 'Version isn\'t greater than 20. Version is ' + version; }); it('Should be able to get multiple locks in one object', (done: Done) => { @@ -45,6 +45,8 @@ describe('getLockCategoriesByHash', () => { done(`Returned incorrect category "${data[0].categories[0]}"`); } else if (data[0].categories[1] !== "interaction") { done(`Returned incorrect category "${data[0].categories[1]}"`); + } else if (data[0].reason !== "1-longer-reason") { + done(`Returned incorrect reason "${data[0].reason}"`); } else { done(); // pass } @@ -70,6 +72,8 @@ describe('getLockCategoriesByHash', () => { done(`Returned incorrect number of categories "${data[0].categories.length}"`); } else if (data[0].categories[0] !== "preview") { done(`Returned incorrect category "${data[0].categories[0]}"`); + } else if (data[0].reason !== "2-reason") { + done(`Returned incorrect reason "${data[0].reason}"`); } else { done(); // pass } @@ -95,6 +99,8 @@ describe('getLockCategoriesByHash', () => { done(`Returned incorrect number of categories "${data[0].categories.length}"`); } else if (data[0].categories[0] !== "nonmusic") { done(`Returned incorrect category "${data[0].categories[0]}"`); + } else if (data[0].reason !== "3-reason") { + done(`Returned incorrect reason "${data[0].reason}"`); } else { done(); // pass } @@ -130,6 +136,10 @@ describe('getLockCategoriesByHash', () => { done(`Returned incorrect category "${data[1].category}"`); } else if (data[1].categories[1] !== "preview") { done(`Returned incorrect category "${data[1].category}"`); + } else if (data[0].reason !== "fake1-reason") { + done(`Returned incorrect reason "${data[0].reason}"`); + } else if (data[1].reason !== "fake2-longer-reason") { + done(`Returned incorrect reason "${data[1].reason}"`); } else { done(); // pass } From 50e7f4af8ef83d8e800a9716b012f00f4b0ff249 Mon Sep 17 00:00:00 2001 From: Michael C Date: Wed, 7 Jul 2021 00:51:08 -0400 Subject: [PATCH 2/8] use .reduce from @HaiDang666 --- src/routes/getLockCategories.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/routes/getLockCategories.ts b/src/routes/getLockCategories.ts index 7267b86..d7707f9 100644 --- a/src/routes/getLockCategories.ts +++ b/src/routes/getLockCategories.ts @@ -14,16 +14,14 @@ export async function getLockCategories(req: Request, res: Response): Promise item.category); if (categories.length === 0 || !categories[0]) return res.sendStatus(404); - // Get existing lock categories markers - const reasons = row.map(item => item.reason); - let longReason = ""; - // set longReason if current length is longer - reasons.forEach((e) => { if (e.length > longReason.length) longReason = e; }); + // Get longest lock reason + const reason = row.map(item => item.reason) + .reduce((a,b) => (a.length > b.length) ? a : b); return res.send({ - reason: longReason, + reason, categories }); } catch (err) { From 4a835d53062c19170ac5ab548885d24f32046d72 Mon Sep 17 00:00:00 2001 From: Michael C Date: Wed, 7 Jul 2021 16:44:05 -0400 Subject: [PATCH 3/8] fix typos --- src/routes/getLockCategoriesByHash.ts | 2 +- test/cases/getLockCategories.ts | 2 +- test/cases/getLockCategoriesByHash.ts | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/routes/getLockCategoriesByHash.ts b/src/routes/getLockCategoriesByHash.ts index 3f76c59..0027888 100644 --- a/src/routes/getLockCategoriesByHash.ts +++ b/src/routes/getLockCategoriesByHash.ts @@ -25,7 +25,7 @@ const mergeLocks = (source: DBLock[]) => { const destMatch = dest.find(s => s.videoID === obj.videoID); if (destMatch) { // override longer reason - if (destMatch.reason.length > obj.reason.length) destMatch.reason = obj.reason; + if (obj.reason.length > destMatch.reason.length) destMatch.reason = obj.reason; // push to categories destMatch.categories.push(obj.category); } else { diff --git a/test/cases/getLockCategories.ts b/test/cases/getLockCategories.ts index e9c7796..8566ab7 100644 --- a/test/cases/getLockCategories.ts +++ b/test/cases/getLockCategories.ts @@ -11,7 +11,7 @@ describe('getLockCategories', () => { const insertLockCategoryQuery = 'INSERT INTO "lockCategories" ("userID", "videoID", "category", "reason") VALUES (?, ?, ?, ?)'; await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLock-1', 'sponsor', '1-short']); - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLock-1', 'interaction', '2-longer-reason']); + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLock-1', 'interaction', '1-longer-reason']); await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLock-2', 'preview', '2-reason']); diff --git a/test/cases/getLockCategoriesByHash.ts b/test/cases/getLockCategoriesByHash.ts index 5a89ef0..756f2ae 100644 --- a/test/cases/getLockCategoriesByHash.ts +++ b/test/cases/getLockCategoriesByHash.ts @@ -9,9 +9,9 @@ describe('getLockCategoriesByHash', () => { const insertVipUserQuery = 'INSERT INTO "vipUsers" ("userID") VALUES (?)'; await db.prepare("run", insertVipUserQuery, [getHash("VIPUser-getLockCategories")]); - const insertLockCategoryQuery = 'INSERT INTO "lockCategories" ("userID", "videoID", "category", "reaspm", "hashedVideoID") VALUES (?, ?, ?, ?)'; + const insertLockCategoryQuery = 'INSERT INTO "lockCategories" ("userID", "videoID", "category", "reason", "hashedVideoID") VALUES (?, ?, ?, ?, ?)'; await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLockHash-1', 'sponsor', '1-reason-short', '67a654898fda3a5541774aea345796c7709982bb6018cb08d22a18eeddccc1d0']); - await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLockHash-1', 'interaction', '1-longer-reason', '67a654898fda3a5541774aea345796c7709982bb6018cb08d22a18eeddccc1d0']); + await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLockHash-1', 'interaction', '1-reason-longer', '67a654898fda3a5541774aea345796c7709982bb6018cb08d22a18eeddccc1d0']); await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'getLockHash-2', 'preview', '2-reason', 'dff09120437b4bd594dffae5f3cde3cfc5f6099fb01d0ef4051919b2908d9a50']); @@ -22,7 +22,7 @@ describe('getLockCategoriesByHash', () => { await db.prepare("run", insertLockCategoryQuery, [getHash("VIPUser-getLockCategories"), 'fakehash-2', 'preview', 'fake2-short', 'b05acd1cd6ec7dffe5ffea64ada91ae7469d6db2ce21c7e30ad7fa62075d450']); }); - it('Database should be greater or equal to version 18', async () => { + it('Database should be greater or equal to version 20', async () => { const version = (await db.prepare('get', 'SELECT key, value FROM config where key = ?', ['version'])).value; if (version >= 20) return; else return 'Version isn\'t greater than 20. Version is ' + version; @@ -45,7 +45,7 @@ describe('getLockCategoriesByHash', () => { done(`Returned incorrect category "${data[0].categories[0]}"`); } else if (data[0].categories[1] !== "interaction") { done(`Returned incorrect category "${data[0].categories[1]}"`); - } else if (data[0].reason !== "1-longer-reason") { + } else if (data[0].reason !== "1-reason-longer") { done(`Returned incorrect reason "${data[0].reason}"`); } else { done(); // pass From 5e58efb07f9e5b0330926a9c3e9315305755181c Mon Sep 17 00:00:00 2001 From: Michael C Date: Wed, 7 Jul 2021 17:36:52 -0400 Subject: [PATCH 4/8] early 400 on skipSegments --- src/routes/getSkipSegments.ts | 4 ++++ src/routes/getSkipSegmentsByHash.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/routes/getSkipSegments.ts b/src/routes/getSkipSegments.ts index af322ad..08618e5 100644 --- a/src/routes/getSkipSegments.ts +++ b/src/routes/getSkipSegments.ts @@ -275,6 +275,10 @@ async function chooseSegments(segments: DBSegment[], max: number): Promise { const videoID = req.query.videoID as VideoID; + if (!videoID) { + res.status(400).send("videoID not specified"); + return false; + } // Default to sponsor // If using params instead of JSON, only one category can be pulled const categories: Category[] = req.query.categories diff --git a/src/routes/getSkipSegmentsByHash.ts b/src/routes/getSkipSegmentsByHash.ts index eb2c99c..1518f09 100644 --- a/src/routes/getSkipSegmentsByHash.ts +++ b/src/routes/getSkipSegmentsByHash.ts @@ -5,7 +5,7 @@ import { ActionType, Category, SegmentUUID, Service, VideoIDHash } from '../type export async function getSkipSegmentsByHash(req: Request, res: Response): Promise { let hashPrefix = req.params.prefix as VideoIDHash; - if (!hashPrefixTester(req.params.prefix)) { + if (!req.params.prefix || !hashPrefixTester(req.params.prefix)) { return res.status(400).send("Hash prefix does not match format requirements."); // Exit early on faulty prefix } hashPrefix = hashPrefix.toLowerCase() as VideoIDHash; From 9088d9fb9e0c6413ec026aeb66441f2b8aba083c Mon Sep 17 00:00:00 2001 From: Michael C Date: Wed, 7 Jul 2021 17:37:40 -0400 Subject: [PATCH 5/8] additional tests --- test/cases/getLockCategoriesByHash.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/cases/getLockCategoriesByHash.ts b/test/cases/getLockCategoriesByHash.ts index 585c08e..d31f7cf 100644 --- a/test/cases/getLockCategoriesByHash.ts +++ b/test/cases/getLockCategoriesByHash.ts @@ -173,4 +173,22 @@ describe('getLockCategoriesByHash', () => { }) .catch(() => ("couldn't call endpoint")); }); + + it('should return 400 if hash too short', (done: Done) => { + fetch(getbaseURL() + '/api/lockCategories/00') + .then(res => { + assert.strictEqual(res.status, 400); + done(); + }) + .catch(err => done(err)); + }); + + it('should return 400 if no hash specified', (done: Done) => { + fetch(getbaseURL() + '/api/lockCategories/') + .then(res => { + assert.strictEqual(res.status, 400); + done(); + }) + .catch(err => done(err)); + }); }); From 596dbf4ac8c9622b52db0c66167c6df9f029c816 Mon Sep 17 00:00:00 2001 From: Michael C Date: Wed, 7 Jul 2021 17:39:16 -0400 Subject: [PATCH 6/8] 404 tests --- test/cases/getSkipSegments.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/cases/getSkipSegments.ts b/test/cases/getSkipSegments.ts index 06e64f2..979d33b 100644 --- a/test/cases/getSkipSegments.ts +++ b/test/cases/getSkipSegments.ts @@ -397,4 +397,13 @@ describe('getSkipSegments', () => { }) .catch(() => done("Couldn't call endpoint")); }); + + it('Should get 400 if no videoID passed in', (done: Done) => { + fetch(getbaseURL() + '/api/skipSegments') + .then(async res => { + assert.strictEqual(res.status, 400); + done(); + }) + .catch(err => done(err)); + }); }); From e8d0da3ce3cbf484e6948ac4c80fc05d589db16d Mon Sep 17 00:00:00 2001 From: Michael C Date: Sat, 10 Jul 2021 16:30:30 -0400 Subject: [PATCH 7/8] add 400 conditions --- src/routes/postWarning.ts | 2 ++ test/cases/getLockCategoriesByHash.ts | 2 +- test/cases/getSkipSegments.ts | 1 + test/cases/getSkipSegmentsByHash.ts | 4 ++-- test/cases/getUserID.ts | 10 ++++++++++ test/cases/postPurgeAllSegments.ts | 15 +++++++++++++++ test/cases/postWarning.ts | 16 ++++++++++++++++ 7 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/routes/postWarning.ts b/src/routes/postWarning.ts index 015a9f8..583fbe2 100644 --- a/src/routes/postWarning.ts +++ b/src/routes/postWarning.ts @@ -6,6 +6,8 @@ import {getHash} from '../utils/getHash'; import { HashedUserID, UserID } from '../types/user.model'; export async function postWarning(req: Request, res: Response): Promise { + // exit early if no body passed in + if (!req.body.userID && !req.body.issuerUserID) return res.status(400).json({"message": "Missing parameters"}); // Collect user input data const issuerUserID: HashedUserID = getHash( req.body.issuerUserID); const userID: UserID = req.body.userID; diff --git a/test/cases/getLockCategoriesByHash.ts b/test/cases/getLockCategoriesByHash.ts index d31f7cf..0701210 100644 --- a/test/cases/getLockCategoriesByHash.ts +++ b/test/cases/getLockCategoriesByHash.ts @@ -2,7 +2,7 @@ import fetch from 'node-fetch'; import {Done, getbaseURL} from '../utils'; import {getHash} from '../../src/utils/getHash'; import {db} from '../../src/databases/databases'; - +import assert from 'assert'; describe('getLockCategoriesByHash', () => { before(async () => { diff --git a/test/cases/getSkipSegments.ts b/test/cases/getSkipSegments.ts index 979d33b..57ec9d7 100644 --- a/test/cases/getSkipSegments.ts +++ b/test/cases/getSkipSegments.ts @@ -2,6 +2,7 @@ import fetch from 'node-fetch'; import {db} from '../../src/databases/databases'; import {Done, getbaseURL} from '../utils'; import {getHash} from '../../src/utils/getHash'; +import assert from 'assert'; describe('getSkipSegments', () => { before(async () => { diff --git a/test/cases/getSkipSegmentsByHash.ts b/test/cases/getSkipSegmentsByHash.ts index d1da36e..d37eabb 100644 --- a/test/cases/getSkipSegmentsByHash.ts +++ b/test/cases/getSkipSegmentsByHash.ts @@ -108,10 +108,10 @@ describe('getSegmentsByHash', () => { .catch(() => done("Couldn't call endpoint")); }); - it('Should return 404 for no hash', (done: Done) => { + it('Should return 400 for no hash', (done: Done) => { fetch(getbaseURL() + '/api/skipSegments/?categories=["shilling"]') .then(res => { - if (res.status !== 404) done("expected 404, got " + res.status); + if (res.status !== 400) done("expected 400, got " + res.status); else done(); // pass }) .catch(() => done("Couldn't call endpoint")); diff --git a/test/cases/getUserID.ts b/test/cases/getUserID.ts index e0c7c5a..528804f 100644 --- a/test/cases/getUserID.ts +++ b/test/cases/getUserID.ts @@ -2,6 +2,7 @@ import fetch from 'node-fetch'; import {Done, getbaseURL} from '../utils'; import {db} from '../../src/databases/databases'; import {getHash} from '../../src/utils/getHash'; +import assert from 'assert'; describe('getUserID', () => { before(async () => { @@ -398,4 +399,13 @@ describe('getUserID', () => { }) .catch(() => ("couldn't call endpoint")); }); + + it('should return 400 if no username parameter specified', (done: Done) => { + fetch(getbaseURL() + '/api/userID') + .then(res => { + assert.strictEqual(res.status, 400); + done(); + }) + .catch(() => ("couldn't call endpoint")); + }); }); diff --git a/test/cases/postPurgeAllSegments.ts b/test/cases/postPurgeAllSegments.ts index a907ddc..0fd337a 100644 --- a/test/cases/postPurgeAllSegments.ts +++ b/test/cases/postPurgeAllSegments.ts @@ -3,6 +3,7 @@ import {Done, getbaseURL} from '../utils'; import {db} from '../../src/databases/databases'; import {getHash} from '../../src/utils/getHash'; import {IDatabase} from '../../src/databases/IDatabase'; +import assert from 'assert'; async function dbSponsorTimesAdd(db: IDatabase, videoID: string, startTime: number, endTime: number, UUID: string, category: string) { const votes = 0, @@ -79,4 +80,18 @@ describe('postPurgeAllSegments', function () { }) .catch(err => done(err)); }); + + it('Should return 400 if missing body', function (done: Done) { + fetch(`${baseURL}${route}`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + } + }) + .then(async res => { + assert.strictEqual(res.status, 400); + done(); + }) + .catch(err => done(err)); + }); }); diff --git a/test/cases/postWarning.ts b/test/cases/postWarning.ts index 8231148..f352165 100644 --- a/test/cases/postWarning.ts +++ b/test/cases/postWarning.ts @@ -2,6 +2,7 @@ import fetch from 'node-fetch'; import {Done, getbaseURL} from '../utils'; import {db} from '../../src/databases/databases'; import {getHash} from '../../src/utils/getHash'; +import assert from 'assert'; describe('postWarning', () => { before(async () => { @@ -127,4 +128,19 @@ describe('postWarning', () => { }) .catch(err => done(err)); }); + + it('Should return 400 if missing body', (done: Done) => { + fetch(getbaseURL() + + "/api/warnUser", { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + } + }) + .then(async res => { + assert.strictEqual(res.status, 400); + done(); + }) + .catch(err => done(err)); + }); }); From a8f7080bf287429f4cb51a225317c2db158d875b Mon Sep 17 00:00:00 2001 From: Michael C Date: Mon, 12 Jul 2021 00:32:51 -0400 Subject: [PATCH 8/8] fix typo in tests --- test/cases/getSkipSegmentsByHash.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/cases/getSkipSegmentsByHash.ts b/test/cases/getSkipSegmentsByHash.ts index 33813fc..a32c208 100644 --- a/test/cases/getSkipSegmentsByHash.ts +++ b/test/cases/getSkipSegmentsByHash.ts @@ -11,7 +11,7 @@ const mockManager = ImportMock.mockStaticClass(YouTubeAPIModule, 'YouTubeAPI'); const sinonStub = mockManager.mock('listVideos'); sinonStub.callsFake(YouTubeApiMock.listVideos); -describe('getSegmentsByHash', () => { +describe('getSkipSegmentsByHash', () => { before(async () => { const query = 'INSERT INTO "sponsorTimes" ("videoID", "startTime", "endTime", "votes", "UUID", "userID", "timeSubmitted", views, category, "actionType", "service", "hidden", "shadowHidden", "hashedVideoID") VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; await db.prepare("run", query, ['getSegmentsByHash-0', 1, 10, 2, 'getSegmentsByHash-0-0', 'testman', 0, 50, 'sponsor', 'skip', 'YouTube', 0, 0, 'fdaff4dee1043451faa7398324fb63d8618ebcd11bddfe0491c488db12c6c910']); @@ -109,7 +109,7 @@ describe('getSegmentsByHash', () => { it('Should return 400 for no hash', (done: Done) => { fetch(getbaseURL() + '/api/skipSegments/?categories=["shilling"]') .then(res => { - assert.strictEqual(res.status, 404); + assert.strictEqual(res.status, 400); done(); }) .catch(err => done(err));