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 74af7e5d1a..b66c44ee62 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,12 +86,12 @@ public abstract class DataValidator> { public void validateDelete(TenantId tenantId, EntityId entityId) { } - protected void validateName(String dataType, String name) { + protected void validateName(String exceptionPrefix, String name) { if (StringUtils.isEmpty(name) || name.trim().length() == 0) { - throw new DataValidationException(dataType + " name should be specified!"); + throw new DataValidationException(exceptionPrefix + " should be specified!"); } if (StringUtils.contains0x00(name)) { - throw new DataValidationException(dataType + " name should not contain 0x00 symbol!"); + throw new DataValidationException(exceptionPrefix + " should not contain 0x00 symbol!"); } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/service/validator/AssetDataValidator.java b/dao/src/main/java/org/thingsboard/server/dao/service/validator/AssetDataValidator.java index 9482ee265e..871c27a4d7 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/service/validator/AssetDataValidator.java +++ b/dao/src/main/java/org/thingsboard/server/dao/service/validator/AssetDataValidator.java @@ -64,12 +64,7 @@ public class AssetDataValidator extends DataValidator { @Override protected void validateDataImpl(TenantId tenantId, Asset asset) { - if (StringUtils.isEmpty(asset.getName()) || asset.getName().trim().length() == 0) { - throw new DataValidationException("Asset name should be specified!"); - } - if (StringUtils.contains0x00(asset.getName())) { - throw new DataValidationException("Asset name should not contain 0x00 symbol!"); - } + validateName("Asset name", asset.getName()); if (asset.getTenantId() == null) { throw new DataValidationException("Asset should be assigned to tenant!"); } else { diff --git a/dao/src/main/java/org/thingsboard/server/dao/service/validator/DeviceDataValidator.java b/dao/src/main/java/org/thingsboard/server/dao/service/validator/DeviceDataValidator.java index a202aa257c..22e7f75c5c 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/service/validator/DeviceDataValidator.java +++ b/dao/src/main/java/org/thingsboard/server/dao/service/validator/DeviceDataValidator.java @@ -61,12 +61,7 @@ public class DeviceDataValidator extends AbstractHasOtaPackageValidator @Override protected void validateDataImpl(TenantId tenantId, Device device) { - if (StringUtils.isEmpty(device.getName()) || device.getName().trim().length() == 0) { - throw new DataValidationException("Device name should be specified!"); - } - if (StringUtils.contains0x00(device.getName())) { - throw new DataValidationException("Device name should not contain 0x00 symbol!"); - } + validateName("Device name", device.getName()); if (device.getTenantId() == null) { throw new DataValidationException("Device should be assigned to tenant!"); } else { 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 0802852e65..440cb5b663 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 @@ -41,10 +41,12 @@ public class DataValidatorTest { "Gdy Pomorze nie pomoże, to pomoże może morze, a gdy morze nie pomoże, to pomoże może Gdańsk", }) void validateName_thenOK(final String name) { - dataValidator.validateName("Device", name); - dataValidator.validateName("Asset", name); - dataValidator.validateName("Customer", name); - dataValidator.validateName("Tenant", name); + dataValidator.validateName("Device name", name); + dataValidator.validateName("Asset name", name); + dataValidator.validateName("Asset profile name", name); + dataValidator.validateName("Alarm type", name); + dataValidator.validateName("Customer name", name); + dataValidator.validateName("Tenant name", name); } @ParameterizedTest @@ -55,13 +57,13 @@ public class DataValidatorTest { }) void validateName_thenDataValidationException(final String name) { DataValidationException exception; - exception = Assertions.assertThrows(DataValidationException.class, () -> dataValidator.validateName("Asset", name)); - log.warn("Exception message Asset: {}", exception.getMessage()); - assertThat(exception.getMessage()).as("message Asset").containsPattern("Asset .*name.*"); + exception = Assertions.assertThrows(DataValidationException.class, () -> dataValidator.validateName("Asset name", name)); + log.warn("Exception message Asset name: {}", exception.getMessage()); + assertThat(exception.getMessage()).as("message Asset name").containsPattern("Asset name .*"); - exception = Assertions.assertThrows(DataValidationException.class, () -> dataValidator.validateName("Device", name)); - log.warn("Exception message Device: {}", exception.getMessage()); - assertThat(exception.getMessage()).as("message Device").containsPattern("Device .*name.*"); + exception = Assertions.assertThrows(DataValidationException.class, () -> dataValidator.validateName("Device name", name)); + log.warn("Exception message Device name: {}", exception.getMessage()); + assertThat(exception.getMessage()).as("message Device name").containsPattern("Device name .*"); } @ParameterizedTest diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/validator/AssetDataValidatorTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/validator/AssetDataValidatorTest.java index c26f02ee1f..7922cdacfa 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/validator/AssetDataValidatorTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/validator/AssetDataValidatorTest.java @@ -16,6 +16,7 @@ package org.thingsboard.server.dao.service.validator; import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -31,8 +32,7 @@ import org.thingsboard.server.dao.tenant.TenantService; import java.util.UUID; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.assertj.core.api.ThrowableAssert.catchThrowableOfType; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.willReturn; @SpringBootTest(classes = AssetDataValidator.class) @@ -77,13 +77,9 @@ class AssetDataValidatorTest { asset.setTenantId(tenantId); asset.setName(name); - DataValidationException exception = catchThrowableOfType(() -> - validator.validateDataImpl(tenantId, asset), DataValidationException.class); - log.warn("Exception message: {}", exception == null ? null : exception.getMessage()); - - assertThatThrownBy(() -> validator.validateDataImpl(tenantId, asset)) - .isInstanceOf(DataValidationException.class) - .hasMessageMatching(".*Asset.*"); + DataValidationException exception = Assertions.assertThrows(DataValidationException.class, () -> validator.validateDataImpl(tenantId, asset)); + log.warn("Exception message: {}", exception.getMessage()); + assertThat(exception.getMessage()).as("message Asset name").containsPattern("Asset name .*"); } } diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/validator/DeviceDataValidatorTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/validator/DeviceDataValidatorTest.java index b1a83b034e..4c4ed5a0e2 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/validator/DeviceDataValidatorTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/validator/DeviceDataValidatorTest.java @@ -16,6 +16,7 @@ package org.thingsboard.server.dao.service.validator; import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -31,8 +32,7 @@ import org.thingsboard.server.dao.tenant.TenantService; import java.util.UUID; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.assertj.core.api.ThrowableAssert.catchThrowableOfType; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.willReturn; @SpringBootTest(classes = DeviceDataValidator.class) @@ -72,19 +72,14 @@ class DeviceDataValidatorTest { "F0929906\000\000\000\000\000\000\000\000\000", "\000\000\000F0929906", "\u0000F0929906", "F092\u00009906", "F0929906\u0000" }) - void testDeviceName_thenDataValidationException(final String name) { Device device = new Device(); device.setTenantId(tenantId); device.setName(name); - DataValidationException exception = catchThrowableOfType(() -> - validator.validateDataImpl(tenantId, device), DataValidationException.class); - log.warn("Exception message: {}", exception == null ? null : exception.getMessage()); - - assertThatThrownBy(() -> validator.validateDataImpl(tenantId, device)) - .isInstanceOf(DataValidationException.class) - .hasMessageMatching(".*Device.*"); + DataValidationException exception = Assertions.assertThrows(DataValidationException.class, () -> validator.validateDataImpl(tenantId, device)); + log.warn("Exception message: {}", exception.getMessage()); + assertThat(exception.getMessage()).as("message Device name").containsPattern("Device name .*"); } }