|
|
|
@ -22,6 +22,7 @@ import org.junit.Assert; |
|
|
|
import org.junit.Test; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.thingsboard.common.util.JacksonUtil; |
|
|
|
import org.thingsboard.server.common.data.DataConstants; |
|
|
|
import org.thingsboard.server.common.data.Device; |
|
|
|
import org.thingsboard.server.common.data.DeviceProfileProvisionType; |
|
|
|
import org.thingsboard.server.common.data.TransportPayloadType; |
|
|
|
@ -68,6 +69,11 @@ public class MqttProvisionJsonDeviceTest extends AbstractMqttIntegrationTest { |
|
|
|
processTestProvisioningCreateNewDeviceWithoutCredentials(); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testProvisioningCreateNewGatewayDevice() throws Exception { |
|
|
|
processTestProvisioningCreateNewGatewayDevice(); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testProvisioningCreateNewDeviceWithAccessToken() throws Exception { |
|
|
|
processTestProvisioningCreateNewDeviceWithAccessToken(); |
|
|
|
@ -130,6 +136,37 @@ public class MqttProvisionJsonDeviceTest extends AbstractMqttIntegrationTest { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected void processTestProvisioningCreateNewGatewayDevice() throws Exception { |
|
|
|
MqttTestConfigProperties configProperties = MqttTestConfigProperties.builder() |
|
|
|
.deviceName("Test Provision device3") |
|
|
|
.transportPayloadType(TransportPayloadType.JSON) |
|
|
|
.provisionType(DeviceProfileProvisionType.ALLOW_CREATE_NEW_DEVICES) |
|
|
|
.provisionKey("testProvisionKey") |
|
|
|
.provisionSecret("testProvisionSecret") |
|
|
|
.build(); |
|
|
|
super.processBeforeTest(configProperties); |
|
|
|
byte[] result = createMqttClientAndPublish(true); |
|
|
|
JsonNode response = JacksonUtil.fromBytes(result); |
|
|
|
Assert.assertTrue(response.hasNonNull("credentialsType")); |
|
|
|
Assert.assertTrue(response.hasNonNull("status")); |
|
|
|
|
|
|
|
Device createdDevice = deviceService.findDeviceByTenantIdAndName(tenantId, "Test Provision device"); |
|
|
|
|
|
|
|
Assert.assertNotNull(createdDevice); |
|
|
|
|
|
|
|
JsonNode additionalInfo = createdDevice.getAdditionalInfo(); |
|
|
|
Assert.assertNotNull(additionalInfo); |
|
|
|
Assert.assertTrue(additionalInfo.has(DataConstants.GATEWAY_PARAMETER) |
|
|
|
&& additionalInfo.get(DataConstants.GATEWAY_PARAMETER).isBoolean()); |
|
|
|
Assert.assertTrue(additionalInfo.get(DataConstants.GATEWAY_PARAMETER).asBoolean()); |
|
|
|
|
|
|
|
DeviceCredentials deviceCredentials = deviceCredentialsService.findDeviceCredentialsByDeviceId(tenantId, createdDevice.getId()); |
|
|
|
|
|
|
|
Assert.assertEquals(deviceCredentials.getCredentialsType().name(), response.get("credentialsType").asText()); |
|
|
|
Assert.assertEquals(ProvisionResponseStatus.SUCCESS.name(), response.get("status").asText()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected void processTestProvisioningCreateNewDeviceWithAccessToken() throws Exception { |
|
|
|
MqttTestConfigProperties configProperties = MqttTestConfigProperties.builder() |
|
|
|
.deviceName("Test Provision device3") |
|
|
|
@ -264,11 +301,19 @@ public class MqttProvisionJsonDeviceTest extends AbstractMqttIntegrationTest { |
|
|
|
} |
|
|
|
|
|
|
|
protected byte[] createMqttClientAndPublish() throws Exception { |
|
|
|
return createMqttClientAndPublish(""); |
|
|
|
return createMqttClientAndPublish(false); |
|
|
|
} |
|
|
|
|
|
|
|
protected byte[] createMqttClientAndPublish(boolean isGateway) throws Exception { |
|
|
|
return createMqttClientAndPublish("", isGateway); |
|
|
|
} |
|
|
|
|
|
|
|
protected byte[] createMqttClientAndPublish(String deviceCredentials) throws Exception { |
|
|
|
String provisionRequestMsg = createTestProvisionMessage(deviceCredentials); |
|
|
|
return createMqttClientAndPublish(deviceCredentials, false); |
|
|
|
} |
|
|
|
|
|
|
|
protected byte[] createMqttClientAndPublish(String deviceCredentials, boolean isGateway) throws Exception { |
|
|
|
String provisionRequestMsg = createTestProvisionMessage(deviceCredentials, isGateway); |
|
|
|
MqttTestClient client = new MqttTestClient(); |
|
|
|
client.connectAndWait("provision"); |
|
|
|
MqttTestCallback onProvisionCallback = new MqttTestSubscribeOnTopicCallback(DEVICE_PROVISION_RESPONSE_TOPIC); |
|
|
|
@ -280,7 +325,12 @@ public class MqttProvisionJsonDeviceTest extends AbstractMqttIntegrationTest { |
|
|
|
return onProvisionCallback.getPayloadBytes(); |
|
|
|
} |
|
|
|
|
|
|
|
protected String createTestProvisionMessage(String deviceCredentials) { |
|
|
|
return "{\"deviceName\":\"Test Provision device\",\"provisionDeviceKey\":\"testProvisionKey\", \"provisionDeviceSecret\":\"testProvisionSecret\"" + deviceCredentials + "}"; |
|
|
|
protected String createTestProvisionMessage(String deviceCredentials, boolean isGateway) { |
|
|
|
String request = "{\"deviceName\":\"Test Provision device\",\"provisionDeviceKey\":\"testProvisionKey\", \"provisionDeviceSecret\":\"testProvisionSecret\"" + deviceCredentials; |
|
|
|
if (isGateway) { |
|
|
|
request += ",\"gateway\":true"; |
|
|
|
} |
|
|
|
request += "}"; |
|
|
|
return request; |
|
|
|
} |
|
|
|
} |
|
|
|
|