Merge pull request #971 from nelup20/bugfix/964-env_var_dot_validation

fix(#964): Allow "." in variable names + make error message more consistent
This commit is contained in:
Anoop M D 2023-12-02 01:06:27 +05:30 committed by GitHub
commit 2aa876e526
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 9 additions and 12 deletions

View File

@ -26,7 +26,7 @@ const EnvironmentVariables = ({ environment, collection }) => {
.required('Name cannot be empty')
.matches(
envVariableNameRegex,
'Name contains invalid characters. Must only contain alphanumeric characters, "-" and "_"'
'Name contains invalid characters. Must only contain alphanumeric characters, "-", "_", "." and cannot start with a digit.'
)
.trim(),
secret: Yup.boolean(),

View File

@ -33,14 +33,9 @@ const VarsTable = ({ item, collection, vars, varType }) => {
case 'name': {
const value = e.target.value;
if (/^(?!\d).*$/.test(value) === false) {
toast.error('Variable names must not start with a number!');
return;
}
if (envVariableNameRegex.test(value) === false) {
toast.error(
'Variable contains invalid character! Variables must only contain alpha-numeric characters, "-" and "_".'
'Variable contains invalid characters! Variables must only contain alpha-numeric characters, "-", "_", "." and cannot start with a digit.'
);
return;
}

View File

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

View File

@ -43,7 +43,9 @@ const interpolateVars = (request, envVars = {}, collectionVariables = {}, proces
return str;
}
const template = Handlebars.compile(str, { noEscape: true });
// Handlebars doesn't allow dots as identifiers, so we need to use literal segments
const strLiteralSegment = str.replace('{{', '{{[').replace('}}', ']}}');
const template = Handlebars.compile(strLiteralSegment, { noEscape: true });
// collectionVariables take precedence over envVars
const combinedVars = {

View File

@ -1,7 +1,7 @@
const Handlebars = require('handlebars');
const { cloneDeep } = require('lodash');
const envVariableNameRegex = /^(?!\d)[\w-]*$/;
const envVariableNameRegex = /^(?!\d)[\w-.]*$/;
class Bru {
constructor(envVariables, collectionVariables, processEnvVars, collectionPath) {
@ -64,7 +64,7 @@ class Bru {
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.'
);
}
@ -75,7 +75,7 @@ class Bru {
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.'
);
}