fix_bug: Entity delete with delete relations, other Entity
This commit is contained in:
parent
2bb2429bcf
commit
edffd7600f
@ -23,6 +23,7 @@ import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||
import org.thingsboard.common.util.JacksonUtil;
|
||||
import org.thingsboard.server.common.data.Device;
|
||||
import org.thingsboard.server.common.data.EntityType;
|
||||
@ -31,7 +32,9 @@ import org.thingsboard.server.common.data.alarm.AlarmInfo;
|
||||
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
|
||||
import org.thingsboard.server.common.data.alarm.AlarmStatus;
|
||||
import org.thingsboard.server.common.data.audit.ActionType;
|
||||
import org.thingsboard.server.common.data.id.AlarmId;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
import org.thingsboard.server.dao.alarm.AlarmDao;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
@ -46,6 +49,10 @@ public abstract class BaseAlarmControllerTest extends AbstractControllerTest {
|
||||
|
||||
protected Device customerDevice;
|
||||
|
||||
|
||||
@SpyBean
|
||||
private AlarmDao alarmDao;
|
||||
|
||||
@Before
|
||||
public void setup() throws Exception {
|
||||
loginTenantAdmin();
|
||||
@ -64,6 +71,9 @@ public abstract class BaseAlarmControllerTest extends AbstractControllerTest {
|
||||
@After
|
||||
public void teardown() throws Exception {
|
||||
loginSysAdmin();
|
||||
|
||||
afterTestEntityDaoRemoveByIdWithException (alarmDao);
|
||||
|
||||
deleteDifferentTenant();
|
||||
}
|
||||
|
||||
@ -421,6 +431,21 @@ public abstract class BaseAlarmControllerTest extends AbstractControllerTest {
|
||||
Assert.assertTrue("Created alarm doesn't match the found one!", equals);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testDeleteAlarmWithDeleteRelationsOk() throws Exception {
|
||||
loginCustomerUser();
|
||||
AlarmId alarmId = createAlarm("Alarm for Test WithRelationsOk").getId();
|
||||
testEntityDaoWithRelationsOk(customerDevice.getId(), alarmId, "/api/alarm/" + alarmId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteAlarmExceptionWithRelationsTransactional() throws Exception {
|
||||
loginCustomerUser();
|
||||
AlarmId alarmId = createAlarm("Alarm for Test WithRelations Transactional Exception").getId();
|
||||
testEntityDaoWithRelationsTransactionalException(alarmDao, customerDevice.getId(), alarmId, "/api/alarm/" + alarmId);
|
||||
}
|
||||
|
||||
private Alarm createAlarm(String type) throws Exception {
|
||||
Alarm alarm = Alarm.builder()
|
||||
.tenantId(tenantId)
|
||||
|
||||
@ -22,6 +22,7 @@ import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||
import org.thingsboard.server.common.data.Customer;
|
||||
import org.thingsboard.server.common.data.EntitySubtype;
|
||||
import org.thingsboard.server.common.data.EntityView;
|
||||
@ -31,10 +32,12 @@ import org.thingsboard.server.common.data.User;
|
||||
import org.thingsboard.server.common.data.asset.Asset;
|
||||
import org.thingsboard.server.common.data.audit.ActionType;
|
||||
import org.thingsboard.server.common.data.edge.Edge;
|
||||
import org.thingsboard.server.common.data.id.AssetId;
|
||||
import org.thingsboard.server.common.data.id.CustomerId;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
import org.thingsboard.server.common.data.page.PageLink;
|
||||
import org.thingsboard.server.common.data.security.Authority;
|
||||
import org.thingsboard.server.dao.asset.AssetDao;
|
||||
import org.thingsboard.server.dao.exception.DataValidationException;
|
||||
import org.thingsboard.server.dao.model.ModelConstants;
|
||||
import org.thingsboard.server.service.stats.DefaultRuleEngineStatisticsService;
|
||||
@ -54,6 +57,9 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
||||
private Tenant savedTenant;
|
||||
private User tenantAdmin;
|
||||
|
||||
@SpyBean
|
||||
private AssetDao assetDao;
|
||||
|
||||
@Before
|
||||
public void beforeTest() throws Exception {
|
||||
loginSysAdmin();
|
||||
@ -77,6 +83,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
||||
public void afterTest() throws Exception {
|
||||
loginSysAdmin();
|
||||
|
||||
afterTestEntityDaoRemoveByIdWithException (assetDao);
|
||||
|
||||
doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
@ -905,4 +913,23 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
||||
|
||||
Assert.assertEquals(0, pageData.getData().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteAssetWithDeleteRelationsOk() throws Exception {
|
||||
AssetId assetId = createAsset("Asset for Test WithRelationsOk").getId();
|
||||
testEntityDaoWithRelationsOk(savedTenant.getId(), assetId, "/api/asset/" + assetId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteAssetExceptionWithRelationsTransactional() throws Exception {
|
||||
AssetId assetId = createAsset("Asset for Test WithRelations Transactional Exception").getId();
|
||||
testEntityDaoWithRelationsTransactionalException(assetDao, savedTenant.getId(), assetId, "/api/asset/" + assetId);
|
||||
}
|
||||
|
||||
private Asset createAsset(String name) {
|
||||
Asset asset = new Asset();
|
||||
asset.setName(name);
|
||||
asset.setType("default");
|
||||
return doPost("/api/asset", asset, Asset.class);
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||
import org.thingsboard.common.util.ThingsBoardExecutors;
|
||||
import org.thingsboard.server.common.data.Customer;
|
||||
import org.thingsboard.server.common.data.StringUtils;
|
||||
@ -36,6 +37,7 @@ import org.thingsboard.server.common.data.id.TenantId;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
import org.thingsboard.server.common.data.page.PageLink;
|
||||
import org.thingsboard.server.common.data.security.Authority;
|
||||
import org.thingsboard.server.dao.customer.CustomerDao;
|
||||
import org.thingsboard.server.dao.exception.DataValidationException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -55,6 +57,9 @@ public abstract class BaseCustomerControllerTest extends AbstractControllerTest
|
||||
private Tenant savedTenant;
|
||||
private User tenantAdmin;
|
||||
|
||||
@SpyBean
|
||||
private CustomerDao customerDao;
|
||||
|
||||
@Before
|
||||
public void beforeTest() throws Exception {
|
||||
executor = MoreExecutors.listeningDecorator(ThingsBoardExecutors.newWorkStealingPool(8, getClass()));
|
||||
@ -82,6 +87,8 @@ public abstract class BaseCustomerControllerTest extends AbstractControllerTest
|
||||
|
||||
loginSysAdmin();
|
||||
|
||||
afterTestEntityDaoRemoveByIdWithException (customerDao);
|
||||
|
||||
doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
@ -402,4 +409,22 @@ public abstract class BaseCustomerControllerTest extends AbstractControllerTest
|
||||
Assert.assertFalse(pageData.hasNext());
|
||||
Assert.assertEquals(0, pageData.getData().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteCustomerWithDeleteRelationsOk() throws Exception {
|
||||
CustomerId customerId = createCustomer("Customer for Test WithRelationsOk").getId();
|
||||
testEntityDaoWithRelationsOk(savedTenant.getId(), customerId, "/api/customer/" + customerId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteCustomerExceptionWithRelationsTransactional() throws Exception {
|
||||
CustomerId customerId = createCustomer("Customer for Test WithRelations Transactional Exception").getId();
|
||||
testEntityDaoWithRelationsTransactionalException(customerDao, savedTenant.getId(), customerId, "/api/customer/" + customerId);
|
||||
}
|
||||
|
||||
private Customer createCustomer(String title) {
|
||||
Customer customer = new Customer();
|
||||
customer.setTitle(title);
|
||||
return doPost("/api/customer", customer, Customer.class);
|
||||
}
|
||||
}
|
||||
|
||||
@ -473,13 +473,13 @@ public abstract class BaseDashboardControllerTest extends AbstractControllerTest
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteDashboardWithRelationsOk() throws Exception {
|
||||
public void testDeleteDashboardWithDeleteRelationsOk() throws Exception {
|
||||
DashboardId dashboardId = createDashboard("Dashboard for Test WithRelationsOk").getId();
|
||||
testEntityDaoWithRelationsOk(savedTenant.getId(), dashboardId, "/api/dashboard/" + dashboardId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteDashboardWithRelationsTransactionalException() throws Exception {
|
||||
public void testDeleteDashboardExceptionWithRelationsTransactional() throws Exception {
|
||||
DashboardId dashboardId = createDashboard("Dashboard for Test WithRelations Transactional Exception").getId();
|
||||
testEntityDaoWithRelationsTransactionalException(dashboardDao, savedTenant.getId(), dashboardId, "/api/dashboard/" + dashboardId);
|
||||
}
|
||||
|
||||
@ -50,6 +50,7 @@ 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.dao.device.DeviceDao;
|
||||
import org.thingsboard.server.dao.exception.DataValidationException;
|
||||
import org.thingsboard.server.dao.exception.DeviceCredentialsValidationException;
|
||||
import org.thingsboard.server.dao.model.ModelConstants;
|
||||
@ -82,6 +83,10 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
@SpyBean
|
||||
private GatewayNotificationsService gatewayNotificationsService;
|
||||
|
||||
@SpyBean
|
||||
private DeviceDao deviceDao;
|
||||
|
||||
|
||||
@Before
|
||||
public void beforeTest() throws Exception {
|
||||
executor = MoreExecutors.listeningDecorator(ThingsBoardExecutors.newWorkStealingPool(8, getClass()));
|
||||
@ -109,6 +114,8 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
|
||||
loginSysAdmin();
|
||||
|
||||
afterTestEntityDaoRemoveByIdWithException (deviceDao);
|
||||
|
||||
doDelete("/api/tenant/" + savedTenant.getId().getId())
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
@ -1203,4 +1210,23 @@ public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
|
||||
protected void testNotificationDeleteGatewayNever() {
|
||||
Mockito.verify(gatewayNotificationsService, never()).onDeviceDeleted(Mockito.any(Device.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteDashboardWithDeleteRelationsOk() throws Exception {
|
||||
DeviceId deviceId = createDevice("Device for Test WithRelationsOk").getId();
|
||||
testEntityDaoWithRelationsOk(savedTenant.getId(), deviceId, "/api/device/" + deviceId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteDeviceExceptionWithRelationsTransactional() throws Exception {
|
||||
DeviceId deviceId = createDevice("Device for Test WithRelations Transactional Exception").getId();
|
||||
testEntityDaoWithRelationsTransactionalException(deviceDao, savedTenant.getId(), deviceId, "/api/device/" + deviceId);
|
||||
}
|
||||
|
||||
private Device createDevice(String name) {
|
||||
Device device = new Device();
|
||||
device.setName(name);
|
||||
device.setType("default");
|
||||
return doPost("/api/device", device, Device.class);
|
||||
}
|
||||
}
|
||||
|
||||
@ -27,6 +27,7 @@ import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||
import org.thingsboard.server.common.data.Customer;
|
||||
import org.thingsboard.server.common.data.Dashboard;
|
||||
import org.thingsboard.server.common.data.Device;
|
||||
@ -46,10 +47,12 @@ import org.thingsboard.server.common.data.device.profile.JsonTransportPayloadCon
|
||||
import org.thingsboard.server.common.data.device.profile.MqttDeviceProfileTransportConfiguration;
|
||||
import org.thingsboard.server.common.data.device.profile.ProtoTransportPayloadConfiguration;
|
||||
import org.thingsboard.server.common.data.device.profile.TransportPayloadTypeConfiguration;
|
||||
import org.thingsboard.server.common.data.id.DeviceProfileId;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
import org.thingsboard.server.common.data.page.PageLink;
|
||||
import org.thingsboard.server.common.data.rule.RuleChain;
|
||||
import org.thingsboard.server.common.data.security.Authority;
|
||||
import org.thingsboard.server.dao.device.DeviceProfileDao;
|
||||
import org.thingsboard.server.dao.exception.DataValidationException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -74,6 +77,9 @@ public abstract class BaseDeviceProfileControllerTest extends AbstractController
|
||||
private Tenant savedTenant;
|
||||
private User tenantAdmin;
|
||||
|
||||
@SpyBean
|
||||
private DeviceProfileDao deviceProfileDao;
|
||||
|
||||
@Before
|
||||
public void beforeTest() throws Exception {
|
||||
loginSysAdmin();
|
||||
@ -97,6 +103,8 @@ public abstract class BaseDeviceProfileControllerTest extends AbstractController
|
||||
public void afterTest() throws Exception {
|
||||
loginSysAdmin();
|
||||
|
||||
afterTestEntityDaoRemoveByIdWithException (deviceProfileDao);
|
||||
|
||||
doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
@ -1125,4 +1133,20 @@ public abstract class BaseDeviceProfileControllerTest extends AbstractController
|
||||
return JsonFormat.printer().includingDefaultValueFields().print(dynamicMessage);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteDeviceProfileWithDeleteRelationsOk() throws Exception {
|
||||
DeviceProfileId deviceProfileId = savedDeviceProfile("DeviceProfile for Test WithRelationsOk").getId();
|
||||
testEntityDaoWithRelationsOk(savedTenant.getId(), deviceProfileId, "/api/deviceProfile/" + deviceProfileId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteDeviceProfileExceptionWithRelationsTransactional() throws Exception {
|
||||
DeviceProfileId deviceProfileId = savedDeviceProfile("DeviceProfile for Test WithRelations Transactional Exception").getId();
|
||||
testEntityDaoWithRelationsTransactionalException(deviceProfileDao, savedTenant.getId(), deviceProfileId, "/api/deviceProfile/" + deviceProfileId);
|
||||
}
|
||||
|
||||
private DeviceProfile savedDeviceProfile(String name) {
|
||||
DeviceProfile deviceProfile = createDeviceProfile(name);
|
||||
return doPost("/api/deviceProfile", deviceProfile, DeviceProfile.class);
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,6 +22,7 @@ import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||
import org.springframework.test.context.TestPropertySource;
|
||||
import org.thingsboard.server.common.data.Customer;
|
||||
import org.thingsboard.server.common.data.Device;
|
||||
@ -33,10 +34,12 @@ import org.thingsboard.server.common.data.asset.Asset;
|
||||
import org.thingsboard.server.common.data.audit.ActionType;
|
||||
import org.thingsboard.server.common.data.edge.Edge;
|
||||
import org.thingsboard.server.common.data.id.CustomerId;
|
||||
import org.thingsboard.server.common.data.id.EdgeId;
|
||||
import org.thingsboard.server.common.data.id.TenantId;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
import org.thingsboard.server.common.data.page.PageLink;
|
||||
import org.thingsboard.server.common.data.security.Authority;
|
||||
import org.thingsboard.server.dao.edge.EdgeDao;
|
||||
import org.thingsboard.server.dao.exception.DataValidationException;
|
||||
import org.thingsboard.server.dao.model.ModelConstants;
|
||||
import org.thingsboard.server.edge.imitator.EdgeImitator;
|
||||
@ -72,6 +75,9 @@ public abstract class BaseEdgeControllerTest extends AbstractControllerTest {
|
||||
private TenantId tenantId;
|
||||
private User tenantAdmin;
|
||||
|
||||
@SpyBean
|
||||
private EdgeDao edgeDao;
|
||||
|
||||
@Before
|
||||
public void beforeTest() throws Exception {
|
||||
loginSysAdmin();
|
||||
@ -96,6 +102,8 @@ public abstract class BaseEdgeControllerTest extends AbstractControllerTest {
|
||||
public void afterTest() throws Exception {
|
||||
loginSysAdmin();
|
||||
|
||||
afterTestEntityDaoRemoveByIdWithException (edgeDao);
|
||||
|
||||
doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
@ -837,4 +845,20 @@ public abstract class BaseEdgeControllerTest extends AbstractControllerTest {
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteEdgeWithDeleteRelationsOk() throws Exception {
|
||||
EdgeId edgeId = savedEdge("Edge for Test WithRelationsOk").getId();
|
||||
testEntityDaoWithRelationsOk(savedTenant.getId(), edgeId, "/api/edge/" + edgeId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteEdgeExceptionWithRelationsTransactional() throws Exception {
|
||||
EdgeId edgeId = savedEdge("Edge for Test WithRelations Transactional Exception").getId();
|
||||
testEntityDaoWithRelationsTransactionalException(edgeDao, savedTenant.getId(), edgeId, "/api/edge/" + edgeId);
|
||||
}
|
||||
|
||||
private Edge savedEdge(String name) {
|
||||
Edge edge = constructEdge(name, "default");
|
||||
return doPost("/api/edge", edge, Edge.class);
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,6 +32,7 @@ import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||
import org.springframework.test.context.TestPropertySource;
|
||||
import org.springframework.test.web.servlet.ResultActions;
|
||||
import org.thingsboard.common.util.ThingsBoardExecutors;
|
||||
@ -45,6 +46,7 @@ import org.thingsboard.server.common.data.User;
|
||||
import org.thingsboard.server.common.data.audit.ActionType;
|
||||
import org.thingsboard.server.common.data.edge.Edge;
|
||||
import org.thingsboard.server.common.data.id.CustomerId;
|
||||
import org.thingsboard.server.common.data.id.EntityViewId;
|
||||
import org.thingsboard.server.common.data.objects.AttributesEntityView;
|
||||
import org.thingsboard.server.common.data.objects.TelemetryEntityView;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
@ -54,6 +56,7 @@ import org.thingsboard.server.common.data.query.EntityKey;
|
||||
import org.thingsboard.server.common.data.query.EntityKeyType;
|
||||
import org.thingsboard.server.common.data.security.Authority;
|
||||
import org.thingsboard.server.common.data.security.DeviceCredentials;
|
||||
import org.thingsboard.server.dao.entityview.EntityViewDao;
|
||||
import org.thingsboard.server.dao.exception.DataValidationException;
|
||||
import org.thingsboard.server.dao.model.ModelConstants;
|
||||
|
||||
@ -93,6 +96,9 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
|
||||
List<ListenableFuture<ResultActions>> deleteFutures = new ArrayList<>();
|
||||
ListeningExecutorService executor;
|
||||
|
||||
@SpyBean
|
||||
private EntityViewDao entityViewDao;
|
||||
|
||||
@Before
|
||||
public void beforeTest() throws Exception {
|
||||
executor = MoreExecutors.listeningDecorator(ThingsBoardExecutors.newWorkStealingPool(8, getClass()));
|
||||
@ -114,6 +120,9 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
|
||||
|
||||
@After
|
||||
public void afterTest() throws Exception {
|
||||
|
||||
afterTestEntityDaoRemoveByIdWithException (entityViewDao);
|
||||
|
||||
executor.shutdownNow();
|
||||
}
|
||||
|
||||
@ -786,4 +795,16 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
|
||||
|
||||
Assert.assertEquals(0, pageData.getData().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteEntityViewWithDeleteRelationsOk() throws Exception {
|
||||
EntityViewId entityViewId = getNewSavedEntityView("EntityView for Test WithRelationsOk").getId();
|
||||
testEntityDaoWithRelationsOk(tenantId, entityViewId, "/api/entityView/" + entityViewId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteEntityViewExceptionWithRelationsTransactional() throws Exception {
|
||||
EntityViewId entityViewId = getNewSavedEntityView("EntityView for Test WithRelations Transactional Exception").getId();
|
||||
testEntityDaoWithRelationsTransactionalException(entityViewDao, tenantId, entityViewId, "/api/entityView/" + entityViewId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,17 +21,20 @@ import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||
import org.thingsboard.server.common.data.StringUtils;
|
||||
import org.thingsboard.server.common.data.Tenant;
|
||||
import org.thingsboard.server.common.data.User;
|
||||
import org.thingsboard.server.common.data.audit.ActionType;
|
||||
import org.thingsboard.server.common.data.edge.Edge;
|
||||
import org.thingsboard.server.common.data.id.RuleChainId;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
import org.thingsboard.server.common.data.page.PageLink;
|
||||
import org.thingsboard.server.common.data.rule.RuleChain;
|
||||
import org.thingsboard.server.common.data.rule.RuleChainType;
|
||||
import org.thingsboard.server.common.data.security.Authority;
|
||||
import org.thingsboard.server.dao.exception.DataValidationException;
|
||||
import org.thingsboard.server.dao.rule.RuleChainDao;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@ -47,6 +50,9 @@ public abstract class BaseRuleChainControllerTest extends AbstractControllerTest
|
||||
private Tenant savedTenant;
|
||||
private User tenantAdmin;
|
||||
|
||||
@SpyBean
|
||||
private RuleChainDao ruleChainDao;
|
||||
|
||||
@Before
|
||||
public void beforeTest() throws Exception {
|
||||
loginSysAdmin();
|
||||
@ -70,6 +76,8 @@ public abstract class BaseRuleChainControllerTest extends AbstractControllerTest
|
||||
public void afterTest() throws Exception {
|
||||
loginSysAdmin();
|
||||
|
||||
afterTestEntityDaoRemoveByIdWithException(ruleChainDao);
|
||||
|
||||
doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
@ -223,4 +231,21 @@ public abstract class BaseRuleChainControllerTest extends AbstractControllerTest
|
||||
Assert.assertEquals(1, pageData.getTotalElements());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteRuleChainWithDeleteRelationsOk() throws Exception {
|
||||
RuleChainId ruleChainId = createRuleChain("RuleChain for Test WithRelationsOk").getId();
|
||||
testEntityDaoWithRelationsOk(savedTenant.getId(), ruleChainId, "/api/ruleChain/" + ruleChainId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteRuleChainExceptionWithRelationsTransactional() throws Exception {
|
||||
RuleChainId ruleChainId = createRuleChain("RuleChain for Test WithRelations Transactional Exception").getId();
|
||||
testEntityDaoWithRelationsTransactionalException(ruleChainDao, savedTenant.getId(), ruleChainId, "/api/ruleChain/" + ruleChainId);
|
||||
}
|
||||
|
||||
private RuleChain createRuleChain(String name) {
|
||||
RuleChain ruleChain = new RuleChain();
|
||||
ruleChain.setName(name);
|
||||
return doPost("/api/ruleChain", ruleChain, RuleChain.class);
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,9 +18,11 @@ package org.thingsboard.server.controller;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.boot.test.mock.mockito.SpyBean;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.thingsboard.server.common.data.Customer;
|
||||
import org.thingsboard.server.common.data.StringUtils;
|
||||
@ -29,10 +31,12 @@ import org.thingsboard.server.common.data.User;
|
||||
import org.thingsboard.server.common.data.audit.ActionType;
|
||||
import org.thingsboard.server.common.data.id.CustomerId;
|
||||
import org.thingsboard.server.common.data.id.TenantId;
|
||||
import org.thingsboard.server.common.data.id.UserId;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
import org.thingsboard.server.common.data.page.PageLink;
|
||||
import org.thingsboard.server.common.data.security.Authority;
|
||||
import org.thingsboard.server.dao.exception.DataValidationException;
|
||||
import org.thingsboard.server.dao.user.UserDao;
|
||||
import org.thingsboard.server.service.mail.TestMailService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -53,6 +57,16 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest {
|
||||
|
||||
private CustomerId customerNUULId = (CustomerId) createEntityId_NULL_UUID(new Customer());
|
||||
|
||||
@SpyBean
|
||||
private UserDao userDao;
|
||||
|
||||
@After
|
||||
public void afterTest() throws Exception {
|
||||
loginSysAdmin();
|
||||
|
||||
afterTestEntityDaoRemoveByIdWithException(userDao);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSaveUser() throws Exception {
|
||||
loginSysAdmin();
|
||||
@ -688,4 +702,29 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest {
|
||||
doDelete("/api/customer/" + customerId.getId().toString())
|
||||
.andExpect(status().isOk());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testDeleteUserWithDeleteRelationsOk() throws Exception {
|
||||
UserId userId = createUser().getId();
|
||||
testEntityDaoWithRelationsOk(tenantId, userId, "/api/user/" + userId);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeleteUserExceptionWithRelationsTransactional() throws Exception {
|
||||
UserId userId = createUser().getId();
|
||||
testEntityDaoWithRelationsTransactionalException(userDao, tenantId, userId, "/api/user/" + userId);
|
||||
}
|
||||
|
||||
private User createUser() throws Exception {
|
||||
loginSysAdmin();
|
||||
String email = "tenant2@thingsboard.org";
|
||||
User user = new User();
|
||||
user.setAuthority(Authority.TENANT_ADMIN);
|
||||
user.setTenantId(tenantId);
|
||||
user.setEmail(email);
|
||||
user.setFirstName("Joe");
|
||||
user.setLastName("Downs");
|
||||
return doPost("/api/user", user, User.class);
|
||||
}
|
||||
}
|
||||
|
||||
@ -149,6 +149,7 @@ public class DeviceProfileServiceImpl extends AbstractCachedEntityService<Device
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void deleteDeviceProfile(TenantId tenantId, DeviceProfileId deviceProfileId) {
|
||||
log.trace("Executing deleteDeviceProfile [{}]", deviceProfileId);
|
||||
Validator.validateId(deviceProfileId, INCORRECT_DEVICE_PROFILE_ID + deviceProfileId);
|
||||
@ -159,10 +160,10 @@ public class DeviceProfileServiceImpl extends AbstractCachedEntityService<Device
|
||||
this.removeDeviceProfile(tenantId, deviceProfile);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
void removeDeviceProfile(TenantId tenantId, DeviceProfile deviceProfile) {
|
||||
private void removeDeviceProfile(TenantId tenantId, DeviceProfile deviceProfile) {
|
||||
DeviceProfileId deviceProfileId = deviceProfile.getId();
|
||||
try {
|
||||
deleteEntityRelations(tenantId, deviceProfileId);
|
||||
deviceProfileDao.removeById(tenantId, deviceProfileId.getId());
|
||||
publishEvictEvent(new DeviceProfileEvictEvent(deviceProfile.getTenantId(), deviceProfile.getName(),
|
||||
null, deviceProfile.getId(), deviceProfile.isDefault()));
|
||||
@ -174,7 +175,6 @@ public class DeviceProfileServiceImpl extends AbstractCachedEntityService<Device
|
||||
throw t;
|
||||
}
|
||||
}
|
||||
deleteEntityRelations(tenantId, deviceProfileId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -131,7 +131,6 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public RuleChainUpdateResult saveRuleChainMetaData(TenantId tenantId, RuleChainMetaData ruleChainMetaData) {
|
||||
Validator.validateId(ruleChainMetaData.getRuleChainId(), "Incorrect rule chain id.");
|
||||
RuleChain ruleChain = findRuleChainById(tenantId, ruleChainMetaData.getRuleChainId());
|
||||
|
||||
@ -19,7 +19,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.hibernate.exception.ConstraintViolationException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.transaction.event.TransactionalEventListener;
|
||||
import org.thingsboard.server.common.data.EntityInfo;
|
||||
import org.thingsboard.server.common.data.TenantProfile;
|
||||
@ -111,8 +110,7 @@ public class TenantProfileServiceImpl extends AbstractCachedEntityService<Tenant
|
||||
this.removeTenantProfile(tenantId, tenantProfileId, false);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
void removeTenantProfile(TenantId tenantId, TenantProfileId tenantProfileId, boolean isDefault) {
|
||||
private void removeTenantProfile(TenantId tenantId, TenantProfileId tenantProfileId, boolean isDefault) {
|
||||
try {
|
||||
tenantProfileDao.removeById(tenantId, tenantProfileId.getId());
|
||||
} catch (Exception t) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user