add misc 400 tests

This commit is contained in:
Michael C
2023-02-21 20:09:57 -05:00
parent 4b8bc418ba
commit 80de71a68f
5 changed files with 39 additions and 5 deletions

View File

@@ -2,10 +2,12 @@ import { db } from "../databases/databases";
import { createMemoryCache } from "../utils/createMemoryCache";
import { config } from "../config";
import { Request, Response } from "express";
import { validateCategories } from "../utils/parseParams";
const MILLISECONDS_IN_MINUTE = 60000;
// eslint-disable-next-line @typescript-eslint/no-misused-promises
const getTopCategoryUsersWithCache = createMemoryCache(generateTopCategoryUsersStats, config.getTopUsersCacheTimeMinutes * MILLISECONDS_IN_MINUTE);
/* istanbul ignore next */
const maxRewardTimePerSegmentInSeconds = config.maxRewardTimePerSegmentInSeconds ?? 86400;
interface DBSegment {
@@ -38,7 +40,6 @@ async function generateTopCategoryUsersStats(sortBy: string, category: string) {
}
}
return {
userNames,
viewCounts,
@@ -51,7 +52,7 @@ export async function getTopCategoryUsers(req: Request, res: Response): Promise<
const sortType = parseInt(req.query.sortType as string);
const category = req.query.category as string;
if (sortType == undefined || !config.categoryList.includes(category) ) {
if (sortType == undefined || !validateCategories([category]) ) {
//invalid request
return res.sendStatus(400);
}

View File

@@ -67,7 +67,6 @@ function getStats(countContributingUsers: boolean): Promise<DBStatsData> {
}
}
function updateExtensionUsers() {
if (config.userCounterURL) {
axios.get(`${config.userCounterURL}/api/v1/userCount`)
@@ -87,12 +86,13 @@ function updateExtensionUsers() {
});
getCWSUsers(chromeExtId)
.then(res => chromeUsersCache = res)
.catch(() =>
.catch(/* istanbul ignore next */ () =>
getChromeUsers(chromeExtensionUrl)
.then(res => chromeUsersCache = res)
);
}
/* istanbul ignore next */
function getChromeUsers(chromeExtensionUrl: string): Promise<number> {
return axios.get(chromeExtensionUrl)
.then(res => {

View File

@@ -73,3 +73,6 @@ export const parseActionTypes = (req: Request, fallback: ActionType[]): ActionTy
export const parseRequiredSegments = (req: Request): SegmentUUID[] | undefined =>
syntaxErrorWrapper(getRequiredSegments, req, []); // never fall back
export const validateCategories = (categories: string[]): boolean =>
categories.every((category: string) => config.categoryList.includes(category));