Merge branch 'fix/deviceWithCredentials' of github.com:YevhenBondarenko/thingsboard into feature/redesign/add-device-dialog-credentials
This commit is contained in:
commit
bdb3c687a0
@ -75,6 +75,7 @@ import org.thingsboard.server.service.security.permission.Operation;
|
||||
import org.thingsboard.server.service.security.permission.Resource;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.validation.Valid;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
@ -210,9 +211,9 @@ public class DeviceController extends BaseController {
|
||||
@RequestMapping(value = "/device-with-credentials", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public Device saveDeviceWithCredentials(@ApiParam(value = "The JSON object with device and credentials. See method description above for example.")
|
||||
@RequestBody SaveDeviceWithCredentialsRequest deviceAndCredentials) throws ThingsboardException {
|
||||
Device device = checkNotNull(deviceAndCredentials.getDevice());
|
||||
DeviceCredentials credentials = checkNotNull(deviceAndCredentials.getCredentials());
|
||||
@Valid @RequestBody SaveDeviceWithCredentialsRequest deviceAndCredentials) throws ThingsboardException {
|
||||
Device device = deviceAndCredentials.getDevice();
|
||||
DeviceCredentials credentials = deviceAndCredentials.getCredentials();
|
||||
device.setTenantId(getCurrentUser().getTenantId());
|
||||
checkEntity(device.getId(), device, Resource.DEVICE);
|
||||
return tbDeviceService.saveDeviceWithCredentials(device, credentials, getCurrentUser());
|
||||
|
||||
@ -244,6 +244,53 @@ public class DeviceControllerTest extends AbstractControllerTest {
|
||||
testNotificationUpdateGatewayOneTime(savedDevice, oldDevice);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSaveDeviceWithCredentials_CredentialsIsNull() throws Exception {
|
||||
Device device = new Device();
|
||||
device.setName("My device");
|
||||
device.setType("default");
|
||||
|
||||
SaveDeviceWithCredentialsRequest saveRequest = new SaveDeviceWithCredentialsRequest(device, null);
|
||||
doPost("/api/device-with-credentials", saveRequest).andExpect(status().isBadRequest())
|
||||
.andExpect(statusReason(containsString("Validation error: credentials must not be null")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSaveDeviceWithCredentials_DeviceIsNull() throws Exception {
|
||||
String testToken = "TEST_TOKEN";
|
||||
|
||||
DeviceCredentials deviceCredentials = new DeviceCredentials();
|
||||
deviceCredentials.setCredentialsType(DeviceCredentialsType.ACCESS_TOKEN);
|
||||
deviceCredentials.setCredentialsId(testToken);
|
||||
|
||||
SaveDeviceWithCredentialsRequest saveRequest = new SaveDeviceWithCredentialsRequest(null, deviceCredentials);
|
||||
doPost("/api/device-with-credentials", saveRequest).andExpect(status().isBadRequest())
|
||||
.andExpect(statusReason(containsString("Validation error: device must not be null")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSaveDeviceWithCredentials_WithExistingName() throws Exception {
|
||||
String testToken = "TEST_TOKEN";
|
||||
|
||||
Device device = new Device();
|
||||
device.setName("My device");
|
||||
device.setType("default");
|
||||
|
||||
DeviceCredentials deviceCredentials = new DeviceCredentials();
|
||||
deviceCredentials.setCredentialsType(DeviceCredentialsType.ACCESS_TOKEN);
|
||||
deviceCredentials.setCredentialsId(testToken);
|
||||
|
||||
SaveDeviceWithCredentialsRequest saveRequest = new SaveDeviceWithCredentialsRequest(device, deviceCredentials);
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService, gatewayNotificationsService);
|
||||
|
||||
Device savedDevice = readResponse(doPost("/api/device-with-credentials", saveRequest).andExpect(status().isOk()), Device.class);
|
||||
Assert.assertNotNull(savedDevice);
|
||||
|
||||
doPost("/api/device-with-credentials", saveRequest).andExpect(status().isBadRequest())
|
||||
.andExpect(statusReason(containsString("Device with such name already exists!")));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveDeviceWithViolationOfValidation() throws Exception {
|
||||
Device device = new Device();
|
||||
|
||||
@ -20,13 +20,17 @@ import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.thingsboard.server.common.data.security.DeviceCredentials;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@ApiModel
|
||||
@Data
|
||||
public class SaveDeviceWithCredentialsRequest {
|
||||
|
||||
@ApiModelProperty(position = 1, value = "The JSON with device entity.", required = true)
|
||||
@NotNull
|
||||
private final Device device;
|
||||
@ApiModelProperty(position = 2, value = "The JSON with credentials entity.", required = true)
|
||||
@NotNull
|
||||
private final DeviceCredentials credentials;
|
||||
|
||||
}
|
||||
|
||||
@ -174,10 +174,6 @@ public class DeviceServiceImpl extends AbstractCachedEntityService<DeviceCacheKe
|
||||
@Transactional
|
||||
@Override
|
||||
public Device saveDeviceWithCredentials(Device device, DeviceCredentials deviceCredentials) {
|
||||
if (device.getId() == null) {
|
||||
Device deviceWithName = this.findDeviceByTenantIdAndName(device.getTenantId(), device.getName());
|
||||
device = deviceWithName == null ? device : deviceWithName.updateDevice(device);
|
||||
}
|
||||
Device savedDevice = this.saveDeviceWithoutCredentials(device, true);
|
||||
deviceCredentials.setDeviceId(savedDevice.getId());
|
||||
if (device.getId() == null) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user