|
|
|
@ -15,6 +15,7 @@ |
|
|
|
*/ |
|
|
|
package org.thingsboard.server.transport.mqtt.mqttv3.provision; |
|
|
|
|
|
|
|
import com.fasterxml.jackson.databind.JsonNode; |
|
|
|
import io.netty.handler.codec.mqtt.MqttQoS; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.junit.Assert; |
|
|
|
@ -76,6 +77,11 @@ public class MqttProvisionProtoDeviceTest extends AbstractMqttIntegrationTest { |
|
|
|
processTestProvisioningCreateNewDeviceWithoutCredentials(); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testProvisioningCreateNewGatewayDevice() throws Exception { |
|
|
|
processTestProvisioningCreateNewGatewayDevice(); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testProvisioningCreateNewDeviceWithAccessToken() throws Exception { |
|
|
|
processTestProvisioningCreateNewDeviceWithAccessToken(); |
|
|
|
@ -130,6 +136,35 @@ public class MqttProvisionProtoDeviceTest extends AbstractMqttIntegrationTest { |
|
|
|
Assert.assertEquals(ProvisionResponseStatus.SUCCESS.name(), response.getStatus().name()); |
|
|
|
} |
|
|
|
|
|
|
|
protected void processTestProvisioningCreateNewGatewayDevice() throws Exception { |
|
|
|
MqttTestConfigProperties configProperties = MqttTestConfigProperties.builder() |
|
|
|
.deviceName("Test Provision gateway device") |
|
|
|
.transportPayloadType(TransportPayloadType.PROTOBUF) |
|
|
|
.provisionType(DeviceProfileProvisionType.ALLOW_CREATE_NEW_DEVICES) |
|
|
|
.provisionKey("testProvisionKey") |
|
|
|
.provisionSecret("testProvisionSecret") |
|
|
|
.build(); |
|
|
|
processBeforeTest(configProperties); |
|
|
|
|
|
|
|
byte[] provisionRequestMsg = createTestsProvisionMessage(null, null, true); |
|
|
|
byte[] responseBytesMsg = createMqttClientAndPublish(provisionRequestMsg); |
|
|
|
ProvisionDeviceResponseMsg response = ProvisionDeviceResponseMsg.parseFrom(responseBytesMsg); |
|
|
|
|
|
|
|
Device createdDevice = deviceService.findDeviceByTenantIdAndName(tenantId, "Test Provision gateway device"); |
|
|
|
|
|
|
|
Assert.assertNotNull(createdDevice); |
|
|
|
|
|
|
|
JsonNode additionalInfo = createdDevice.getAdditionalInfo(); |
|
|
|
Assert.assertNotNull(additionalInfo); |
|
|
|
Assert.assertTrue(additionalInfo.has("gateway")); |
|
|
|
Assert.assertTrue(additionalInfo.get("gateway").asBoolean()); |
|
|
|
|
|
|
|
DeviceCredentials deviceCredentials = deviceCredentialsService.findDeviceCredentialsByDeviceId(tenantId, createdDevice.getId()); |
|
|
|
|
|
|
|
Assert.assertEquals(deviceCredentials.getCredentialsType().name(), response.getCredentialsType().name()); |
|
|
|
Assert.assertEquals(ProvisionResponseStatus.SUCCESS.name(), response.getStatus().name()); |
|
|
|
} |
|
|
|
|
|
|
|
protected void processTestProvisioningCreateNewDeviceWithAccessToken() throws Exception { |
|
|
|
MqttTestConfigProperties configProperties = MqttTestConfigProperties.builder() |
|
|
|
.deviceName("Test Provision device3") |
|
|
|
@ -280,6 +315,10 @@ public class MqttProvisionProtoDeviceTest extends AbstractMqttIntegrationTest { |
|
|
|
} |
|
|
|
|
|
|
|
protected byte[] createTestsProvisionMessage(CredentialsType credentialsType, CredentialsDataProto credentialsData) throws Exception { |
|
|
|
return createTestsProvisionMessage(credentialsType, credentialsData, false); |
|
|
|
} |
|
|
|
|
|
|
|
protected byte[] createTestsProvisionMessage(CredentialsType credentialsType, CredentialsDataProto credentialsData, boolean isGateway) throws Exception { |
|
|
|
return ProvisionDeviceRequestMsg.newBuilder() |
|
|
|
.setDeviceName("Test Provision device") |
|
|
|
.setCredentialsType(credentialsType != null ? credentialsType : CredentialsType.ACCESS_TOKEN) |
|
|
|
|