fixes
This commit is contained in:
parent
ac007bea24
commit
a167b39b44
@ -79,8 +79,14 @@ import java.util.Comparator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
|
import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
|
||||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch;
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;
|
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;
|
||||||
|
|
||||||
@ActiveProfiles("test")
|
@ActiveProfiles("test")
|
||||||
@ -221,6 +227,7 @@ public abstract class AbstractControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Tenant savedDifferentTenant;
|
private Tenant savedDifferentTenant;
|
||||||
|
|
||||||
protected void loginDifferentTenant() throws Exception {
|
protected void loginDifferentTenant() throws Exception {
|
||||||
loginSysAdmin();
|
loginSysAdmin();
|
||||||
Tenant tenant = new Tenant();
|
Tenant tenant = new Tenant();
|
||||||
@ -316,6 +323,10 @@ public abstract class AbstractControllerTest {
|
|||||||
return readResponse(doGet(urlTemplate, urlVariables).andExpect(status().isOk()), responseClass);
|
return readResponse(doGet(urlTemplate, urlVariables).andExpect(status().isOk()), responseClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected <T> T doGet(String urlTemplate, Class<T> responseClass, ResultMatcher resultMatcher, Object... urlVariables) throws Exception {
|
||||||
|
return readResponse(doGet(urlTemplate, urlVariables).andExpect(resultMatcher), responseClass);
|
||||||
|
}
|
||||||
|
|
||||||
protected <T> T doGetAsync(String urlTemplate, Class<T> responseClass, Object... urlVariables) throws Exception {
|
protected <T> T doGetAsync(String urlTemplate, Class<T> responseClass, Object... urlVariables) throws Exception {
|
||||||
return readResponse(doGetAsync(urlTemplate, urlVariables).andExpect(status().isOk()), responseClass);
|
return readResponse(doGetAsync(urlTemplate, urlVariables).andExpect(status().isOk()), responseClass);
|
||||||
}
|
}
|
||||||
@ -357,9 +368,9 @@ public abstract class AbstractControllerTest {
|
|||||||
return readResponse(doGet(urlTemplate, vars).andExpect(status().isOk()), responseType);
|
return readResponse(doGet(urlTemplate, vars).andExpect(status().isOk()), responseType);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> T doGetTypedWithTimePageLink(String urlTemplate, TypeReference<T> responseType,
|
protected <T> T doGetTypedWithTimePageLink(String urlTemplate, TypeReference<T> responseType,
|
||||||
TimePageLink pageLink,
|
TimePageLink pageLink,
|
||||||
Object... urlVariables) throws Exception {
|
Object... urlVariables) throws Exception {
|
||||||
List<Object> pageLinkVariables = new ArrayList<>();
|
List<Object> pageLinkVariables = new ArrayList<>();
|
||||||
urlTemplate += "limit={limit}";
|
urlTemplate += "limit={limit}";
|
||||||
pageLinkVariables.add(pageLink.getLimit());
|
pageLinkVariables.add(pageLink.getLimit());
|
||||||
@ -425,7 +436,7 @@ public abstract class AbstractControllerTest {
|
|||||||
return mockMvc.perform(postRequest);
|
return mockMvc.perform(postRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <T> ResultActions doPostAsync(String urlTemplate, T content, Long timeout, String... params) throws Exception {
|
protected <T> ResultActions doPostAsync(String urlTemplate, T content, Long timeout, String... params) throws Exception {
|
||||||
MockHttpServletRequestBuilder postRequest = post(urlTemplate);
|
MockHttpServletRequestBuilder postRequest = post(urlTemplate);
|
||||||
setJwtToken(postRequest);
|
setJwtToken(postRequest);
|
||||||
String json = json(content);
|
String json = json(content);
|
||||||
|
|||||||
@ -15,74 +15,79 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.controller;
|
package org.thingsboard.server.controller;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.containsString;
|
|
||||||
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.datastax.driver.core.utils.UUIDs;
|
import com.datastax.driver.core.utils.UUIDs;
|
||||||
|
import com.fasterxml.jackson.core.type.TypeReference;
|
||||||
import org.apache.commons.lang3.RandomStringUtils;
|
import org.apache.commons.lang3.RandomStringUtils;
|
||||||
import org.thingsboard.server.common.data.*;
|
import org.junit.After;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.thingsboard.server.common.data.Customer;
|
||||||
|
import org.thingsboard.server.common.data.Device;
|
||||||
|
import org.thingsboard.server.common.data.EntitySubtype;
|
||||||
|
import org.thingsboard.server.common.data.Tenant;
|
||||||
|
import org.thingsboard.server.common.data.User;
|
||||||
import org.thingsboard.server.common.data.id.CustomerId;
|
import org.thingsboard.server.common.data.id.CustomerId;
|
||||||
import org.thingsboard.server.common.data.id.DeviceCredentialsId;
|
import org.thingsboard.server.common.data.id.DeviceCredentialsId;
|
||||||
import org.thingsboard.server.common.data.id.DeviceId;
|
import org.thingsboard.server.common.data.id.DeviceId;
|
||||||
import org.thingsboard.server.common.data.page.TextPageData;
|
import org.thingsboard.server.common.data.page.TextPageData;
|
||||||
import org.thingsboard.server.common.data.page.TextPageLink;
|
import org.thingsboard.server.common.data.page.TextPageLink;
|
||||||
|
import org.thingsboard.server.common.data.relation.EntityRelation;
|
||||||
|
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
|
||||||
import org.thingsboard.server.common.data.security.Authority;
|
import org.thingsboard.server.common.data.security.Authority;
|
||||||
import org.thingsboard.server.common.data.security.DeviceCredentials;
|
import org.thingsboard.server.common.data.security.DeviceCredentials;
|
||||||
import org.thingsboard.server.common.data.security.DeviceCredentialsType;
|
import org.thingsboard.server.common.data.security.DeviceCredentialsType;
|
||||||
import org.thingsboard.server.dao.model.ModelConstants;
|
import org.thingsboard.server.dao.model.ModelConstants;
|
||||||
import org.junit.After;
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.containsString;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
|
import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
|
||||||
|
|
||||||
public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||||
|
|
||||||
private IdComparator<Device> idComparator = new IdComparator<>();
|
private IdComparator<Device> idComparator = new IdComparator<>();
|
||||||
|
|
||||||
private Tenant savedTenant;
|
private Tenant savedTenant;
|
||||||
private User tenantAdmin;
|
private User tenantAdmin;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void beforeTest() throws Exception {
|
public void beforeTest() throws Exception {
|
||||||
loginSysAdmin();
|
loginSysAdmin();
|
||||||
|
|
||||||
Tenant tenant = new Tenant();
|
Tenant tenant = new Tenant();
|
||||||
tenant.setTitle("My tenant");
|
tenant.setTitle("My tenant");
|
||||||
savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
||||||
Assert.assertNotNull(savedTenant);
|
Assert.assertNotNull(savedTenant);
|
||||||
|
|
||||||
tenantAdmin = new User();
|
tenantAdmin = new User();
|
||||||
tenantAdmin.setAuthority(Authority.TENANT_ADMIN);
|
tenantAdmin.setAuthority(Authority.TENANT_ADMIN);
|
||||||
tenantAdmin.setTenantId(savedTenant.getId());
|
tenantAdmin.setTenantId(savedTenant.getId());
|
||||||
tenantAdmin.setEmail("tenant2@thingsboard.org");
|
tenantAdmin.setEmail("tenant2@thingsboard.org");
|
||||||
tenantAdmin.setFirstName("Joe");
|
tenantAdmin.setFirstName("Joe");
|
||||||
tenantAdmin.setLastName("Downs");
|
tenantAdmin.setLastName("Downs");
|
||||||
|
|
||||||
tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1");
|
tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1");
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void afterTest() throws Exception {
|
public void afterTest() throws Exception {
|
||||||
loginSysAdmin();
|
loginSysAdmin();
|
||||||
|
|
||||||
doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSaveDevice() throws Exception {
|
public void testSaveDevice() throws Exception {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device");
|
device.setName("My device");
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
|
|
||||||
Assert.assertNotNull(savedDevice);
|
Assert.assertNotNull(savedDevice);
|
||||||
Assert.assertNotNull(savedDevice.getId());
|
Assert.assertNotNull(savedDevice.getId());
|
||||||
Assert.assertTrue(savedDevice.getCreatedTime() > 0);
|
Assert.assertTrue(savedDevice.getCreatedTime() > 0);
|
||||||
@ -90,9 +95,9 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
Assert.assertNotNull(savedDevice.getCustomerId());
|
Assert.assertNotNull(savedDevice.getCustomerId());
|
||||||
Assert.assertEquals(NULL_UUID, savedDevice.getCustomerId().getId());
|
Assert.assertEquals(NULL_UUID, savedDevice.getCustomerId().getId());
|
||||||
Assert.assertEquals(device.getName(), savedDevice.getName());
|
Assert.assertEquals(device.getName(), savedDevice.getName());
|
||||||
|
|
||||||
DeviceCredentials deviceCredentials =
|
DeviceCredentials deviceCredentials =
|
||||||
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
||||||
|
|
||||||
Assert.assertNotNull(deviceCredentials);
|
Assert.assertNotNull(deviceCredentials);
|
||||||
Assert.assertNotNull(deviceCredentials.getId());
|
Assert.assertNotNull(deviceCredentials.getId());
|
||||||
@ -100,10 +105,10 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
Assert.assertEquals(DeviceCredentialsType.ACCESS_TOKEN, deviceCredentials.getCredentialsType());
|
Assert.assertEquals(DeviceCredentialsType.ACCESS_TOKEN, deviceCredentials.getCredentialsType());
|
||||||
Assert.assertNotNull(deviceCredentials.getCredentialsId());
|
Assert.assertNotNull(deviceCredentials.getCredentialsId());
|
||||||
Assert.assertEquals(20, deviceCredentials.getCredentialsId().length());
|
Assert.assertEquals(20, deviceCredentials.getCredentialsId().length());
|
||||||
|
|
||||||
savedDevice.setName("My new device");
|
savedDevice.setName("My new device");
|
||||||
doPost("/api/device", savedDevice, Device.class);
|
doPost("/api/device", savedDevice, Device.class);
|
||||||
|
|
||||||
Device foundDevice = doGet("/api/device/" + savedDevice.getId().getId().toString(), Device.class);
|
Device foundDevice = doGet("/api/device/" + savedDevice.getId().getId().toString(), Device.class);
|
||||||
Assert.assertEquals(foundDevice.getName(), savedDevice.getName());
|
Assert.assertEquals(foundDevice.getName(), savedDevice.getName());
|
||||||
}
|
}
|
||||||
@ -115,10 +120,10 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
device.setType("default");
|
device.setType("default");
|
||||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
loginDifferentTenant();
|
loginDifferentTenant();
|
||||||
doPost("/api/device", savedDevice, Device.class, status().isForbidden());
|
doPost("/api/device", savedDevice, Device.class, status().isNotFound());
|
||||||
deleteDifferentTenant();
|
deleteDifferentTenant();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFindDeviceById() throws Exception {
|
public void testFindDeviceById() throws Exception {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
@ -133,26 +138,27 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testFindDeviceTypesByTenantId() throws Exception {
|
public void testFindDeviceTypesByTenantId() throws Exception {
|
||||||
List<Device> devices = new ArrayList<>();
|
List<Device> devices = new ArrayList<>();
|
||||||
for (int i=0;i<3;i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device B"+i);
|
device.setName("My device B" + i);
|
||||||
device.setType("typeB");
|
device.setType("typeB");
|
||||||
devices.add(doPost("/api/device", device, Device.class));
|
devices.add(doPost("/api/device", device, Device.class));
|
||||||
}
|
}
|
||||||
for (int i=0;i<7;i++) {
|
for (int i = 0; i < 7; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device C"+i);
|
device.setName("My device C" + i);
|
||||||
device.setType("typeC");
|
device.setType("typeC");
|
||||||
devices.add(doPost("/api/device", device, Device.class));
|
devices.add(doPost("/api/device", device, Device.class));
|
||||||
}
|
}
|
||||||
for (int i=0;i<9;i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device A"+i);
|
device.setName("My device A" + i);
|
||||||
device.setType("typeA");
|
device.setType("typeA");
|
||||||
devices.add(doPost("/api/device", device, Device.class));
|
devices.add(doPost("/api/device", device, Device.class));
|
||||||
}
|
}
|
||||||
List<EntitySubtype> deviceTypes = doGetTyped("/api/device/types",
|
List<EntitySubtype> deviceTypes = doGetTyped("/api/device/types",
|
||||||
new TypeReference<List<EntitySubtype>>(){});
|
new TypeReference<List<EntitySubtype>>() {
|
||||||
|
});
|
||||||
|
|
||||||
Assert.assertNotNull(deviceTypes);
|
Assert.assertNotNull(deviceTypes);
|
||||||
Assert.assertEquals(3, deviceTypes.size());
|
Assert.assertEquals(3, deviceTypes.size());
|
||||||
@ -160,19 +166,19 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
Assert.assertEquals("typeB", deviceTypes.get(1).getType());
|
Assert.assertEquals("typeB", deviceTypes.get(1).getType());
|
||||||
Assert.assertEquals("typeC", deviceTypes.get(2).getType());
|
Assert.assertEquals("typeC", deviceTypes.get(2).getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDeleteDevice() throws Exception {
|
public void testDeleteDevice() throws Exception {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device");
|
device.setName("My device");
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
|
|
||||||
doDelete("/api/device/"+savedDevice.getId().getId().toString())
|
|
||||||
.andExpect(status().isOk());
|
|
||||||
|
|
||||||
doGet("/api/device/"+savedDevice.getId().getId().toString())
|
doDelete("/api/device/" + savedDevice.getId().getId().toString())
|
||||||
.andExpect(status().isNotFound());
|
.andExpect(status().isOk());
|
||||||
|
|
||||||
|
doGet("/api/device/" + savedDevice.getId().getId().toString())
|
||||||
|
.andExpect(status().isNotFound());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -189,52 +195,52 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
doPost("/api/device", device)
|
doPost("/api/device", device)
|
||||||
.andExpect(status().isBadRequest())
|
.andExpect(status().isBadRequest())
|
||||||
.andExpect(statusReason(containsString("Device name should be specified")));
|
.andExpect(statusReason(containsString("Device name should be specified")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAssignUnassignDeviceToCustomer() throws Exception {
|
public void testAssignUnassignDeviceToCustomer() throws Exception {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device");
|
device.setName("My device");
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
|
|
||||||
Customer customer = new Customer();
|
Customer customer = new Customer();
|
||||||
customer.setTitle("My customer");
|
customer.setTitle("My customer");
|
||||||
Customer savedCustomer = doPost("/api/customer", customer, Customer.class);
|
Customer savedCustomer = doPost("/api/customer", customer, Customer.class);
|
||||||
|
|
||||||
Device assignedDevice = doPost("/api/customer/" + savedCustomer.getId().getId().toString()
|
Device assignedDevice = doPost("/api/customer/" + savedCustomer.getId().getId().toString()
|
||||||
+ "/device/" + savedDevice.getId().getId().toString(), Device.class);
|
+ "/device/" + savedDevice.getId().getId().toString(), Device.class);
|
||||||
Assert.assertEquals(savedCustomer.getId(), assignedDevice.getCustomerId());
|
Assert.assertEquals(savedCustomer.getId(), assignedDevice.getCustomerId());
|
||||||
|
|
||||||
Device foundDevice = doGet("/api/device/" + savedDevice.getId().getId().toString(), Device.class);
|
Device foundDevice = doGet("/api/device/" + savedDevice.getId().getId().toString(), Device.class);
|
||||||
Assert.assertEquals(savedCustomer.getId(), foundDevice.getCustomerId());
|
Assert.assertEquals(savedCustomer.getId(), foundDevice.getCustomerId());
|
||||||
|
|
||||||
Device unassignedDevice =
|
Device unassignedDevice =
|
||||||
doDelete("/api/customer/device/" + savedDevice.getId().getId().toString(), Device.class);
|
doDelete("/api/customer/device/" + savedDevice.getId().getId().toString(), Device.class);
|
||||||
Assert.assertEquals(ModelConstants.NULL_UUID, unassignedDevice.getCustomerId().getId());
|
Assert.assertEquals(ModelConstants.NULL_UUID, unassignedDevice.getCustomerId().getId());
|
||||||
|
|
||||||
foundDevice = doGet("/api/device/" + savedDevice.getId().getId().toString(), Device.class);
|
foundDevice = doGet("/api/device/" + savedDevice.getId().getId().toString(), Device.class);
|
||||||
Assert.assertEquals(ModelConstants.NULL_UUID, foundDevice.getCustomerId().getId());
|
Assert.assertEquals(ModelConstants.NULL_UUID, foundDevice.getCustomerId().getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAssignDeviceToNonExistentCustomer() throws Exception {
|
public void testAssignDeviceToNonExistentCustomer() throws Exception {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device");
|
device.setName("My device");
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
|
|
||||||
doPost("/api/customer/" + UUIDs.timeBased().toString()
|
doPost("/api/customer/" + UUIDs.timeBased().toString()
|
||||||
+ "/device/" + savedDevice.getId().getId().toString())
|
+ "/device/" + savedDevice.getId().getId().toString())
|
||||||
.andExpect(status().isNotFound());
|
.andExpect(status().isNotFound());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAssignDeviceToCustomerFromDifferentTenant() throws Exception {
|
public void testAssignDeviceToCustomerFromDifferentTenant() throws Exception {
|
||||||
loginSysAdmin();
|
loginSysAdmin();
|
||||||
|
|
||||||
Tenant tenant2 = new Tenant();
|
Tenant tenant2 = new Tenant();
|
||||||
tenant2.setTitle("Different tenant");
|
tenant2.setTitle("Different tenant");
|
||||||
Tenant savedTenant2 = doPost("/api/tenant", tenant2, Tenant.class);
|
Tenant savedTenant2 = doPost("/api/tenant", tenant2, Tenant.class);
|
||||||
@ -246,103 +252,103 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
tenantAdmin2.setEmail("tenant3@thingsboard.org");
|
tenantAdmin2.setEmail("tenant3@thingsboard.org");
|
||||||
tenantAdmin2.setFirstName("Joe");
|
tenantAdmin2.setFirstName("Joe");
|
||||||
tenantAdmin2.setLastName("Downs");
|
tenantAdmin2.setLastName("Downs");
|
||||||
|
|
||||||
tenantAdmin2 = createUserAndLogin(tenantAdmin2, "testPassword1");
|
tenantAdmin2 = createUserAndLogin(tenantAdmin2, "testPassword1");
|
||||||
|
|
||||||
Customer customer = new Customer();
|
Customer customer = new Customer();
|
||||||
customer.setTitle("Different customer");
|
customer.setTitle("Different customer");
|
||||||
Customer savedCustomer = doPost("/api/customer", customer, Customer.class);
|
Customer savedCustomer = doPost("/api/customer", customer, Customer.class);
|
||||||
|
|
||||||
login(tenantAdmin.getEmail(), "testPassword1");
|
login(tenantAdmin.getEmail(), "testPassword1");
|
||||||
|
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device");
|
device.setName("My device");
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
|
|
||||||
doPost("/api/customer/" + savedCustomer.getId().getId().toString()
|
doPost("/api/customer/" + savedCustomer.getId().getId().toString()
|
||||||
+ "/device/" + savedDevice.getId().getId().toString())
|
+ "/device/" + savedDevice.getId().getId().toString())
|
||||||
.andExpect(status().isForbidden());
|
.andExpect(status().isForbidden());
|
||||||
|
|
||||||
loginSysAdmin();
|
loginSysAdmin();
|
||||||
|
|
||||||
doDelete("/api/tenant/"+savedTenant2.getId().getId().toString())
|
doDelete("/api/tenant/" + savedTenant2.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFindDeviceCredentialsByDeviceId() throws Exception {
|
public void testFindDeviceCredentialsByDeviceId() throws Exception {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device");
|
device.setName("My device");
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
DeviceCredentials deviceCredentials =
|
DeviceCredentials deviceCredentials =
|
||||||
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
||||||
Assert.assertEquals(savedDevice.getId(), deviceCredentials.getDeviceId());
|
Assert.assertEquals(savedDevice.getId(), deviceCredentials.getDeviceId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSaveDeviceCredentials() throws Exception {
|
public void testSaveDeviceCredentials() throws Exception {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device");
|
device.setName("My device");
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
DeviceCredentials deviceCredentials =
|
DeviceCredentials deviceCredentials =
|
||||||
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
||||||
Assert.assertEquals(savedDevice.getId(), deviceCredentials.getDeviceId());
|
Assert.assertEquals(savedDevice.getId(), deviceCredentials.getDeviceId());
|
||||||
deviceCredentials.setCredentialsType(DeviceCredentialsType.ACCESS_TOKEN);
|
deviceCredentials.setCredentialsType(DeviceCredentialsType.ACCESS_TOKEN);
|
||||||
deviceCredentials.setCredentialsId("access_token");
|
deviceCredentials.setCredentialsId("access_token");
|
||||||
doPost("/api/device/credentials", deviceCredentials)
|
doPost("/api/device/credentials", deviceCredentials)
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
|
|
||||||
DeviceCredentials foundDeviceCredentials =
|
DeviceCredentials foundDeviceCredentials =
|
||||||
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
||||||
|
|
||||||
Assert.assertEquals(deviceCredentials, foundDeviceCredentials);
|
Assert.assertEquals(deviceCredentials, foundDeviceCredentials);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSaveDeviceCredentialsWithEmptyDevice() throws Exception {
|
public void testSaveDeviceCredentialsWithEmptyDevice() throws Exception {
|
||||||
DeviceCredentials deviceCredentials = new DeviceCredentials();
|
DeviceCredentials deviceCredentials = new DeviceCredentials();
|
||||||
doPost("/api/device/credentials", deviceCredentials)
|
doPost("/api/device/credentials", deviceCredentials)
|
||||||
.andExpect(status().isBadRequest());
|
.andExpect(status().isBadRequest());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSaveDeviceCredentialsWithEmptyCredentialsType() throws Exception {
|
public void testSaveDeviceCredentialsWithEmptyCredentialsType() throws Exception {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device");
|
device.setName("My device");
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
DeviceCredentials deviceCredentials =
|
DeviceCredentials deviceCredentials =
|
||||||
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
||||||
deviceCredentials.setCredentialsType(null);
|
deviceCredentials.setCredentialsType(null);
|
||||||
doPost("/api/device/credentials", deviceCredentials)
|
doPost("/api/device/credentials", deviceCredentials)
|
||||||
.andExpect(status().isBadRequest())
|
.andExpect(status().isBadRequest())
|
||||||
.andExpect(statusReason(containsString("Device credentials type should be specified")));
|
.andExpect(statusReason(containsString("Device credentials type should be specified")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSaveDeviceCredentialsWithEmptyCredentialsId() throws Exception {
|
public void testSaveDeviceCredentialsWithEmptyCredentialsId() throws Exception {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device");
|
device.setName("My device");
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
DeviceCredentials deviceCredentials =
|
DeviceCredentials deviceCredentials =
|
||||||
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
||||||
deviceCredentials.setCredentialsId(null);
|
deviceCredentials.setCredentialsId(null);
|
||||||
doPost("/api/device/credentials", deviceCredentials)
|
doPost("/api/device/credentials", deviceCredentials)
|
||||||
.andExpect(status().isBadRequest())
|
.andExpect(status().isBadRequest())
|
||||||
.andExpect(statusReason(containsString("Device credentials id should be specified")));
|
.andExpect(statusReason(containsString("Device credentials id should be specified")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSaveNonExistentDeviceCredentials() throws Exception {
|
public void testSaveNonExistentDeviceCredentials() throws Exception {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device");
|
device.setName("My device");
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
DeviceCredentials deviceCredentials =
|
DeviceCredentials deviceCredentials =
|
||||||
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
||||||
DeviceCredentials newDeviceCredentials = new DeviceCredentials(new DeviceCredentialsId(UUIDs.timeBased()));
|
DeviceCredentials newDeviceCredentials = new DeviceCredentials(new DeviceCredentialsId(UUIDs.timeBased()));
|
||||||
newDeviceCredentials.setCreatedTime(deviceCredentials.getCreatedTime());
|
newDeviceCredentials.setCreatedTime(deviceCredentials.getCreatedTime());
|
||||||
@ -350,29 +356,29 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
newDeviceCredentials.setCredentialsType(deviceCredentials.getCredentialsType());
|
newDeviceCredentials.setCredentialsType(deviceCredentials.getCredentialsType());
|
||||||
newDeviceCredentials.setCredentialsId(deviceCredentials.getCredentialsId());
|
newDeviceCredentials.setCredentialsId(deviceCredentials.getCredentialsId());
|
||||||
doPost("/api/device/credentials", newDeviceCredentials)
|
doPost("/api/device/credentials", newDeviceCredentials)
|
||||||
.andExpect(status().isBadRequest())
|
.andExpect(status().isBadRequest())
|
||||||
.andExpect(statusReason(containsString("Unable to update non-existent device credentials")));
|
.andExpect(statusReason(containsString("Unable to update non-existent device credentials")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSaveDeviceCredentialsWithNonExistentDevice() throws Exception {
|
public void testSaveDeviceCredentialsWithNonExistentDevice() throws Exception {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("My device");
|
device.setName("My device");
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
Device savedDevice = doPost("/api/device", device, Device.class);
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
DeviceCredentials deviceCredentials =
|
DeviceCredentials deviceCredentials =
|
||||||
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
doGet("/api/device/" + savedDevice.getId().getId().toString() + "/credentials", DeviceCredentials.class);
|
||||||
deviceCredentials.setDeviceId(new DeviceId(UUIDs.timeBased()));
|
deviceCredentials.setDeviceId(new DeviceId(UUIDs.timeBased()));
|
||||||
doPost("/api/device/credentials", deviceCredentials)
|
doPost("/api/device/credentials", deviceCredentials)
|
||||||
.andExpect(status().isNotFound());
|
.andExpect(status().isNotFound());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFindTenantDevices() throws Exception {
|
public void testFindTenantDevices() throws Exception {
|
||||||
List<Device> devices = new ArrayList<>();
|
List<Device> devices = new ArrayList<>();
|
||||||
for (int i=0;i<178;i++) {
|
for (int i = 0; i < 178; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("Device"+i);
|
device.setName("Device" + i);
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
devices.add(doPost("/api/device", device, Device.class));
|
devices.add(doPost("/api/device", device, Device.class));
|
||||||
}
|
}
|
||||||
@ -380,28 +386,29 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
TextPageLink pageLink = new TextPageLink(23);
|
TextPageLink pageLink = new TextPageLink(23);
|
||||||
TextPageData<Device> pageData = null;
|
TextPageData<Device> pageData = null;
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?",
|
pageData = doGetTypedWithPageLink("/api/tenant/devices?",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink);
|
||||||
loadedDevices.addAll(pageData.getData());
|
loadedDevices.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
}
|
}
|
||||||
} while (pageData.hasNext());
|
} while (pageData.hasNext());
|
||||||
|
|
||||||
Collections.sort(devices, idComparator);
|
Collections.sort(devices, idComparator);
|
||||||
Collections.sort(loadedDevices, idComparator);
|
Collections.sort(loadedDevices, idComparator);
|
||||||
|
|
||||||
Assert.assertEquals(devices, loadedDevices);
|
Assert.assertEquals(devices, loadedDevices);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFindTenantDevicesByName() throws Exception {
|
public void testFindTenantDevicesByName() throws Exception {
|
||||||
String title1 = "Device title 1";
|
String title1 = "Device title 1";
|
||||||
List<Device> devicesTitle1 = new ArrayList<>();
|
List<Device> devicesTitle1 = new ArrayList<>();
|
||||||
for (int i=0;i<143;i++) {
|
for (int i = 0; i < 143; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title1+suffix;
|
String name = title1 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
device.setName(name);
|
device.setName(name);
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
@ -409,38 +416,40 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
}
|
}
|
||||||
String title2 = "Device title 2";
|
String title2 = "Device title 2";
|
||||||
List<Device> devicesTitle2 = new ArrayList<>();
|
List<Device> devicesTitle2 = new ArrayList<>();
|
||||||
for (int i=0;i<75;i++) {
|
for (int i = 0; i < 75; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title2+suffix;
|
String name = title2 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
device.setName(name);
|
device.setName(name);
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
devicesTitle2.add(doPost("/api/device", device, Device.class));
|
devicesTitle2.add(doPost("/api/device", device, Device.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Device> loadedDevicesTitle1 = new ArrayList<>();
|
List<Device> loadedDevicesTitle1 = new ArrayList<>();
|
||||||
TextPageLink pageLink = new TextPageLink(15, title1);
|
TextPageLink pageLink = new TextPageLink(15, title1);
|
||||||
TextPageData<Device> pageData = null;
|
TextPageData<Device> pageData = null;
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?",
|
pageData = doGetTypedWithPageLink("/api/tenant/devices?",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink);
|
||||||
loadedDevicesTitle1.addAll(pageData.getData());
|
loadedDevicesTitle1.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
}
|
}
|
||||||
} while (pageData.hasNext());
|
} while (pageData.hasNext());
|
||||||
|
|
||||||
Collections.sort(devicesTitle1, idComparator);
|
Collections.sort(devicesTitle1, idComparator);
|
||||||
Collections.sort(loadedDevicesTitle1, idComparator);
|
Collections.sort(loadedDevicesTitle1, idComparator);
|
||||||
|
|
||||||
Assert.assertEquals(devicesTitle1, loadedDevicesTitle1);
|
Assert.assertEquals(devicesTitle1, loadedDevicesTitle1);
|
||||||
|
|
||||||
List<Device> loadedDevicesTitle2 = new ArrayList<>();
|
List<Device> loadedDevicesTitle2 = new ArrayList<>();
|
||||||
pageLink = new TextPageLink(4, title2);
|
pageLink = new TextPageLink(4, title2);
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?",
|
pageData = doGetTypedWithPageLink("/api/tenant/devices?",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink);
|
||||||
loadedDevicesTitle2.addAll(pageData.getData());
|
loadedDevicesTitle2.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -449,28 +458,30 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
|
|
||||||
Collections.sort(devicesTitle2, idComparator);
|
Collections.sort(devicesTitle2, idComparator);
|
||||||
Collections.sort(loadedDevicesTitle2, idComparator);
|
Collections.sort(loadedDevicesTitle2, idComparator);
|
||||||
|
|
||||||
Assert.assertEquals(devicesTitle2, loadedDevicesTitle2);
|
Assert.assertEquals(devicesTitle2, loadedDevicesTitle2);
|
||||||
|
|
||||||
for (Device device : loadedDevicesTitle1) {
|
for (Device device : loadedDevicesTitle1) {
|
||||||
doDelete("/api/device/"+device.getId().getId().toString())
|
doDelete("/api/device/" + device.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
pageLink = new TextPageLink(4, title1);
|
pageLink = new TextPageLink(4, title1);
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?",
|
pageData = doGetTypedWithPageLink("/api/tenant/devices?",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
|
|
||||||
for (Device device : loadedDevicesTitle2) {
|
for (Device device : loadedDevicesTitle2) {
|
||||||
doDelete("/api/device/"+device.getId().getId().toString())
|
doDelete("/api/device/" + device.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
pageLink = new TextPageLink(4, title2);
|
pageLink = new TextPageLink(4, title2);
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?",
|
pageData = doGetTypedWithPageLink("/api/tenant/devices?",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
}
|
}
|
||||||
@ -480,10 +491,10 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
String title1 = "Device title 1";
|
String title1 = "Device title 1";
|
||||||
String type1 = "typeA";
|
String type1 = "typeA";
|
||||||
List<Device> devicesType1 = new ArrayList<>();
|
List<Device> devicesType1 = new ArrayList<>();
|
||||||
for (int i=0;i<143;i++) {
|
for (int i = 0; i < 143; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title1+suffix;
|
String name = title1 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
device.setName(name);
|
device.setName(name);
|
||||||
device.setType(type1);
|
device.setType(type1);
|
||||||
@ -492,10 +503,10 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
String title2 = "Device title 2";
|
String title2 = "Device title 2";
|
||||||
String type2 = "typeB";
|
String type2 = "typeB";
|
||||||
List<Device> devicesType2 = new ArrayList<>();
|
List<Device> devicesType2 = new ArrayList<>();
|
||||||
for (int i=0;i<75;i++) {
|
for (int i = 0; i < 75; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title2+suffix;
|
String name = title2 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
device.setName(name);
|
device.setName(name);
|
||||||
device.setType(type2);
|
device.setType(type2);
|
||||||
@ -507,7 +518,8 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
TextPageData<Device> pageData = null;
|
TextPageData<Device> pageData = null;
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink, type1);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink, type1);
|
||||||
loadedDevicesType1.addAll(pageData.getData());
|
loadedDevicesType1.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -523,7 +535,8 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
pageLink = new TextPageLink(4);
|
pageLink = new TextPageLink(4);
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink, type2);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink, type2);
|
||||||
loadedDevicesType2.addAll(pageData.getData());
|
loadedDevicesType2.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -536,63 +549,66 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
Assert.assertEquals(devicesType2, loadedDevicesType2);
|
Assert.assertEquals(devicesType2, loadedDevicesType2);
|
||||||
|
|
||||||
for (Device device : loadedDevicesType1) {
|
for (Device device : loadedDevicesType1) {
|
||||||
doDelete("/api/device/"+device.getId().getId().toString())
|
doDelete("/api/device/" + device.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
pageLink = new TextPageLink(4);
|
pageLink = new TextPageLink(4);
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink, type1);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink, type1);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
|
|
||||||
for (Device device : loadedDevicesType2) {
|
for (Device device : loadedDevicesType2) {
|
||||||
doDelete("/api/device/"+device.getId().getId().toString())
|
doDelete("/api/device/" + device.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
pageLink = new TextPageLink(4);
|
pageLink = new TextPageLink(4);
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/tenant/devices?type={type}&",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink, type2);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink, type2);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFindCustomerDevices() throws Exception {
|
public void testFindCustomerDevices() throws Exception {
|
||||||
Customer customer = new Customer();
|
Customer customer = new Customer();
|
||||||
customer.setTitle("Test customer");
|
customer.setTitle("Test customer");
|
||||||
customer = doPost("/api/customer", customer, Customer.class);
|
customer = doPost("/api/customer", customer, Customer.class);
|
||||||
CustomerId customerId = customer.getId();
|
CustomerId customerId = customer.getId();
|
||||||
|
|
||||||
List<Device> devices = new ArrayList<>();
|
List<Device> devices = new ArrayList<>();
|
||||||
for (int i=0;i<128;i++) {
|
for (int i = 0; i < 128; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
device.setName("Device"+i);
|
device.setName("Device" + i);
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
device = doPost("/api/device", device, Device.class);
|
device = doPost("/api/device", device, Device.class);
|
||||||
devices.add(doPost("/api/customer/" + customerId.getId().toString()
|
devices.add(doPost("/api/customer/" + customerId.getId().toString()
|
||||||
+ "/device/" + device.getId().getId().toString(), Device.class));
|
+ "/device/" + device.getId().getId().toString(), Device.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Device> loadedDevices = new ArrayList<>();
|
List<Device> loadedDevices = new ArrayList<>();
|
||||||
TextPageLink pageLink = new TextPageLink(23);
|
TextPageLink pageLink = new TextPageLink(23);
|
||||||
TextPageData<Device> pageData = null;
|
TextPageData<Device> pageData = null;
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink);
|
||||||
loadedDevices.addAll(pageData.getData());
|
loadedDevices.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
}
|
}
|
||||||
} while (pageData.hasNext());
|
} while (pageData.hasNext());
|
||||||
|
|
||||||
Collections.sort(devices, idComparator);
|
Collections.sort(devices, idComparator);
|
||||||
Collections.sort(loadedDevices, idComparator);
|
Collections.sort(loadedDevices, idComparator);
|
||||||
|
|
||||||
Assert.assertEquals(devices, loadedDevices);
|
Assert.assertEquals(devices, loadedDevices);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFindCustomerDevicesByName() throws Exception {
|
public void testFindCustomerDevicesByName() throws Exception {
|
||||||
Customer customer = new Customer();
|
Customer customer = new Customer();
|
||||||
@ -602,53 +618,55 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
|
|
||||||
String title1 = "Device title 1";
|
String title1 = "Device title 1";
|
||||||
List<Device> devicesTitle1 = new ArrayList<>();
|
List<Device> devicesTitle1 = new ArrayList<>();
|
||||||
for (int i=0;i<125;i++) {
|
for (int i = 0; i < 125; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title1+suffix;
|
String name = title1 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
device.setName(name);
|
device.setName(name);
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
device = doPost("/api/device", device, Device.class);
|
device = doPost("/api/device", device, Device.class);
|
||||||
devicesTitle1.add(doPost("/api/customer/" + customerId.getId().toString()
|
devicesTitle1.add(doPost("/api/customer/" + customerId.getId().toString()
|
||||||
+ "/device/" + device.getId().getId().toString(), Device.class));
|
+ "/device/" + device.getId().getId().toString(), Device.class));
|
||||||
}
|
}
|
||||||
String title2 = "Device title 2";
|
String title2 = "Device title 2";
|
||||||
List<Device> devicesTitle2 = new ArrayList<>();
|
List<Device> devicesTitle2 = new ArrayList<>();
|
||||||
for (int i=0;i<143;i++) {
|
for (int i = 0; i < 143; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title2+suffix;
|
String name = title2 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
device.setName(name);
|
device.setName(name);
|
||||||
device.setType("default");
|
device.setType("default");
|
||||||
device = doPost("/api/device", device, Device.class);
|
device = doPost("/api/device", device, Device.class);
|
||||||
devicesTitle2.add(doPost("/api/customer/" + customerId.getId().toString()
|
devicesTitle2.add(doPost("/api/customer/" + customerId.getId().toString()
|
||||||
+ "/device/" + device.getId().getId().toString(), Device.class));
|
+ "/device/" + device.getId().getId().toString(), Device.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Device> loadedDevicesTitle1 = new ArrayList<>();
|
List<Device> loadedDevicesTitle1 = new ArrayList<>();
|
||||||
TextPageLink pageLink = new TextPageLink(15, title1);
|
TextPageLink pageLink = new TextPageLink(15, title1);
|
||||||
TextPageData<Device> pageData = null;
|
TextPageData<Device> pageData = null;
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink);
|
||||||
loadedDevicesTitle1.addAll(pageData.getData());
|
loadedDevicesTitle1.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
}
|
}
|
||||||
} while (pageData.hasNext());
|
} while (pageData.hasNext());
|
||||||
|
|
||||||
Collections.sort(devicesTitle1, idComparator);
|
Collections.sort(devicesTitle1, idComparator);
|
||||||
Collections.sort(loadedDevicesTitle1, idComparator);
|
Collections.sort(loadedDevicesTitle1, idComparator);
|
||||||
|
|
||||||
Assert.assertEquals(devicesTitle1, loadedDevicesTitle1);
|
Assert.assertEquals(devicesTitle1, loadedDevicesTitle1);
|
||||||
|
|
||||||
List<Device> loadedDevicesTitle2 = new ArrayList<>();
|
List<Device> loadedDevicesTitle2 = new ArrayList<>();
|
||||||
pageLink = new TextPageLink(4, title2);
|
pageLink = new TextPageLink(4, title2);
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink);
|
||||||
loadedDevicesTitle2.addAll(pageData.getData());
|
loadedDevicesTitle2.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -657,28 +675,30 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
|
|
||||||
Collections.sort(devicesTitle2, idComparator);
|
Collections.sort(devicesTitle2, idComparator);
|
||||||
Collections.sort(loadedDevicesTitle2, idComparator);
|
Collections.sort(loadedDevicesTitle2, idComparator);
|
||||||
|
|
||||||
Assert.assertEquals(devicesTitle2, loadedDevicesTitle2);
|
Assert.assertEquals(devicesTitle2, loadedDevicesTitle2);
|
||||||
|
|
||||||
for (Device device : loadedDevicesTitle1) {
|
for (Device device : loadedDevicesTitle1) {
|
||||||
doDelete("/api/customer/device/" + device.getId().getId().toString())
|
doDelete("/api/customer/device/" + device.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
pageLink = new TextPageLink(4, title1);
|
pageLink = new TextPageLink(4, title1);
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
|
|
||||||
for (Device device : loadedDevicesTitle2) {
|
for (Device device : loadedDevicesTitle2) {
|
||||||
doDelete("/api/customer/device/" + device.getId().getId().toString())
|
doDelete("/api/customer/device/" + device.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
pageLink = new TextPageLink(4, title2);
|
pageLink = new TextPageLink(4, title2);
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
}
|
}
|
||||||
@ -693,10 +713,10 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
String title1 = "Device title 1";
|
String title1 = "Device title 1";
|
||||||
String type1 = "typeC";
|
String type1 = "typeC";
|
||||||
List<Device> devicesType1 = new ArrayList<>();
|
List<Device> devicesType1 = new ArrayList<>();
|
||||||
for (int i=0;i<125;i++) {
|
for (int i = 0; i < 125; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title1+suffix;
|
String name = title1 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
device.setName(name);
|
device.setName(name);
|
||||||
device.setType(type1);
|
device.setType(type1);
|
||||||
@ -707,10 +727,10 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
String title2 = "Device title 2";
|
String title2 = "Device title 2";
|
||||||
String type2 = "typeD";
|
String type2 = "typeD";
|
||||||
List<Device> devicesType2 = new ArrayList<>();
|
List<Device> devicesType2 = new ArrayList<>();
|
||||||
for (int i=0;i<143;i++) {
|
for (int i = 0; i < 143; i++) {
|
||||||
Device device = new Device();
|
Device device = new Device();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title2+suffix;
|
String name = title2 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
device.setName(name);
|
device.setName(name);
|
||||||
device.setType(type2);
|
device.setType(type2);
|
||||||
@ -724,7 +744,8 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
TextPageData<Device> pageData = null;
|
TextPageData<Device> pageData = null;
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?type={type}&",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink, type1);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink, type1);
|
||||||
loadedDevicesType1.addAll(pageData.getData());
|
loadedDevicesType1.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -740,7 +761,8 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
pageLink = new TextPageLink(4);
|
pageLink = new TextPageLink(4);
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?type={type}&",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink, type2);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink, type2);
|
||||||
loadedDevicesType2.addAll(pageData.getData());
|
loadedDevicesType2.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -759,7 +781,8 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
|
|
||||||
pageLink = new TextPageLink(4);
|
pageLink = new TextPageLink(4);
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?type={type}&",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink, type1);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink, type1);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
|
|
||||||
@ -770,9 +793,56 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
|||||||
|
|
||||||
pageLink = new TextPageLink(4);
|
pageLink = new TextPageLink(4);
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/devices?type={type}&",
|
||||||
new TypeReference<TextPageData<Device>>(){}, pageLink, type2);
|
new TypeReference<TextPageData<Device>>() {
|
||||||
|
}, pageLink, type2);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSwapDeviceFromOneTenantToAnother() throws Exception {
|
||||||
|
Device device = new Device();
|
||||||
|
device.setName("My device");
|
||||||
|
device.setType("default");
|
||||||
|
Device savedDevice = doPost("/api/device", device, Device.class);
|
||||||
|
|
||||||
|
Device anotherDevice = new Device();
|
||||||
|
anotherDevice.setName("My device1");
|
||||||
|
anotherDevice.setType("default");
|
||||||
|
Device savedAnotherDevice = doPost("/api/device", anotherDevice, Device.class);
|
||||||
|
|
||||||
|
EntityRelation relation = new EntityRelation();
|
||||||
|
relation.setFrom(savedDevice.getId());
|
||||||
|
relation.setTo(savedAnotherDevice.getId());
|
||||||
|
relation.setTypeGroup(RelationTypeGroup.COMMON);
|
||||||
|
relation.setType("Contains");
|
||||||
|
doPost("/api/relation", relation);
|
||||||
|
|
||||||
|
loginSysAdmin();
|
||||||
|
Tenant tenant = new Tenant();
|
||||||
|
tenant.setTitle("Different tenant");
|
||||||
|
Tenant savedDifferentTenant = doPost("/api/tenant", tenant, Tenant.class);
|
||||||
|
Assert.assertNotNull(savedDifferentTenant);
|
||||||
|
|
||||||
|
User user = new User();
|
||||||
|
user.setAuthority(Authority.TENANT_ADMIN);
|
||||||
|
user.setTenantId(savedDifferentTenant.getId());
|
||||||
|
user.setEmail("tenant9@thingsboard.org");
|
||||||
|
user.setFirstName("Sam");
|
||||||
|
user.setLastName("Downs");
|
||||||
|
|
||||||
|
createUserAndLogin(user, "testPassword1");
|
||||||
|
|
||||||
|
login("tenant2@thingsboard.org", "testPassword1");
|
||||||
|
Device swappedDevice = doPost("/api/tenant/" + savedDifferentTenant.getId().getId() + "/device/" + savedDevice.getId().getId(), Device.class);
|
||||||
|
|
||||||
|
doGet("/api/device/" + swappedDevice.getId().getId().toString(), Device.class, status().isNotFound());
|
||||||
|
|
||||||
|
login("tenant9@thingsboard.org", "testPassword1");
|
||||||
|
|
||||||
|
Device foundDevice1 = doGet("/api/device/" + swappedDevice.getId().getId().toString(), Device.class);
|
||||||
|
Assert.assertNotNull(foundDevice1);
|
||||||
|
|
||||||
|
doGet("/api/relation?fromId=" + savedDevice.getId().getId() + "&fromType=DEVICE&relationType=Contains&toId=" + savedAnotherDevice.getId().getId() + "&toType=DEVICE", EntityRelation.class, status().isNotFound());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,6 +33,7 @@ import org.thingsboard.server.common.data.id.TenantId;
|
|||||||
import org.thingsboard.server.common.data.page.TextPageLink;
|
import org.thingsboard.server.common.data.page.TextPageLink;
|
||||||
import org.thingsboard.server.dao.DaoUtil;
|
import org.thingsboard.server.dao.DaoUtil;
|
||||||
import org.thingsboard.server.dao.model.EntitySubtypeEntity;
|
import org.thingsboard.server.dao.model.EntitySubtypeEntity;
|
||||||
|
import org.thingsboard.server.dao.model.ModelConstants;
|
||||||
import org.thingsboard.server.dao.model.nosql.DeviceEntity;
|
import org.thingsboard.server.dao.model.nosql.DeviceEntity;
|
||||||
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
|
import org.thingsboard.server.dao.nosql.CassandraAbstractSearchTextDao;
|
||||||
import org.thingsboard.server.dao.util.NoSqlDao;
|
import org.thingsboard.server.dao.util.NoSqlDao;
|
||||||
@ -191,12 +192,17 @@ public class CassandraDeviceDao extends CassandraAbstractSearchTextDao<DeviceEnt
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Device findDeviceByTenantIdAndId(TenantId tenantId, UUID id) {
|
public Device findDeviceByTenantIdAndId(TenantId tenantId, UUID id) {
|
||||||
return findById(tenantId, id);
|
Select.Where query = select().from(getColumnFamilyName()).where(eq(ModelConstants.TENANT_ID_PROPERTY, tenantId.getId())).and(eq(ModelConstants.ID_PROPERTY, id));
|
||||||
|
log.trace("Execute query {}", query);
|
||||||
|
DeviceEntity entity = findOneByStatement(tenantId, query);
|
||||||
|
return DaoUtil.getData(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ListenableFuture<Device> findDeviceByTenantIdAndIdAsync(TenantId tenantId, UUID id) {
|
public ListenableFuture<Device> findDeviceByTenantIdAndIdAsync(TenantId tenantId, UUID id) {
|
||||||
return findByIdAsync(tenantId, id);
|
Select.Where query = select().from(getColumnFamilyName()).where(eq(ModelConstants.TENANT_ID_PROPERTY, tenantId.getId())).and(eq(ModelConstants.ID_PROPERTY, id));
|
||||||
|
log.trace("Execute query {}", query);
|
||||||
|
return findOneByStatementAsync(tenantId, query);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -355,7 +355,10 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
|
|||||||
|
|
||||||
relationService.removeRelations(device.getTenantId(), device.getId());
|
relationService.removeRelations(device.getTenantId(), device.getId());
|
||||||
|
|
||||||
auditLogService.removeAuditLogs(device.getTenantId(), device.getId());
|
// TODO: 30/07/2020 implement for Cassandra
|
||||||
|
if (sqlDatabaseUsed) {
|
||||||
|
auditLogService.removeAuditLogs(device.getTenantId(), device.getId());
|
||||||
|
}
|
||||||
|
|
||||||
device.setTenantId(tenantId);
|
device.setTenantId(tenantId);
|
||||||
device.setCustomerId(null);
|
device.setCustomerId(null);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user