diff --git a/dao/src/main/java/org/thingsboard/server/dao/service/DataValidator.java b/dao/src/main/java/org/thingsboard/server/dao/service/DataValidator.java index b66c44ee62..3c1723be8c 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/service/DataValidator.java +++ b/dao/src/main/java/org/thingsboard/server/dao/service/DataValidator.java @@ -86,7 +86,7 @@ public abstract class DataValidator> { public void validateDelete(TenantId tenantId, EntityId entityId) { } - protected void validateName(String exceptionPrefix, String name) { + public void validateName(String exceptionPrefix, String name) { if (StringUtils.isEmpty(name) || name.trim().length() == 0) { throw new DataValidationException(exceptionPrefix + " should be specified!"); } @@ -160,8 +160,8 @@ public abstract class DataValidator> { validateQueueNameOrTopic(topic, TOPIC); } - private static void validateQueueNameOrTopic(String value, String fieldName) { - if (StringUtils.isEmpty(value)) { + static void validateQueueNameOrTopic(String value, String fieldName) { + if (StringUtils.isEmpty(value) || value.trim().length() == 0 ) { throw new DataValidationException(String.format("Queue %s should be specified!", fieldName)); } if (!QUEUE_PATTERN.matcher(value).matches()) { diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/DataValidatorTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/DataValidatorTest.java index 440cb5b663..a0217c06c8 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/DataValidatorTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/DataValidatorTest.java @@ -83,4 +83,25 @@ public class DataValidatorTest { Assertions.assertThrows(DataValidationException.class, () -> DataValidator.validateEmail(email)); } + @ParameterizedTest + @ValueSource(strings = { + "azAZ09_.-", "topic", + }) + public void validateQueueNameOrTopic(String value) { + DataValidator.validateQueueNameOrTopic(value, "name"); + DataValidator.validateQueueNameOrTopic(value, "topic"); + } + + @ParameterizedTest + @ValueSource(strings = { + "", " ", " ", "\n", "\r\n", "\t", "\000", "\000\000", "\001", "\002", "\040", "\u0000", "\u0000\u0000", + "topic@home", "!", ",", "Łódź", + "\uD83D\uDC0C", "\041", + "F0929906\000\000\000\000\000\000\000\000\000", + }) + public void validateQueueNameOrTopicInvalid(String value) { + Assertions.assertThrows(DataValidationException.class, () -> DataValidator.validateQueueNameOrTopic(value, "name")); + Assertions.assertThrows(DataValidationException.class, () -> DataValidator.validateQueueNameOrTopic(value, "topic")); + } + }