Browse Source

Fix admin settings validation

pull/8265/head
ViacheslavKlimov 4 years ago
parent
commit
583767b89c
  1. 4
      dao/src/main/java/org/thingsboard/server/dao/service/validator/AdminSettingsDataValidator.java
  2. 42
      dao/src/test/java/org/thingsboard/server/dao/service/BaseAdminSettingsServiceTest.java

4
dao/src/main/java/org/thingsboard/server/dao/service/validator/AdminSettingsDataValidator.java

@ -32,8 +32,8 @@ public class AdminSettingsDataValidator extends DataValidator<AdminSettings> {
@Override @Override
protected void validateCreate(TenantId tenantId, AdminSettings adminSettings) { protected void validateCreate(TenantId tenantId, AdminSettings adminSettings) {
AdminSettings existentAdminSettingsWithKey = adminSettingsService.findAdminSettingsByKey(tenantId, adminSettings.getKey()); AdminSettings existingSettings = adminSettingsService.findAdminSettingsByTenantIdAndKey(tenantId, adminSettings.getKey());
if (existentAdminSettingsWithKey != null) { if (existingSettings != null) {
throw new DataValidationException("Admin settings with such name already exists!"); throw new DataValidationException("Admin settings with such name already exists!");
} }
} }

42
dao/src/test/java/org/thingsboard/server/dao/service/BaseAdminSettingsServiceTest.java

@ -21,10 +21,15 @@ import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.AdminSettings; import org.thingsboard.server.common.data.AdminSettings;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.dao.exception.DataValidationException; import org.thingsboard.server.dao.exception.DataValidationException;
import org.thingsboard.server.dao.settings.AdminSettingsService; import org.thingsboard.server.dao.settings.AdminSettingsService;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
public abstract class BaseAdminSettingsServiceTest extends AbstractServiceTest { public abstract class BaseAdminSettingsServiceTest extends AbstractServiceTest {
@Autowired @Autowired
@ -39,7 +44,7 @@ public abstract class BaseAdminSettingsServiceTest extends AbstractServiceTest {
adminSettings = adminSettingsService.findAdminSettingsByKey(SYSTEM_TENANT_ID, "unknown"); adminSettings = adminSettingsService.findAdminSettingsByKey(SYSTEM_TENANT_ID, "unknown");
Assert.assertNull(adminSettings); Assert.assertNull(adminSettings);
} }
@Test @Test
public void testFindAdminSettingsById() { public void testFindAdminSettingsById() {
AdminSettings adminSettings = adminSettingsService.findAdminSettingsByKey(SYSTEM_TENANT_ID, "general"); AdminSettings adminSettings = adminSettingsService.findAdminSettingsByKey(SYSTEM_TENANT_ID, "general");
@ -47,7 +52,7 @@ public abstract class BaseAdminSettingsServiceTest extends AbstractServiceTest {
Assert.assertNotNull(foundAdminSettings); Assert.assertNotNull(foundAdminSettings);
Assert.assertEquals(adminSettings, foundAdminSettings); Assert.assertEquals(adminSettings, foundAdminSettings);
} }
@Test @Test
public void testSaveAdminSettings() { public void testSaveAdminSettings() {
AdminSettings adminSettings = adminSettingsService.findAdminSettingsByKey(SYSTEM_TENANT_ID, "general"); AdminSettings adminSettings = adminSettingsService.findAdminSettingsByKey(SYSTEM_TENANT_ID, "general");
@ -59,7 +64,7 @@ public abstract class BaseAdminSettingsServiceTest extends AbstractServiceTest {
Assert.assertNotNull(savedAdminSettings); Assert.assertNotNull(savedAdminSettings);
Assert.assertEquals(adminSettings.getJsonValue(), savedAdminSettings.getJsonValue()); Assert.assertEquals(adminSettings.getJsonValue(), savedAdminSettings.getJsonValue());
} }
@Test @Test
public void testSaveAdminSettingsWithEmptyKey() { public void testSaveAdminSettingsWithEmptyKey() {
AdminSettings adminSettings = adminSettingsService.findAdminSettingsByKey(SYSTEM_TENANT_ID, "mail"); AdminSettings adminSettings = adminSettingsService.findAdminSettingsByKey(SYSTEM_TENANT_ID, "mail");
@ -68,7 +73,7 @@ public abstract class BaseAdminSettingsServiceTest extends AbstractServiceTest {
adminSettingsService.saveAdminSettings(SYSTEM_TENANT_ID, adminSettings); adminSettingsService.saveAdminSettings(SYSTEM_TENANT_ID, adminSettings);
}); });
} }
@Test @Test
public void testChangeAdminSettingsKey() { public void testChangeAdminSettingsKey() {
AdminSettings adminSettings = adminSettingsService.findAdminSettingsByKey(SYSTEM_TENANT_ID, "mail"); AdminSettings adminSettings = adminSettingsService.findAdminSettingsByKey(SYSTEM_TENANT_ID, "mail");
@ -77,4 +82,33 @@ public abstract class BaseAdminSettingsServiceTest extends AbstractServiceTest {
adminSettingsService.saveAdminSettings(SYSTEM_TENANT_ID, adminSettings); adminSettingsService.saveAdminSettings(SYSTEM_TENANT_ID, adminSettings);
}); });
} }
@Test
public void whenSavingAdminSettingsWithAlreadyExistingKey_thenReturnError() {
String key = "mySettings";
ObjectNode value = JacksonUtil.newObjectNode().put("test", "test");
AdminSettings systemSettings = new AdminSettings();
systemSettings.setTenantId(TenantId.SYS_TENANT_ID);
systemSettings.setKey(key);
systemSettings.setJsonValue(value);
adminSettingsService.saveAdminSettings(TenantId.SYS_TENANT_ID, systemSettings);
assertThatThrownBy(() -> {
adminSettingsService.saveAdminSettings(TenantId.SYS_TENANT_ID, systemSettings);
}).hasMessageContaining("already exists");
AdminSettings tenantSettings = new AdminSettings();
tenantSettings.setTenantId(tenantId);
tenantSettings.setKey(key);
tenantSettings.setJsonValue(value);
assertDoesNotThrow(() -> {
adminSettingsService.saveAdminSettings(tenantId, tenantSettings);
});
assertThatThrownBy(() -> {
adminSettingsService.saveAdminSettings(tenantId, tenantSettings);
}).hasMessageContaining("already exists");
}
} }

Loading…
Cancel
Save