Merge pull request #866 from Its-treason/bugfix/variable-name-validation

fix(#853): Allow - in variable names & small refactor
This commit is contained in:
Anoop M D 2023-11-03 20:25:31 +05:30 committed by GitHub
commit 0ce3deea86
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 6 deletions

View File

@ -10,6 +10,7 @@ import StyledWrapper from './StyledWrapper';
import { useFormik } from 'formik';
import * as Yup from 'yup';
import { uuid } from 'utils/common';
import { envVariableNameRegex } from 'utils/common/regex';
const EnvironmentVariables = ({ environment, collection }) => {
const dispatch = useDispatch();
@ -23,7 +24,10 @@ const EnvironmentVariables = ({ environment, collection }) => {
enabled: Yup.boolean(),
name: Yup.string()
.required('Name cannot be empty')
.matches(/^(?!\d)\w*$/, 'Name contains invalid characters')
.matches(
envVariableNameRegex,
'Name contains invalid characters. Must only contain alphanumeric characters, "-" and "_"'
)
.trim(),
secret: Yup.boolean(),
type: Yup.string(),

View File

@ -9,6 +9,7 @@ import SingleLineEditor from 'components/SingleLineEditor';
import Tooltip from 'components/Tooltip';
import StyledWrapper from './StyledWrapper';
import toast from 'react-hot-toast';
import { envVariableNameRegex } from 'utils/common/regex';
const VarsTable = ({ item, collection, vars, varType }) => {
const dispatch = useDispatch();
@ -37,8 +38,10 @@ const VarsTable = ({ item, collection, vars, varType }) => {
return;
}
if (/^\w*$/.test(value) === false) {
toast.error('Variable contains invalid character! Variables must only contain alpha-numeric characters.');
if (envVariableNameRegex.test(value) === false) {
toast.error(
'Variable contains invalid character! Variables must only contain alpha-numeric characters, "-" and "_".'
);
return;
}

View File

@ -0,0 +1 @@
export const envVariableNameRegex = /^(?!\d)[\w-]*$/;

View File

@ -1,6 +1,8 @@
const Handlebars = require('handlebars');
const { cloneDeep } = require('lodash');
const envVariableNameRegex = /^(?!\d)[\w-]*$/;
class Bru {
constructor(envVariables, collectionVariables, processEnvVars, collectionPath) {
this.envVariables = envVariables;
@ -59,10 +61,10 @@ class Bru {
throw new Error('Key is required');
}
if (/^(?!\d)\w*$/.test(key) === false) {
if (envVariableNameRegex.test(key) === false) {
throw new Error(
`Variable name: "${key}" contains invalid characters!` +
' Names must only contain alpha-numeric characters and cannot start with a digit.'
' Names must only contain alpha-numeric characters, "-", "_" and cannot start with a digit.'
);
}
@ -70,7 +72,7 @@ class Bru {
}
getVar(key) {
if (/^(?!\d)\w*$/.test(key) === false) {
if (envVariableNameRegex.test(key) === false) {
throw new Error(
`Variable name: "${key}" contains invalid characters!` +
' Names must only contain alpha-numeric characters and cannot start with a digit.'