Skip to content

Commit

Permalink
fixed error when provision a device which id contains colon
Browse files Browse the repository at this point in the history
  • Loading branch information
MDeLuise authored and Coduz committed Oct 13, 2021
1 parent 5aad7d0 commit 2905cb0
Show file tree
Hide file tree
Showing 8 changed files with 93 additions and 3 deletions.
Expand Up @@ -293,4 +293,50 @@ public static void validateEntityName(@Nullable String name, @Nullable Integer m
lengthRange(name, minLength, maxLength, argumentName);
match(name, CommonsValidationRegex.NAME_SPACE_REGEXP, argumentName);
}


/**
* Comprehensive validation method for the job names.
* <p>
* Same as {@link #validateEntityName(String, String)} but allows colon to exists in the name.
*
* @param name The value to validate. Usually would be the {@link KapuaNamedEntity#getName()} or {@link KapuaNamedEntityCreator#getName()}, but other values could be provided
* @param argumentName The name of the argument to bundle with the {@link KapuaIllegalArgumentException}
* @throws KapuaIllegalNullArgumentException If the given value to validate is {@code null}.
* @throws KapuaIllegalArgumentException If other validations fails.
* @see ArgumentValidator#notEmptyOrNull(String, String)
* @see ArgumentValidator#lengthRange(String, Integer, Integer, String)
* @see ArgumentValidator#match(String, ValidationRegex, String)
* @since 1.2.0
*/
public static void validateJobName(@Nullable String name, @NotNull String argumentName) throws KapuaIllegalNullArgumentException, KapuaIllegalArgumentException {
validateJobName(name, 3, 255, argumentName);
}

/**
* Comprehensive validation method for the job names.
* <p>
* It invokes in sequence the three {@link ArgumentValidator} validation methods, using the provided parameters.
* <ul>
* <li>{@link #notEmptyOrNull(String, String)}</li>
* <li>{@link #lengthRange(String, Integer, Integer, String)}</li>
* <li>{@link #match(String, ValidationRegex, String)} with {@link CommonsValidationRegex#NAME_SPACE_COLON_REGEXP} </li>
* </ul>
*
* @param name The value to validate. Usually would be the {@link KapuaNamedEntity#getName()} or {@link KapuaNamedEntityCreator#getName()}, but other values could be provided
* @param minLength The minimum length of the field. If {@code null} the minLength validation is skipped
* @param maxLength The maximum length of the field. If {@code null} the maxLength validation is skipped
* @param argumentName The name of the argument to bundle with the {@link KapuaIllegalArgumentException}
* @throws KapuaIllegalNullArgumentException If the given value to validate is {@code null}.
* @throws KapuaIllegalArgumentException If other validations fails.
* @see ArgumentValidator#notEmptyOrNull(String, String)
* @see ArgumentValidator#lengthRange(String, Integer, Integer, String)
* @see ArgumentValidator#match(String, ValidationRegex, String)
* @since 1.2.0
*/
public static void validateJobName(@Nullable String name, @Nullable Integer minLength, @Nullable Integer maxLength, @NotNull String argumentName) throws KapuaIllegalNullArgumentException, KapuaIllegalArgumentException {
notEmptyOrNull(name, argumentName);
lengthRange(name, minLength, maxLength, argumentName);
match(name, CommonsValidationRegex.NAME_SPACE_COLON_REGEXP, argumentName);
}
}
Expand Up @@ -31,6 +31,11 @@ public enum CommonsValidationRegex implements ValidationRegex {
*/
NAME_SPACE_REGEXP("^[a-zA-Z0-9\\ \\_\\-]{3,}$"),

/**
* ^[a-zA-Z0-9\ \_\-\:]{3,}$
*/
NAME_SPACE_COLON_REGEXP("^[a-zA-Z0-9\\ \\_\\-\\:]{3,}$"),

/**
* ^.*(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&amp;+=!\~\|]).*$
*/
Expand Down
Expand Up @@ -146,6 +146,40 @@ public void testIllegalCharacterNameSpaceRegExp() throws Exception {
}
}


@Test
public void testIllegalCharacterNameSpaceColonRegExp() throws Exception {
String argRegExprNameSpace = "^[a-zA-Z0-9\\ \\_\\-\\:]{3,}$";
String permittedSymbols = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890-_ :";
String[] listOfFalseStringsNameSpace = new String[]{"abc!", "abc\\", "abc#", "abc$", "abc%", "abc&", "abc'",
"abc(", "abc)", "abc=", "abc?", "abc*", "abc;", "abc>", "abc<", "abc.", "abc,", "abc¡", "abc™",
"abc£", "abc¢", "abc∞", "abc§", "abc¶", "abc•", "abcª", "abcº", "abc≠", "abcœ", "abc∑", "abc´", "abc®", "abc†",
"abc—", "abc¨", "abc^", "abcø", "abcπ", "abc[", "abc]", "abcå", "abcß", "abc∂", "abcƒ", "abc©", "abc ", "̏abc", "abc∆",
"abc…", "abc^", "abc\\", "abcΩ", "abc≈", "abcç", "abc√", "abc∫", "abc~", "abcµ", "abc≤", "abc≥", "abc÷", "abc⁄", "abc@",
"abc‹", "abc›", "abc€", "abcı", "abc–", "abc°", "abc·", "abc‚", "abc±", "abcŒ", "abc„", "abc‘", "abc”", "abc’",
"abcÉ", "abcØ", "abc∏", "abc{", "abc}", "abcÅ", "abcÍ", "abcÔ", "abc", "abcÒ", "abcæ", "abcÆ", "abc|", "abc«", "abc◊",
"abcÑ", "abc¯", "abcÈ", "abcˇ", "abc¿", "", "a", "ab", "abc¬",};
int sizeOfFalseStrings = listOfFalseStringsNameSpace.length;
String[] listOfPermittedStringsNameSpace = new String[]{permittedSymbols, "abc", "abc:", ":abc", "a:bc", "123", "ab1", "1ab", "ABC",
"A1B", "A b", "A-ab1", "A_1", "ab-", "___", "---", " ", "_- ", "ab ", "12 ", "12_", "2-1", "abcd1234-_ "};
int sizeOfPermittedStrings = listOfPermittedStringsNameSpace.length;
for (int i = 0; i < sizeOfFalseStrings; i++) {
try {
ArgumentValidator.match(listOfFalseStringsNameSpace[i], CommonsValidationRegex.NAME_SPACE_COLON_REGEXP, "NAME_SPACE_COLON_REGEXP_test_case");
fail("Exception expected for: " + listOfFalseStringsNameSpace[i]);
} catch (KapuaIllegalArgumentException e) {
// Expected
}
}
for (int i = 0; i < sizeOfPermittedStrings; i++) {
try {
ArgumentValidator.match(listOfPermittedStringsNameSpace[i], CommonsValidationRegex.NAME_SPACE_COLON_REGEXP, "NAME_SPACE_COLON_REGEXP_test_case");
} catch (Exception ex) {
fail("No exception expected for: " + listOfPermittedStringsNameSpace[i]);
}
}
}

@Test
public void testIllegalCharacterMacAddressRegExp() throws Exception {
String argRegExprMACaddress = "^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$";
Expand Down
Expand Up @@ -62,6 +62,7 @@ public enum FieldType {
SNAPSHOT_FILE("snapshot_file", "^([a-zA-Z0-9\\:\\_\\-\\\\]){1,255}(\\.xml)"),
NAME("name", "^[a-zA-Z0-9\\_\\-]{3,}$"),
NAME_SPACE("name_space", "^[a-zA-Z0-9\\ \\_\\-]{3,}$"),
NAME_SPACE_COLON("name_space_colon", "^[a-zA-Z0-9\\ \\_\\-\\:]{3,}$"),
PASSWORD("password", "^.*(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!\\\"\\#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~]).*$"),
EMAIL("email", "^(\\w+)([-+.][\\w]+)*@(\\w[-\\w]*\\.){1,5}([A-Za-z]){2,63}$"),
PHONE("phone", "^\\+? ?[0-9_]+( [0-9_]+)*$"),
Expand Down
Expand Up @@ -29,6 +29,10 @@ name_spaceRegexMsg=Name must be at least 3 characters and can contain alphanumer
name_spaceToolTipMsg=Must be at least 3 characters and can contain alphanumeric characters combined with dash, underscore and/or space.
name_spaceRequiredMsg=Name is required.

name_space_colonRegexMsg=Name must be at least 3 characters and can contain alphanumeric characters combined with dash, underscore and/or space and/or colon.
name_space_colonToolTipMsg=Must be at least 3 characters and can contain alphanumeric characters combined with dash, underscore and/or space and/or colon.
name_space_colonRequiredMsg=Name is required.

passwordRegexMsg=Passwords must be {0} to 255 characters long and contain at least one lower case letter, one upper case letter, one digit and one special character.
passwordToolTipMsg=Must be {0} to 255 characters long and contain at least one lower case letter, one upper case letter, one digit and one special character.
passwordRequiredMsg=Password is required.
Expand Down
Expand Up @@ -58,7 +58,7 @@ public void createBody() {
name.setMaxLength(255);
name.setName("name");
name.setFieldLabel("* " + JOB_MSGS.dialogAddFieldName());
name.setValidator(new TextFieldValidator(name, FieldType.NAME_SPACE));
name.setValidator(new TextFieldValidator(name, FieldType.NAME_SPACE_COLON));
name.setToolTip(JOB_MSGS.dialogAddFieldNameTooltip());
jobFormPanel.add(name);

Expand Down
Expand Up @@ -79,7 +79,7 @@ jobRestartTargetErrorMessage=Error restarting job: {0}
dialogAddHeader=New Job
dialogAddInfo=Create a new job providing a name and an optional description.
dialogAddFieldName=Name
dialogAddFieldNameTooltip=Job name must be at least 3 characters long and can contain alphanumeric characters combined with dash and/or underscore.
dialogAddFieldNameTooltip=Job name must be at least 3 characters long and can contain alphanumeric characters combined with dash and/or underscore and/or colon.
dialogAddFieldDescription=Description
dialogAddFieldDescriptionTooltip=Enter a job description for detailed information about the job.
dialogAddConfirmation=Job successfully created.
Expand Down
Expand Up @@ -84,7 +84,7 @@ public Job create(JobCreator creator) throws KapuaException {
// Argument validation
ArgumentValidator.notNull(creator, "jobCreator");
ArgumentValidator.notNull(creator.getScopeId(), "jobCreator.scopeId");
ArgumentValidator.validateEntityName(creator.getName(), "jobCreator.name");
ArgumentValidator.validateJobName(creator.getName(), "jobCreator.name");

//
// Check access
Expand Down

0 comments on commit 2905cb0

Please sign in to comment.