From 358381ddc259572db52a439bca5f071ceb3ecd9f Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Mon, 9 Jun 2025 12:55:13 +0800 Subject: [PATCH] update client side validation --- client/src/Validation/validation.js | 66 +++++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 3 deletions(-) diff --git a/client/src/Validation/validation.js b/client/src/Validation/validation.js index d94f7c49a..9232b481b 100644 --- a/client/src/Validation/validation.js +++ b/client/src/Validation/validation.js @@ -104,6 +104,9 @@ const credentials = joi.object({ }); const monitorValidation = joi.object({ + _id: joi.string(), + userId: joi.string(), + teamId: joi.string(), url: joi.when("type", { is: "docker", then: joi @@ -191,9 +194,9 @@ const monitorValidation = joi.object({ "number.base": "Frequency must be a number.", "any.required": "Frequency is required.", }), - expectedValue: joi.string().allow(""), - jsonPath: joi.string().allow(""), - matchMethod: joi.string(), + expectedValue: joi.string().allow(null, ""), + jsonPath: joi.string().allow(null, ""), + matchMethod: joi.string().allow(null, ""), }); const imageValidation = joi.object({ @@ -396,6 +399,60 @@ const infrastructureMonitorValidation = joi.object({ ), }); +const notificationEmailValidation = joi.object({ + notificationName: joi.string().required().messages({ + "string.empty": "Notification name is required", + "any.required": "Notification name is required", + }), + address: joi + .string() + .email({ tlds: { allow: false } }) + .required() + .messages({ + "string.empty": "E-mail address cannot be empty", + + "string.email": "Please enter a valid e-mail address", + "string.base": "E-mail address must be a string", + "any.required": "E-mail address is required", + }), +}); +const notificationWebhookValidation = joi.object({ + notificationName: joi.string().required().messages({ + "string.empty": "Notification name is required", + "any.required": "Notification name is required", + }), + config: joi + .object({ + webhookUrl: joi.string().uri().required().messages({ + "string.empty": "Webhook URL is required", + "string.uri": "Webhook URL must be a valid URI", + "any.required": "Webhook URL is required", + }), + platform: joi.string().required().messages({ + "string.base": "Platform must be a string", + "any.required": "Platform is required", + }), + }) + .unknown(true), +}); + +const notificationPagerDutyValidation = joi.object({ + notificationName: joi.string().required().messages({ + "string.empty": "Notification name is required", + "any.required": "Notification name is required", + }), + config: joi.object({ + platform: joi.string().required().messages({ + "string.base": "Platform must be a string", + "any.required": "Platform is required", + }), + routingKey: joi.string().required().messages({ + "string.empty": "Routing key is required", + "any.required": "Routing key is required", + }), + }), +}); + export { credentials, imageValidation, @@ -406,4 +463,7 @@ export { infrastructureMonitorValidation, statusPageValidation, logoImageValidation, + notificationEmailValidation, + notificationWebhookValidation, + notificationPagerDutyValidation, };