Browse Source

Add validation for min scheduled update interval in tenant profile

pull/14827/head
Dmytro Skarzhynets 9 months ago
parent
commit
231b2fe8bc
No known key found for this signature in database GPG Key ID: 2B51652F224037DF
  1. 2
      common/data/src/main/java/org/thingsboard/server/common/data/tenant/profile/DefaultTenantProfileConfiguration.java
  2. 56
      dao/src/test/java/org/thingsboard/server/dao/service/validator/TenantProfileDataValidatorTest.java

2
common/data/src/main/java/org/thingsboard/server/common/data/tenant/profile/DefaultTenantProfileConfiguration.java

@ -17,6 +17,7 @@ package org.thingsboard.server.common.data.tenant.profile;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -173,6 +174,7 @@ public class DefaultTenantProfileConfiguration implements TenantProfileConfigura
@Schema(example = "10")
private long maxArgumentsPerCF = 10;
@Schema(example = "10")
@PositiveOrZero
private int minAllowedScheduledUpdateIntervalInSecForCF = 10;
@Builder.Default
@Schema(example = "2")

56
dao/src/test/java/org/thingsboard/server/dao/service/validator/TenantProfileDataValidatorTest.java

@ -16,29 +16,35 @@
package org.thingsboard.server.dao.service.validator;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;
import org.thingsboard.server.common.data.TenantProfile;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.tenant.profile.DefaultTenantProfileConfiguration;
import org.thingsboard.server.common.data.tenant.profile.TenantProfileData;
import org.thingsboard.server.dao.tenant.TenantProfileDao;
import org.thingsboard.server.dao.tenant.TenantProfileService;
import org.thingsboard.server.exception.DataValidationException;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Mockito.verify;
@SpringBootTest(classes = TenantProfileDataValidator.class)
class TenantProfileDataValidatorTest {
@MockBean
@MockitoBean
TenantProfileDao tenantProfileDao;
@MockBean
@MockitoBean
TenantProfileService tenantProfileService;
@SpyBean
@MockitoSpyBean
TenantProfileDataValidator validator;
TenantId tenantId = TenantId.fromUUID(UUID.fromString("9ef79cdf-37a8-4119-b682-2e7ed4e018da"));
@Test
@ -53,4 +59,44 @@ class TenantProfileDataValidatorTest {
verify(validator).validateString("Tenant profile name", tenantProfile.getName());
}
@ParameterizedTest
@ValueSource(ints = {-1, -100, Integer.MIN_VALUE})
void minAllowedScheduledUpdateIntervalInSecForCF_shouldRejectNegativeValues(int value) {
// GIVEN
var config = new DefaultTenantProfileConfiguration();
config.setMinAllowedScheduledUpdateIntervalInSecForCF(value);
var tenantProfileData = new TenantProfileData();
tenantProfileData.setConfiguration(config);
var tenantProfile = new TenantProfile();
tenantProfile.setName("Test");
tenantProfile.setProfileData(tenantProfileData);
// WHEN/THEN
assertThatThrownBy(() -> validator.validate(tenantProfile, __ -> TenantId.SYS_TENANT_ID))
.isInstanceOf(DataValidationException.class)
.hasMessageContaining("minAllowedScheduledUpdateIntervalInSecForCF")
.hasMessageContaining("must be greater than or equal to 0");
}
@ParameterizedTest
@ValueSource(ints = {0, 1, 60, Integer.MAX_VALUE})
void minAllowedScheduledUpdateIntervalInSecForCF_shouldAcceptValidValues(int value) {
// GIVEN
var config = new DefaultTenantProfileConfiguration();
config.setMinAllowedScheduledUpdateIntervalInSecForCF(value);
var tenantProfileData = new TenantProfileData();
tenantProfileData.setConfiguration(config);
var tenantProfile = new TenantProfile();
tenantProfile.setName("Test");
tenantProfile.setProfileData(tenantProfileData);
// WHEN/THEN
assertThatCode(() -> validator.validate(tenantProfile, __ -> TenantId.SYS_TENANT_ID))
.doesNotThrowAnyException();
}
}

Loading…
Cancel
Save