From 827df18c627e5ad1b0ffeb01f409136c585e6819 Mon Sep 17 00:00:00 2001 From: Its-treason <39559178+Its-treason@users.noreply.github.com> Date: Wed, 25 Oct 2023 23:13:37 +0200 Subject: [PATCH] feat(#682): Add validation for request vars & dynamic vars --- .../EnvironmentVariables/index.js | 2 +- .../RequestPane/Vars/VarsTable/index.js | 17 +++++++++-- .../src/components/RequestPane/Vars/index.js | 30 ------------------- packages/bruno-js/src/bru.js | 14 +++++++++ 4 files changed, 30 insertions(+), 33 deletions(-) diff --git a/packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/EnvironmentDetails/EnvironmentVariables/index.js b/packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/EnvironmentDetails/EnvironmentVariables/index.js index 6ac7f8e4c..dfd93be33 100644 --- a/packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/EnvironmentDetails/EnvironmentVariables/index.js +++ b/packages/bruno-app/src/components/Environments/EnvironmentSettings/EnvironmentList/EnvironmentDetails/EnvironmentVariables/index.js @@ -23,7 +23,7 @@ const EnvironmentVariables = ({ environment, collection }) => { enabled: Yup.boolean(), name: Yup.string() .required('Name cannot be empty') - .matches(/^[^\d]\w*$/, 'Name contains invalid characters') + .matches(/^(?!\d)\w*$/, 'Name contains invalid characters') .trim(), secret: Yup.boolean(), type: Yup.string(), diff --git a/packages/bruno-app/src/components/RequestPane/Vars/VarsTable/index.js b/packages/bruno-app/src/components/RequestPane/Vars/VarsTable/index.js index 6ee760978..77785e47a 100644 --- a/packages/bruno-app/src/components/RequestPane/Vars/VarsTable/index.js +++ b/packages/bruno-app/src/components/RequestPane/Vars/VarsTable/index.js @@ -8,6 +8,7 @@ import { sendRequest, saveRequest } from 'providers/ReduxStore/slices/collection import SingleLineEditor from 'components/SingleLineEditor'; import Tooltip from 'components/Tooltip'; import StyledWrapper from './StyledWrapper'; +import toast from 'react-hot-toast'; const VarsTable = ({ item, collection, vars, varType }) => { const dispatch = useDispatch(); @@ -29,7 +30,19 @@ const VarsTable = ({ item, collection, vars, varType }) => { const _var = cloneDeep(v); switch (type) { case 'name': { - _var.name = e.target.value; + const value = e.target.value; + + if (/^(?!\d).*$/.test(value) === false) { + toast.error('Variable names must not start with a number!'); + return; + } + + if (/^\w*$/.test(value) === false) { + toast.error('Variable contains invalid character! Variables must only contain alpha-numeric characters.'); + return; + } + + _var.name = value; break; } case 'value': { @@ -88,7 +101,7 @@ const VarsTable = ({ item, collection, vars, varType }) => {
{vars && vars.length - ? vars.map((_var, index) => { + ? vars.map((_var) => { return (