Commit ca4e9238c88bb69e2abec04ec8be4a2740d1ead0

Authored by zbeacon
1 parent 6e4c4049

Fix for device provision tests

@@ -15,8 +15,6 @@ @@ -15,8 +15,6 @@
15 */ 15 */
16 package org.thingsboard.server.mqtt.provision; 16 package org.thingsboard.server.mqtt.provision;
17 17
18 -import com.google.gson.JsonObject;  
19 -import com.sun.mail.iap.ByteArray;  
20 import io.netty.handler.codec.mqtt.MqttQoS; 18 import io.netty.handler.codec.mqtt.MqttQoS;
21 import lombok.extern.slf4j.Slf4j; 19 import lombok.extern.slf4j.Slf4j;
22 import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; 20 import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
@@ -35,12 +33,10 @@ import org.thingsboard.server.common.data.device.profile.MqttTopics; @@ -35,12 +33,10 @@ import org.thingsboard.server.common.data.device.profile.MqttTopics;
35 import org.thingsboard.server.common.data.security.DeviceCredentials; 33 import org.thingsboard.server.common.data.security.DeviceCredentials;
36 import org.thingsboard.server.common.data.security.DeviceCredentialsType; 34 import org.thingsboard.server.common.data.security.DeviceCredentialsType;
37 import org.thingsboard.server.common.msg.EncryptionUtil; 35 import org.thingsboard.server.common.msg.EncryptionUtil;
38 -import org.thingsboard.server.common.transport.util.JsonUtils;  
39 import org.thingsboard.server.dao.device.DeviceCredentialsService; 36 import org.thingsboard.server.dao.device.DeviceCredentialsService;
40 import org.thingsboard.server.dao.device.DeviceService; 37 import org.thingsboard.server.dao.device.DeviceService;
41 import org.thingsboard.server.dao.device.provision.ProvisionResponseStatus; 38 import org.thingsboard.server.dao.device.provision.ProvisionResponseStatus;
42 import org.thingsboard.server.dao.util.mapping.JacksonUtil; 39 import org.thingsboard.server.dao.util.mapping.JacksonUtil;
43 -import org.thingsboard.server.gen.transport.TransportProtos;  
44 import org.thingsboard.server.gen.transport.TransportProtos.CredentialsDataProto; 40 import org.thingsboard.server.gen.transport.TransportProtos.CredentialsDataProto;
45 import org.thingsboard.server.gen.transport.TransportProtos.CredentialsType; 41 import org.thingsboard.server.gen.transport.TransportProtos.CredentialsType;
46 import org.thingsboard.server.gen.transport.TransportProtos.ProvisionDeviceCredentialsMsg; 42 import org.thingsboard.server.gen.transport.TransportProtos.ProvisionDeviceCredentialsMsg;
@@ -129,7 +125,7 @@ public abstract class AbstractMqttProvisionProtoDeviceTest extends AbstractMqttI @@ -129,7 +125,7 @@ public abstract class AbstractMqttProvisionProtoDeviceTest extends AbstractMqttI
129 } 125 }
130 126
131 protected void processTestProvisioningCreateNewDeviceWithAccessToken() throws Exception { 127 protected void processTestProvisioningCreateNewDeviceWithAccessToken() throws Exception {
132 - super.processBeforeTest("Test Provision device3", "Test Provision gateway", TransportPayloadType.JSON, null, null, DeviceProfileProvisionType.ALLOW_CREATE_NEW_DEVICES, "testProvisionKey", "testProvisionSecret"); 128 + super.processBeforeTest("Test Provision device3", "Test Provision gateway", TransportPayloadType.PROTOBUF, null, null, DeviceProfileProvisionType.ALLOW_CREATE_NEW_DEVICES, "testProvisionKey", "testProvisionSecret");
133 CredentialsDataProto requestCredentials = CredentialsDataProto.newBuilder().setValidateDeviceTokenRequestMsg(ValidateDeviceTokenRequestMsg.newBuilder().setToken("test_token").build()).build(); 129 CredentialsDataProto requestCredentials = CredentialsDataProto.newBuilder().setValidateDeviceTokenRequestMsg(ValidateDeviceTokenRequestMsg.newBuilder().setToken("test_token").build()).build();
134 130
135 ProvisionDeviceResponseMsg response = ProvisionDeviceResponseMsg.parseFrom(createMqttClientAndPublish(createTestsProvisionMessage(CredentialsType.ACCESS_TOKEN, requestCredentials)).getPayloadBytes()); 131 ProvisionDeviceResponseMsg response = ProvisionDeviceResponseMsg.parseFrom(createMqttClientAndPublish(createTestsProvisionMessage(CredentialsType.ACCESS_TOKEN, requestCredentials)).getPayloadBytes());
@@ -149,7 +145,7 @@ public abstract class AbstractMqttProvisionProtoDeviceTest extends AbstractMqttI @@ -149,7 +145,7 @@ public abstract class AbstractMqttProvisionProtoDeviceTest extends AbstractMqttI
149 } 145 }
150 146
151 protected void processTestProvisioningCreateNewDeviceWithCert() throws Exception { 147 protected void processTestProvisioningCreateNewDeviceWithCert() throws Exception {
152 - super.processBeforeTest("Test Provision device3", "Test Provision gateway", TransportPayloadType.JSON, null, null, DeviceProfileProvisionType.ALLOW_CREATE_NEW_DEVICES, "testProvisionKey", "testProvisionSecret"); 148 + super.processBeforeTest("Test Provision device3", "Test Provision gateway", TransportPayloadType.PROTOBUF, null, null, DeviceProfileProvisionType.ALLOW_CREATE_NEW_DEVICES, "testProvisionKey", "testProvisionSecret");
153 CredentialsDataProto requestCredentials = CredentialsDataProto.newBuilder().setValidateDeviceX509CertRequestMsg(ValidateDeviceX509CertRequestMsg.newBuilder().setHash("testHash").build()).build(); 149 CredentialsDataProto requestCredentials = CredentialsDataProto.newBuilder().setValidateDeviceX509CertRequestMsg(ValidateDeviceX509CertRequestMsg.newBuilder().setHash("testHash").build()).build();
154 150
155 ProvisionDeviceResponseMsg response = ProvisionDeviceResponseMsg.parseFrom(createMqttClientAndPublish(createTestsProvisionMessage(CredentialsType.X509_CERTIFICATE, requestCredentials)).getPayloadBytes()); 151 ProvisionDeviceResponseMsg response = ProvisionDeviceResponseMsg.parseFrom(createMqttClientAndPublish(createTestsProvisionMessage(CredentialsType.X509_CERTIFICATE, requestCredentials)).getPayloadBytes());
@@ -175,7 +171,7 @@ public abstract class AbstractMqttProvisionProtoDeviceTest extends AbstractMqttI @@ -175,7 +171,7 @@ public abstract class AbstractMqttProvisionProtoDeviceTest extends AbstractMqttI
175 } 171 }
176 172
177 protected void processTestProvisioningCreateNewDeviceWithMqttBasic() throws Exception { 173 protected void processTestProvisioningCreateNewDeviceWithMqttBasic() throws Exception {
178 - super.processBeforeTest("Test Provision device3", "Test Provision gateway", TransportPayloadType.JSON, null, null, DeviceProfileProvisionType.ALLOW_CREATE_NEW_DEVICES, "testProvisionKey", "testProvisionSecret"); 174 + super.processBeforeTest("Test Provision device3", "Test Provision gateway", TransportPayloadType.PROTOBUF, null, null, DeviceProfileProvisionType.ALLOW_CREATE_NEW_DEVICES, "testProvisionKey", "testProvisionSecret");
179 CredentialsDataProto requestCredentials = CredentialsDataProto.newBuilder().setValidateBasicMqttCredRequestMsg( 175 CredentialsDataProto requestCredentials = CredentialsDataProto.newBuilder().setValidateBasicMqttCredRequestMsg(
180 ValidateBasicMqttCredRequestMsg.newBuilder() 176 ValidateBasicMqttCredRequestMsg.newBuilder()
181 .setClientId("test_clientId") 177 .setClientId("test_clientId")
@@ -472,6 +472,7 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe @@ -472,6 +472,7 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
472 } 472 }
473 473
474 @Override 474 @Override
  475 + @CacheEvict(cacheNames = DEVICE_CACHE, key = "{#profile.tenantId, #provisionRequest.deviceName}")
475 @Transactional 476 @Transactional
476 public Device saveDevice(ProvisionRequest provisionRequest, DeviceProfile profile) { 477 public Device saveDevice(ProvisionRequest provisionRequest, DeviceProfile profile) {
477 Device device = new Device(); 478 Device device = new Device();
@@ -485,10 +486,13 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe @@ -485,10 +486,13 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
485 !StringUtils.isEmpty(provisionRequest.getCredentialsData().getPassword()) || 486 !StringUtils.isEmpty(provisionRequest.getCredentialsData().getPassword()) ||
486 !StringUtils.isEmpty(provisionRequest.getCredentialsData().getClientId())) { 487 !StringUtils.isEmpty(provisionRequest.getCredentialsData().getClientId())) {
487 DeviceCredentials deviceCredentials = deviceCredentialsService.findDeviceCredentialsByDeviceId(savedDevice.getTenantId(), savedDevice.getId()); 488 DeviceCredentials deviceCredentials = deviceCredentialsService.findDeviceCredentialsByDeviceId(savedDevice.getTenantId(), savedDevice.getId());
  489 + if (deviceCredentials == null) {
  490 + deviceCredentials = new DeviceCredentials();
  491 + }
  492 + deviceCredentials.setDeviceId(savedDevice.getId());
488 deviceCredentials.setCredentialsType(provisionRequest.getCredentialsType()); 493 deviceCredentials.setCredentialsType(provisionRequest.getCredentialsType());
489 switch (provisionRequest.getCredentialsType()) { 494 switch (provisionRequest.getCredentialsType()) {
490 case ACCESS_TOKEN: 495 case ACCESS_TOKEN:
491 - deviceCredentials.setDeviceId(savedDevice.getId());  
492 deviceCredentials.setCredentialsId(provisionRequest.getCredentialsData().getToken()); 496 deviceCredentials.setCredentialsId(provisionRequest.getCredentialsData().getToken());
493 break; 497 break;
494 case MQTT_BASIC: 498 case MQTT_BASIC:
@@ -502,7 +506,6 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe @@ -502,7 +506,6 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
502 deviceCredentials.setCredentialsValue(provisionRequest.getCredentialsData().getX509CertHash()); 506 deviceCredentials.setCredentialsValue(provisionRequest.getCredentialsData().getX509CertHash());
503 break; 507 break;
504 } 508 }
505 - deviceCredentials.setCredentialsType(provisionRequest.getCredentialsType());  
506 try { 509 try {
507 deviceCredentialsService.updateDeviceCredentials(savedDevice.getTenantId(), deviceCredentials); 510 deviceCredentialsService.updateDeviceCredentials(savedDevice.getTenantId(), deviceCredentials);
508 } catch (Exception e) { 511 } catch (Exception e) {