fix_bug: lwm2m Bootstrap ShortServerId must not be less than 0 and more than 65535! add test
This commit is contained in:
parent
242b0019a2
commit
8420de0cb4
@ -327,12 +327,20 @@ public class DeviceProfileDataValidator extends AbstractHasOtaPackageValidator<D
|
|||||||
if (!isBootstrapServerUpdateEnable && serverConfig.isBootstrapServerIs()) {
|
if (!isBootstrapServerUpdateEnable && serverConfig.isBootstrapServerIs()) {
|
||||||
throw new DeviceCredentialsValidationException("Bootstrap config must not include \"Bootstrap Server\". \"Include Bootstrap Server updates\" is " + isBootstrapServerUpdateEnable + ".");
|
throw new DeviceCredentialsValidationException("Bootstrap config must not include \"Bootstrap Server\". \"Include Bootstrap Server updates\" is " + isBootstrapServerUpdateEnable + ".");
|
||||||
}
|
}
|
||||||
if (!serverConfig.isBootstrapServerIs() && (serverConfig.getShortServerId() < 1 || serverConfig.getShortServerId() > 65534)) {
|
|
||||||
throw new DeviceCredentialsValidationException("LwM2M Server ShortServerId must not be less than 1 and more than 65534!");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (serverConfig.isBootstrapServerIs() && (serverConfig.getShortServerId() < 0 || serverConfig.getShortServerId() > 65535)) {
|
if (serverConfig.getShortServerId() != null) {
|
||||||
throw new DeviceCredentialsValidationException("Bootstrap Server ShortServerId must not be less than 0 and more than 65535!");
|
if (serverConfig.isBootstrapServerIs()){
|
||||||
|
if(serverConfig.getShortServerId() < 0 || serverConfig.getShortServerId() > 65535){
|
||||||
|
throw new DeviceCredentialsValidationException("Bootstrap Server ShortServerId must be in range [0 - 65535]!");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (serverConfig.getShortServerId() < 1 || serverConfig.getShortServerId() > 65534) {
|
||||||
|
throw new DeviceCredentialsValidationException("LwM2M Server ShortServerId must be in range [1 - 65534]!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String serverName = serverConfig.isBootstrapServerIs() ? "Bootstrap Server" : "LwM2M Server";
|
||||||
|
throw new DeviceCredentialsValidationException(serverName + " ShortServerId must not be null!");
|
||||||
}
|
}
|
||||||
|
|
||||||
String server = serverConfig.isBootstrapServerIs() ? "Bootstrap Server" : "LwM2M Server";
|
String server = serverConfig.isBootstrapServerIs() ? "Bootstrap Server" : "LwM2M Server";
|
||||||
|
|||||||
@ -20,11 +20,18 @@ import org.junit.jupiter.api.Test;
|
|||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
import org.springframework.boot.test.mock.mockito.SpyBean;
|
import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||||
|
import org.thingsboard.common.util.JacksonUtil;
|
||||||
import org.thingsboard.server.common.data.DeviceProfile;
|
import org.thingsboard.server.common.data.DeviceProfile;
|
||||||
import org.thingsboard.server.common.data.DeviceProfileType;
|
import org.thingsboard.server.common.data.DeviceProfileType;
|
||||||
import org.thingsboard.server.common.data.DeviceTransportType;
|
import org.thingsboard.server.common.data.DeviceTransportType;
|
||||||
import org.thingsboard.server.common.data.device.profile.DefaultDeviceProfileTransportConfiguration;
|
import org.thingsboard.server.common.data.device.profile.DefaultDeviceProfileTransportConfiguration;
|
||||||
import org.thingsboard.server.common.data.device.profile.DeviceProfileData;
|
import org.thingsboard.server.common.data.device.profile.DeviceProfileData;
|
||||||
|
import org.thingsboard.server.common.data.device.profile.Lwm2mDeviceProfileTransportConfiguration;
|
||||||
|
import org.thingsboard.server.common.data.device.profile.lwm2m.OtherConfiguration;
|
||||||
|
import org.thingsboard.server.common.data.device.profile.lwm2m.TelemetryMappingConfiguration;
|
||||||
|
import org.thingsboard.server.common.data.device.profile.lwm2m.bootstrap.AbstractLwM2MBootstrapServerCredential;
|
||||||
|
import org.thingsboard.server.common.data.device.profile.lwm2m.bootstrap.LwM2MBootstrapServerCredential;
|
||||||
|
import org.thingsboard.server.common.data.device.profile.lwm2m.bootstrap.NoSecLwM2MBootstrapServerCredential;
|
||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.dao.dashboard.DashboardService;
|
import org.thingsboard.server.dao.dashboard.DashboardService;
|
||||||
import org.thingsboard.server.dao.device.DeviceDao;
|
import org.thingsboard.server.dao.device.DeviceDao;
|
||||||
@ -34,6 +41,8 @@ import org.thingsboard.server.dao.queue.QueueService;
|
|||||||
import org.thingsboard.server.dao.rule.RuleChainService;
|
import org.thingsboard.server.dao.rule.RuleChainService;
|
||||||
import org.thingsboard.server.dao.tenant.TenantService;
|
import org.thingsboard.server.dao.tenant.TenantService;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import static org.mockito.BDDMockito.willReturn;
|
import static org.mockito.BDDMockito.willReturn;
|
||||||
@ -42,6 +51,34 @@ import static org.mockito.Mockito.verify;
|
|||||||
@SpringBootTest(classes = DeviceProfileDataValidator.class)
|
@SpringBootTest(classes = DeviceProfileDataValidator.class)
|
||||||
class DeviceProfileDataValidatorTest {
|
class DeviceProfileDataValidatorTest {
|
||||||
|
|
||||||
|
private static final String OBSERVE_ATTRIBUTES_WITHOUT_PARAMS =
|
||||||
|
" {\n" +
|
||||||
|
" \"keyName\": {},\n" +
|
||||||
|
" \"observe\": [],\n" +
|
||||||
|
" \"attribute\": [],\n" +
|
||||||
|
" \"telemetry\": [],\n" +
|
||||||
|
" \"attributeLwm2m\": {}\n" +
|
||||||
|
" }";
|
||||||
|
|
||||||
|
public static final String CLIENT_LWM2M_SETTINGS =
|
||||||
|
" {\n" +
|
||||||
|
" \"edrxCycle\": null,\n" +
|
||||||
|
" \"powerMode\": \"DRX\",\n" +
|
||||||
|
" \"fwUpdateResource\": null,\n" +
|
||||||
|
" \"fwUpdateStrategy\": 1,\n" +
|
||||||
|
" \"psmActivityTimer\": null,\n" +
|
||||||
|
" \"swUpdateResource\": null,\n" +
|
||||||
|
" \"swUpdateStrategy\": 1,\n" +
|
||||||
|
" \"pagingTransmissionWindow\": null,\n" +
|
||||||
|
" \"clientOnlyObserveAfterConnect\": 1\n" +
|
||||||
|
" }";
|
||||||
|
|
||||||
|
private static final String host = "localhost";
|
||||||
|
private static final String hostBs = "localhost";
|
||||||
|
|
||||||
|
private static final int port = 5685;
|
||||||
|
private static final int portBs = 5687;
|
||||||
|
|
||||||
@MockBean
|
@MockBean
|
||||||
DeviceProfileDao deviceProfileDao;
|
DeviceProfileDao deviceProfileDao;
|
||||||
@MockBean
|
@MockBean
|
||||||
@ -79,5 +116,56 @@ class DeviceProfileDataValidatorTest {
|
|||||||
validator.validateDataImpl(tenantId, deviceProfile);
|
validator.validateDataImpl(tenantId, deviceProfile);
|
||||||
verify(validator).validateString("Device profile name", deviceProfile.getName());
|
verify(validator).validateString("Device profile name", deviceProfile.getName());
|
||||||
}
|
}
|
||||||
|
@Test
|
||||||
|
void testValidateDeviceProfile_Lwm2mBootstrap_ShortServerId_Ok() {
|
||||||
|
Integer shortServerId = 123;
|
||||||
|
Integer shortServerIdBs = 0;
|
||||||
|
Lwm2mDeviceProfileTransportConfiguration transportConfiguration =
|
||||||
|
getTransportConfiguration(OBSERVE_ATTRIBUTES_WITHOUT_PARAMS, getBootstrapServerCredentialsNoSec(shortServerId, shortServerIdBs));
|
||||||
|
DeviceProfile deviceProfile = getDeviceProfile(transportConfiguration);
|
||||||
|
|
||||||
|
validator.validateDataImpl(tenantId, deviceProfile);
|
||||||
|
verify(validator).validateString("Device profile name", deviceProfile.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
private DeviceProfile getDeviceProfile(Lwm2mDeviceProfileTransportConfiguration transportConfiguration) {
|
||||||
|
DeviceProfile deviceProfile = new DeviceProfile();
|
||||||
|
deviceProfile.setName("default");
|
||||||
|
deviceProfile.setType(DeviceProfileType.DEFAULT);
|
||||||
|
deviceProfile.setTransportType(DeviceTransportType.LWM2M);
|
||||||
|
DeviceProfileData data = new DeviceProfileData();
|
||||||
|
data.setTransportConfiguration(transportConfiguration);
|
||||||
|
deviceProfile.setProfileData(data);
|
||||||
|
deviceProfile.setTenantId(tenantId);
|
||||||
|
return deviceProfile;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Lwm2mDeviceProfileTransportConfiguration getTransportConfiguration(String observeAttr, List<LwM2MBootstrapServerCredential> bootstrapServerCredentials) {
|
||||||
|
Lwm2mDeviceProfileTransportConfiguration transportConfiguration = new Lwm2mDeviceProfileTransportConfiguration();
|
||||||
|
TelemetryMappingConfiguration observeAttrConfiguration = JacksonUtil.fromString(observeAttr, TelemetryMappingConfiguration.class);
|
||||||
|
OtherConfiguration clientLwM2mSettings = JacksonUtil.fromString(CLIENT_LWM2M_SETTINGS, OtherConfiguration.class);
|
||||||
|
transportConfiguration.setBootstrapServerUpdateEnable(true);
|
||||||
|
transportConfiguration.setObserveAttr(observeAttrConfiguration);
|
||||||
|
transportConfiguration.setClientLwM2mSettings(clientLwM2mSettings);
|
||||||
|
transportConfiguration.setBootstrap(bootstrapServerCredentials);
|
||||||
|
return transportConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<LwM2MBootstrapServerCredential> getBootstrapServerCredentialsNoSec(Integer shortServerId, Integer shortServerIdBs){
|
||||||
|
List<LwM2MBootstrapServerCredential> bootstrap = new ArrayList<>();
|
||||||
|
bootstrap.add(getBootstrapServerCredentialNoSec(false, shortServerId, shortServerIdBs));
|
||||||
|
bootstrap.add(getBootstrapServerCredentialNoSec(true, shortServerId, shortServerIdBs));
|
||||||
|
return bootstrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
private AbstractLwM2MBootstrapServerCredential getBootstrapServerCredentialNoSec(boolean isBootstrap, Integer shortServerId, Integer shortServerIdBs) {
|
||||||
|
AbstractLwM2MBootstrapServerCredential bootstrapServerCredential = new NoSecLwM2MBootstrapServerCredential();
|
||||||
|
bootstrapServerCredential.setServerPublicKey("");
|
||||||
|
bootstrapServerCredential.setShortServerId(isBootstrap ? shortServerIdBs : shortServerId);
|
||||||
|
bootstrapServerCredential.setBootstrapServerIs(isBootstrap);
|
||||||
|
bootstrapServerCredential.setHost(isBootstrap ? hostBs : host);
|
||||||
|
bootstrapServerCredential.setPort(isBootstrap ? portBs : port);
|
||||||
|
return bootstrapServerCredential;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user