|
|
|
@ -55,6 +55,9 @@ import org.thingsboard.server.common.data.relation.RelationTypeGroup; |
|
|
|
import org.thingsboard.server.common.data.security.Authority; |
|
|
|
import org.thingsboard.server.common.data.security.DeviceCredentials; |
|
|
|
import org.thingsboard.server.common.data.security.DeviceCredentialsType; |
|
|
|
import org.thingsboard.server.common.data.sync.ie.importing.csv.BulkImportColumnType; |
|
|
|
import org.thingsboard.server.common.data.sync.ie.importing.csv.BulkImportRequest; |
|
|
|
import org.thingsboard.server.common.data.sync.ie.importing.csv.BulkImportResult; |
|
|
|
import org.thingsboard.server.dao.device.DeviceDao; |
|
|
|
import org.thingsboard.server.dao.exception.DataValidationException; |
|
|
|
import org.thingsboard.server.dao.exception.DeviceCredentialsValidationException; |
|
|
|
@ -1235,6 +1238,66 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest { |
|
|
|
testEntityDaoWithRelationsTransactionalException(deviceDao, savedTenant.getId(), deviceId, "/api/device/" + deviceId); |
|
|
|
} |
|
|
|
|
|
|
|
@Test |
|
|
|
public void testBulkImportDeviceWithoutCredentials() throws Exception { |
|
|
|
String deviceName = "some_device"; |
|
|
|
String deviceType = "some_type"; |
|
|
|
BulkImportRequest request = new BulkImportRequest(); |
|
|
|
request.setFile(String.format("NAME,TYPE\n%s,%s", deviceName, deviceType)); |
|
|
|
BulkImportRequest.Mapping mapping = new BulkImportRequest.Mapping(); |
|
|
|
BulkImportRequest.ColumnMapping name = new BulkImportRequest.ColumnMapping(); |
|
|
|
name.setType(BulkImportColumnType.NAME); |
|
|
|
BulkImportRequest.ColumnMapping type = new BulkImportRequest.ColumnMapping(); |
|
|
|
type.setType(BulkImportColumnType.TYPE); |
|
|
|
List<BulkImportRequest.ColumnMapping> columns = new ArrayList<>(); |
|
|
|
columns.add(name); |
|
|
|
columns.add(type); |
|
|
|
|
|
|
|
mapping.setColumns(columns); |
|
|
|
mapping.setDelimiter(','); |
|
|
|
mapping.setUpdate(true); |
|
|
|
mapping.setHeader(true); |
|
|
|
request.setMapping(mapping); |
|
|
|
|
|
|
|
BulkImportResult<Device> deviceBulkImportResult = doPostWithTypedResponse("/api/device/bulk_import", request, new TypeReference<>() {}); |
|
|
|
|
|
|
|
Assert.assertEquals(1, deviceBulkImportResult.getCreated().get()); |
|
|
|
Assert.assertEquals(0, deviceBulkImportResult.getErrors().get()); |
|
|
|
Assert.assertEquals(0, deviceBulkImportResult.getUpdated().get()); |
|
|
|
Assert.assertTrue(deviceBulkImportResult.getErrorsList().isEmpty()); |
|
|
|
|
|
|
|
Device savedDevice = doGet("/api/tenant/devices?deviceName=" + deviceName, Device.class); |
|
|
|
|
|
|
|
Assert.assertNotNull(savedDevice); |
|
|
|
Assert.assertEquals(deviceName, savedDevice.getName()); |
|
|
|
Assert.assertEquals(deviceType, savedDevice.getType()); |
|
|
|
|
|
|
|
DeviceCredentials savedCredentials = |
|
|
|
doGet("/api/device/" + savedDevice.getId().getId() + "/credentials", DeviceCredentials.class); |
|
|
|
|
|
|
|
Assert.assertNotNull(savedCredentials); |
|
|
|
Assert.assertNotNull(savedCredentials.getId()); |
|
|
|
Assert.assertEquals(savedDevice.getId(), savedCredentials.getDeviceId()); |
|
|
|
Assert.assertEquals(DeviceCredentialsType.ACCESS_TOKEN, savedCredentials.getCredentialsType()); |
|
|
|
Assert.assertNotNull(savedCredentials.getCredentialsId()); |
|
|
|
Assert.assertEquals(20, savedCredentials.getCredentialsId().length()); |
|
|
|
|
|
|
|
deviceBulkImportResult = doPostWithTypedResponse("/api/device/bulk_import", request, new TypeReference<>() {}); |
|
|
|
|
|
|
|
Assert.assertEquals(0, deviceBulkImportResult.getCreated().get()); |
|
|
|
Assert.assertEquals(0, deviceBulkImportResult.getErrors().get()); |
|
|
|
Assert.assertEquals(1, deviceBulkImportResult.getUpdated().get()); |
|
|
|
Assert.assertTrue(deviceBulkImportResult.getErrorsList().isEmpty()); |
|
|
|
|
|
|
|
Device updatedDevice = doGet("/api/device/" + savedDevice.getId().getId(), Device.class); |
|
|
|
Assert.assertEquals(savedDevice, updatedDevice); |
|
|
|
|
|
|
|
DeviceCredentials updatedCredentials = |
|
|
|
doGet("/api/device/" + savedDevice.getId().getId() + "/credentials", DeviceCredentials.class); |
|
|
|
|
|
|
|
Assert.assertEquals(savedCredentials, updatedCredentials); |
|
|
|
} |
|
|
|
|
|
|
|
private Device createDevice(String name) { |
|
|
|
Device device = new Device(); |
|
|
|
device.setName(name); |
|
|
|
|