Delete customers last on tenant deletion; tests fixes
This commit is contained in:
parent
6f9e9305bd
commit
a80d4650ea
@ -53,9 +53,8 @@ import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
@ -584,7 +583,7 @@ public class AlarmControllerTest extends AbstractControllerTest {
|
||||
Assert.assertEquals(savedUser.getId(), foundAlarm.getAssigneeId());
|
||||
Assert.assertTrue(foundAlarm.getAssignTs() >= beforeAssignmentTs);
|
||||
|
||||
beforeAssignmentTs = System.currentTimeMillis();
|
||||
long afterAssignmentTs = System.currentTimeMillis();
|
||||
|
||||
loginSysAdmin();
|
||||
|
||||
@ -592,12 +591,12 @@ public class AlarmControllerTest extends AbstractControllerTest {
|
||||
|
||||
loginDifferentTenant();
|
||||
|
||||
foundAlarm = Awaitility.await().atMost(TIMEOUT, TimeUnit.SECONDS)
|
||||
.until(() -> doGet("/api/alarm/info/" + alarmId.getId(), AlarmInfo.class), Objects::nonNull);
|
||||
|
||||
Assert.assertNotNull(foundAlarm);
|
||||
Assert.assertNull(foundAlarm.getAssigneeId());
|
||||
Assert.assertTrue(foundAlarm.getAssignTs() >= beforeAssignmentTs);
|
||||
Awaitility.await().atMost(TIMEOUT, TimeUnit.SECONDS).untilAsserted(() -> {
|
||||
AlarmInfo alarmInfo = doGet("/api/alarm/info/" + alarmId.getId(), AlarmInfo.class);
|
||||
Assert.assertNotNull(alarmInfo);
|
||||
Assert.assertNull(alarmInfo.getAssigneeId());
|
||||
Assert.assertTrue(alarmInfo.getAssignTs() >= afterAssignmentTs);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -631,16 +630,16 @@ public class AlarmControllerTest extends AbstractControllerTest {
|
||||
Assert.assertEquals(savedUser.getId(), foundAlarm.getAssigneeId());
|
||||
Assert.assertTrue(foundAlarm.getAssignTs() >= beforeAssignmentTs);
|
||||
|
||||
beforeAssignmentTs = System.currentTimeMillis();
|
||||
long afterAssignmentTs = System.currentTimeMillis();
|
||||
|
||||
doDelete("/api/user/" + savedUser.getId().getId()).andExpect(status().isOk());
|
||||
|
||||
foundAlarm = Awaitility.await().atMost(TIMEOUT, TimeUnit.SECONDS)
|
||||
.until(() -> doGet("/api/alarm/info/" + alarmId.getId(), AlarmInfo.class), Objects::nonNull);
|
||||
|
||||
Assert.assertNotNull(foundAlarm);
|
||||
Assert.assertNull(foundAlarm.getAssigneeId());
|
||||
Assert.assertTrue(foundAlarm.getAssignTs() >= beforeAssignmentTs);
|
||||
Awaitility.await().atMost(TIMEOUT, TimeUnit.SECONDS).untilAsserted(() -> {
|
||||
AlarmInfo alarmInfo = doGet("/api/alarm/info/" + alarmId.getId(), AlarmInfo.class);
|
||||
Assert.assertNotNull(alarmInfo);
|
||||
Assert.assertNull(alarmInfo.getAssigneeId());
|
||||
Assert.assertTrue(alarmInfo.getAssignTs() >= afterAssignmentTs);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -684,18 +683,18 @@ public class AlarmControllerTest extends AbstractControllerTest {
|
||||
Assert.assertEquals(savedUser.getId(), foundAlarm.getAssigneeId());
|
||||
Assert.assertTrue(foundAlarm.getAssignTs() >= beforeAssignmentTs);
|
||||
|
||||
beforeAssignmentTs = System.currentTimeMillis();
|
||||
long afterAssignmentTs = System.currentTimeMillis();
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
|
||||
doDelete("/api/customer/" + differentTenantCustomerId.getId()).andExpect(status().isOk());
|
||||
|
||||
foundAlarm = Awaitility.await().atMost(TIMEOUT, TimeUnit.SECONDS)
|
||||
.until(() -> doGet("/api/alarm/info/" + alarmId.getId(), AlarmInfo.class), Objects::nonNull);
|
||||
|
||||
Assert.assertNotNull(foundAlarm);
|
||||
Assert.assertNull(foundAlarm.getAssigneeId());
|
||||
Assert.assertTrue(foundAlarm.getAssignTs() >= beforeAssignmentTs);
|
||||
Awaitility.await().atMost(TIMEOUT, TimeUnit.SECONDS).untilAsserted(() -> {
|
||||
AlarmInfo alarmInfo = doGet("/api/alarm/info/" + alarmId.getId(), AlarmInfo.class);
|
||||
Assert.assertNotNull(alarmInfo);
|
||||
Assert.assertNull(alarmInfo.getAssigneeId());
|
||||
Assert.assertTrue(alarmInfo.getAssignTs() >= afterAssignmentTs);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -1003,27 +1002,20 @@ public class AlarmControllerTest extends AbstractControllerTest {
|
||||
types.remove(0);
|
||||
}
|
||||
|
||||
foundTypes = doGetTyped("/api/alarm/types?pageSize=1024&page=0", new TypeReference<PageData<EntitySubtype>>() {
|
||||
})
|
||||
.getData()
|
||||
.stream()
|
||||
.map(EntitySubtype::getType)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
Assert.assertEquals(types.size(), foundTypes.size());
|
||||
Assert.assertEquals(types, foundTypes);
|
||||
Awaitility.await().atMost(TIMEOUT, TimeUnit.SECONDS).untilAsserted(() -> {
|
||||
List<String> actualTypes = doGetTyped("/api/alarm/types?pageSize=1024&page=0", new TypeReference<PageData<EntitySubtype>>() {})
|
||||
.getData().stream().map(EntitySubtype::getType).toList();
|
||||
Assert.assertEquals(types.size(), actualTypes.size());
|
||||
Assert.assertEquals(types, actualTypes);
|
||||
});
|
||||
|
||||
doDelete("/api/device/" + devices.get(0).getId()).andExpect(status().isOk());
|
||||
|
||||
foundTypes = doGetTyped("/api/alarm/types?pageSize=1024&page=0", new TypeReference<PageData<EntitySubtype>>() {
|
||||
})
|
||||
.getData()
|
||||
.stream()
|
||||
.map(EntitySubtype::getType)
|
||||
.sorted()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
Assert.assertTrue(foundTypes.isEmpty());
|
||||
Awaitility.await().atMost(TIMEOUT, TimeUnit.SECONDS).untilAsserted(() -> {
|
||||
List<String> actualTypes = doGetTyped("/api/alarm/types?pageSize=1024&page=0", new TypeReference<PageData<EntitySubtype>>() {})
|
||||
.getData().stream().map(EntitySubtype::getType).sorted().toList();
|
||||
Assert.assertTrue(actualTypes.isEmpty());
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -42,6 +42,7 @@ import org.thingsboard.server.common.data.asset.Asset;
|
||||
import org.thingsboard.server.common.data.asset.AssetProfile;
|
||||
import org.thingsboard.server.common.data.audit.ActionType;
|
||||
import org.thingsboard.server.common.data.edge.Edge;
|
||||
import org.thingsboard.server.common.data.id.AlarmId;
|
||||
import org.thingsboard.server.common.data.id.AssetId;
|
||||
import org.thingsboard.server.common.data.id.CustomerId;
|
||||
import org.thingsboard.server.common.data.page.PageData;
|
||||
@ -55,8 +56,10 @@ import org.thingsboard.server.dao.service.DaoSqlTest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.awaitility.Awaitility.await;
|
||||
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;
|
||||
@ -312,8 +315,9 @@ public class AssetControllerTest extends AbstractControllerTest {
|
||||
|
||||
alarm = doPost("/api/alarm", alarm, Alarm.class);
|
||||
Assert.assertNotNull(alarm);
|
||||
AlarmId alarmId = alarm.getId();
|
||||
|
||||
AlarmInfo foundAlarm = doGet("/api/alarm/info/" + alarm.getId(), AlarmInfo.class);
|
||||
AlarmInfo foundAlarm = doGet("/api/alarm/info/" + alarmId, AlarmInfo.class);
|
||||
Assert.assertNotNull(foundAlarm);
|
||||
|
||||
doDelete("/api/asset/" + savedAsset.getId().getId().toString())
|
||||
@ -324,9 +328,11 @@ public class AssetControllerTest extends AbstractControllerTest {
|
||||
.andExpect(status().isNotFound())
|
||||
.andExpect(statusReason(containsString(msgErrorNoFound("Asset", assetIdStr))));
|
||||
|
||||
doGet("/api/alarm/info/" + alarm.getId())
|
||||
.andExpect(status().isNotFound())
|
||||
.andExpect(statusReason(containsString(msgErrorNoFound("Alarm", alarm.getId().getId().toString()))));
|
||||
await().atMost(30, TimeUnit.SECONDS).untilAsserted(() -> {
|
||||
doGet("/api/alarm/info/" + alarmId)
|
||||
.andExpect(status().isNotFound())
|
||||
.andExpect(statusReason(containsString(msgErrorNoFound("Alarm", alarmId.getId().toString()))));
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@ -150,7 +150,6 @@ public class TenantServiceImpl extends AbstractCachedEntityService<TenantId, Ten
|
||||
return savedTenant;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public void deleteTenant(TenantId tenantId) {
|
||||
log.trace("Executing deleteTenant [{}]", tenantId);
|
||||
@ -162,17 +161,17 @@ public class TenantServiceImpl extends AbstractCachedEntityService<TenantId, Ten
|
||||
notificationSettingsService.deleteNotificationSettings(tenantId);
|
||||
tenantDao.removeById(tenantId, tenantId.getId());
|
||||
|
||||
cleanUpService.removeTenantEntities(tenantId, // don't forget to implement deleteByTenantId from EntityDaoService when adding entity type to this list
|
||||
EntityType.ENTITY_VIEW, EntityType.WIDGETS_BUNDLE, EntityType.WIDGET_TYPE,
|
||||
EntityType.ASSET, EntityType.ASSET_PROFILE, EntityType.DEVICE, EntityType.DEVICE_PROFILE,
|
||||
EntityType.DASHBOARD, EntityType.CUSTOMER, EntityType.EDGE, EntityType.RULE_CHAIN,
|
||||
EntityType.API_USAGE_STATE, EntityType.TB_RESOURCE, EntityType.OTA_PACKAGE, EntityType.RPC,
|
||||
EntityType.QUEUE, EntityType.NOTIFICATION_REQUEST, EntityType.NOTIFICATION_RULE,
|
||||
EntityType.NOTIFICATION_TEMPLATE, EntityType.NOTIFICATION_TARGET, EntityType.QUEUE_STATS
|
||||
);
|
||||
|
||||
publishEvictEvent(new TenantEvictEvent(tenantId, true));
|
||||
eventPublisher.publishEvent(DeleteEntityEvent.builder().tenantId(tenantId).entityId(tenantId).entity(tenant).build());
|
||||
|
||||
cleanUpService.removeTenantEntities(tenantId, // don't forget to implement deleteEntity from EntityDaoService when adding entity type to this list
|
||||
EntityType.ENTITY_VIEW, EntityType.WIDGETS_BUNDLE, EntityType.WIDGET_TYPE,
|
||||
EntityType.ASSET, EntityType.ASSET_PROFILE, EntityType.DEVICE, EntityType.DEVICE_PROFILE,
|
||||
EntityType.DASHBOARD, EntityType.EDGE, EntityType.RULE_CHAIN, EntityType.API_USAGE_STATE,
|
||||
EntityType.TB_RESOURCE, EntityType.OTA_PACKAGE, EntityType.RPC, EntityType.QUEUE,
|
||||
EntityType.NOTIFICATION_REQUEST, EntityType.NOTIFICATION_RULE, EntityType.NOTIFICATION_TEMPLATE,
|
||||
EntityType.NOTIFICATION_TARGET, EntityType.QUEUE_STATS, EntityType.CUSTOMER
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user