Merge pull request #364 from bluewave-labs/feat/speedcheck-route-validation

Added validation to speedcheck route.
This commit is contained in:
Alexander Holliday
2024-07-17 15:27:33 -07:00
committed by GitHub
3 changed files with 51 additions and 19 deletions

View File

@@ -1,6 +1,11 @@
const PageSpeedCheck = require("../models/PageSpeedCheck");
const { successMessages } = require("../utils/messages");
const SERVICE_NAME = "pagespeed";
const {
getPageSpeedCheckParamValidation,
createPageSpeedCheckParamValidation,
deletePageSpeedCheckParamValidation,
} = require("../validation/joi");
/**
* Gets all PageSpeedChecks for a monitor
@@ -12,9 +17,14 @@ const SERVICE_NAME = "pagespeed";
*/
const getPageSpeedChecks = async (req, res, next) => {
try {
// Validate monitorId parameter
await getPageSpeedCheckParamValidation.validateAsync(req.params);
return res.status(200).json({ msg: "Hit getPageSpeedChecks" });
} catch (error) {
error.service = SERVICE_NAME;
if (error.isJoi) {
return res.status(400).json({ error: error.details[0].message });
}
next(error);
}
};
@@ -29,8 +39,14 @@ const getPageSpeedChecks = async (req, res, next) => {
*/
const createPageSpeedCheck = async (req, res, next) => {
try {
// Validate monitorId parameter
await createPageSpeedCheckParamValidation.validateAsync(req.params);
return res.status(200).json({ msg: "Hit createPageSpeedCheck" });
} catch (error) {
if (error.isJoi) {
return res.status(400).json({ error: error.details[0].message });
}
error.service = SERVICE_NAME;
next(error);
}
@@ -46,8 +62,14 @@ const createPageSpeedCheck = async (req, res, next) => {
*/
const deletePageSpeedCheck = async (req, res, next) => {
try {
// Validate monitorId parameter
await deletePageSpeedCheckParamValidation.validateAsync(req.params);
return res.status(200).json({ msg: "Hit deletePageSpeedCheck" });
} catch (error) {
if (error.isJoi) {
return res.status(400).json({ error: error.details[0].message });
}
error.service = SERVICE_NAME;
next(error);
}

View File

@@ -1,54 +1,46 @@
const router = require("express").Router();
const { verifyOwnership } = require("../middleware/verifyOwnership");
const Monitor = require("../models/Monitor");
const {
getPageSpeedChecks,
createPageSpeedCheck,
deletePageSpeedCheck,
} = require("../controllers/pageSpeedCheckController");
const { createPageSpeedCheck, getPageSpeedChecks, deletePageSpeedCheck } = require("../controllers/pageSpeedCheckController");
/**
* @route POST /:monitorId
* @route POST /pagespeed/:monitorId
* @description Create a new PageSpeedCheck for a monitor
* @access Private
* @param {string} monitorId - The ID of the monitor
* @middleware verifyOwnership - Ensures the user owns the monitor
*/
router.post(
"/:monitorId",
verifyOwnership(Monitor, "monitorId"),
"/pagespeed/:monitorId",
verifyOwnership(Monitor, "monitorId"),
createPageSpeedCheck
);
/**
* @route GET /:monitorId
* @route GET /pagespeed/:monitorId
* @description Get all PageSpeedChecks for a monitor
* @access Private
* @param {string} monitorId - The ID of the monitor
* @middleware verifyOwnership - Ensures the user owns the monitor
*/
router.get(
"/:monitorId",
verifyOwnership(Monitor, "monitorId"),
"/pagespeed/:monitorId",
verifyOwnership(Monitor, "monitorId"),
getPageSpeedChecks
);
/**
* @route POST /delete/:monitorId
* @route DELETE /pagespeed/:monitorId
* @description Delete all PageSpeedChecks for a monitor
* @access Private
* @param {string} monitorId - The ID of the monitor
* @middleware verifyOwnership - Ensures the user owns the monitor
*/
router.delete(
"/:monitorId",
"/pagespeed/:monitorId",
verifyOwnership(Monitor, "monitorId"),
deletePageSpeedCheck
);
module.exports = router;

View File

@@ -145,6 +145,21 @@ const deleteChecksParamValidation = joi.object({
monitorId: joi.string().required(),
});
//****************************************
// PageSpeedCheckValidation
//****************************************
const getPageSpeedCheckParamValidation = joi.object({
monitorId: joi.string().required(),
});
const createPageSpeedCheckParamValidation = joi.object({
monitorId: joi.string().required(),
});
const deletePageSpeedCheckParamValidation = joi.object({
monitorId: joi.string().required(),
});
module.exports = {
loginValidation,
registerValidation,
@@ -169,4 +184,7 @@ module.exports = {
getChecksParamValidation,
deleteChecksParamValidation,
deleteUserParamValidation,
getPageSpeedCheckParamValidation,
createPageSpeedCheckParamValidation,
deletePageSpeedCheckParamValidation,
};