refactoring: tests Tenant
This commit is contained in:
parent
3efa47dc63
commit
5b10aafcd5
@ -381,7 +381,9 @@ public abstract class AbstractNotifyEntityTest extends AbstractWebTest {
|
||||
}
|
||||
|
||||
protected void testBroadcastEntityStateChangeEventTime(EntityId entityId, TenantId tenantId, int cntTime) {
|
||||
Mockito.verify(tbClusterService, times(cntTime)).broadcastEntityStateChangeEvent(Mockito.eq(tenantId),
|
||||
ArgumentMatcher<TenantId> matcherTenantIdId = cntTime == 1 ? argument -> argument.equals(tenantId) :
|
||||
argument -> argument.getClass().equals(TenantId.class);
|
||||
Mockito.verify(tbClusterService, times(cntTime)).broadcastEntityStateChangeEvent(Mockito.argThat(matcherTenantIdId),
|
||||
Mockito.any(entityId.getClass()), Mockito.any(ComponentLifecycleEvent.class));
|
||||
}
|
||||
|
||||
@ -612,7 +614,7 @@ public abstract class AbstractNotifyEntityTest extends AbstractWebTest {
|
||||
return result;
|
||||
}
|
||||
|
||||
private EntityId createEntityId_NULL_UUID(HasName entity) {
|
||||
protected EntityId createEntityId_NULL_UUID(HasName entity) {
|
||||
return EntityIdFactory.getByTypeAndUuid(entityClassToEntityTypeName(entity), ModelConstants.NULL_UUID);
|
||||
}
|
||||
|
||||
|
||||
@ -26,6 +26,8 @@ import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.ArgumentMatcher;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.test.context.TestPropertySource;
|
||||
import org.springframework.test.web.servlet.ResultActions;
|
||||
import org.thingsboard.common.util.ThingsBoardExecutors;
|
||||
@ -33,8 +35,10 @@ import org.thingsboard.server.common.data.Tenant;
|
||||
import org.thingsboard.server.common.data.TenantInfo;
|
||||
import org.thingsboard.server.common.data.TenantProfile;
|
||||
import org.thingsboard.server.common.data.User;
|
||||
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.plugin.ComponentLifecycleEvent;
|
||||
import org.thingsboard.server.common.data.queue.ProcessingStrategy;
|
||||
import org.thingsboard.server.common.data.queue.ProcessingStrategyType;
|
||||
import org.thingsboard.server.common.data.queue.Queue;
|
||||
@ -56,6 +60,8 @@ import java.util.stream.Collectors;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
@TestPropertySource(properties = {
|
||||
@ -86,17 +92,28 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
loginSysAdmin();
|
||||
Tenant tenant = new Tenant();
|
||||
tenant.setTitle("My tenant");
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
|
||||
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
||||
Assert.assertNotNull(savedTenant);
|
||||
Assert.assertNotNull(savedTenant.getId());
|
||||
Assert.assertTrue(savedTenant.getCreatedTime() > 0);
|
||||
Assert.assertEquals(tenant.getTitle(), savedTenant.getTitle());
|
||||
|
||||
testBroadcastEntityStateChangeEventTimeManyTimeTenant(savedTenant, ComponentLifecycleEvent.CREATED, 1);
|
||||
|
||||
savedTenant.setTitle("My new tenant");
|
||||
doPost("/api/tenant", savedTenant, Tenant.class);
|
||||
Tenant foundTenant = doGet("/api/tenant/" + savedTenant.getId().getId().toString(), Tenant.class);
|
||||
Assert.assertEquals(foundTenant.getTitle(), savedTenant.getTitle());
|
||||
|
||||
testBroadcastEntityStateChangeEventTimeManyTimeTenant(savedTenant, ComponentLifecycleEvent.UPDATED, 1);
|
||||
|
||||
doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
||||
.andExpect(status().isOk());
|
||||
|
||||
testBroadcastEntityStateChangeEventTimeManyTimeTenant(savedTenant, ComponentLifecycleEvent.DELETED, 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -104,7 +121,14 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
loginSysAdmin();
|
||||
Tenant tenant = new Tenant();
|
||||
tenant.setTitle(RandomStringUtils.randomAlphanumeric(300));
|
||||
doPost("/api/tenant", tenant).andExpect(statusReason(containsString("length of title must be equal or less than 255")));
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
|
||||
doPost("/api/tenant", tenant)
|
||||
.andExpect(status().isBadRequest())
|
||||
.andExpect(statusReason(containsString(msgErrorFieldLength("title"))));
|
||||
|
||||
testBroadcastEntityStateChangeEventNeverTenant();
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -136,21 +160,31 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
@Test
|
||||
public void testSaveTenantWithEmptyTitle() throws Exception {
|
||||
loginSysAdmin();
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
|
||||
Tenant tenant = new Tenant();
|
||||
doPost("/api/tenant", tenant)
|
||||
.andExpect(status().isBadRequest())
|
||||
.andExpect(statusReason(containsString("Tenant title should be specified")));
|
||||
.andExpect(statusReason(containsString("Tenant title " + msgErrorShouldBeSpecified)));
|
||||
|
||||
testBroadcastEntityStateChangeEventNeverTenant();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSaveTenantWithInvalidEmail() throws Exception {
|
||||
loginSysAdmin();
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
|
||||
Tenant tenant = new Tenant();
|
||||
tenant.setTitle("My tenant");
|
||||
tenant.setEmail("invalid@mail");
|
||||
doPost("/api/tenant", tenant)
|
||||
.andExpect(status().isBadRequest())
|
||||
.andExpect(statusReason(containsString("Invalid email address format")));
|
||||
|
||||
testBroadcastEntityStateChangeEventNeverTenant();
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -159,10 +193,13 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
Tenant tenant = new Tenant();
|
||||
tenant.setTitle("My tenant");
|
||||
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
||||
doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
||||
|
||||
String tenantIdStr = savedTenant.getId().getId().toString();
|
||||
doDelete("/api/tenant/" + tenantIdStr)
|
||||
.andExpect(status().isOk());
|
||||
doGet("/api/tenant/" + savedTenant.getId().getId().toString())
|
||||
.andExpect(status().isNotFound());
|
||||
doGet("/api/tenant/" + tenantIdStr)
|
||||
.andExpect(status().isNotFound())
|
||||
.andExpect(statusReason(containsString(msgErrorNoFound("Tenant", tenantIdStr))));
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -175,8 +212,11 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
Assert.assertEquals(1, pageData.getData().size());
|
||||
tenants.addAll(pageData.getData());
|
||||
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
|
||||
int cntEntity = 56;
|
||||
List<ListenableFuture<Tenant>> createFutures = new ArrayList<>(56);
|
||||
for (int i = 0; i < 56; i++) {
|
||||
for (int i = 0; i < cntEntity; i++) {
|
||||
Tenant tenant = new Tenant();
|
||||
tenant.setTitle("Tenant" + i);
|
||||
createFutures.add(executor.submit(() ->
|
||||
@ -184,6 +224,8 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
}
|
||||
tenants.addAll(Futures.allAsList(createFutures).get(TIMEOUT, TimeUnit.SECONDS));
|
||||
|
||||
testBroadcastEntityStateChangeEventTimeManyTimeTenant(new Tenant(), ComponentLifecycleEvent.CREATED, cntEntity);
|
||||
|
||||
List<Tenant> loadedTenants = new ArrayList<>();
|
||||
pageLink = new PageLink(17);
|
||||
do {
|
||||
@ -200,6 +242,8 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
.filter((t) -> !TEST_TENANT_NAME.equals(t.getTitle()))
|
||||
.collect(Collectors.toList()), executor).get(TIMEOUT, TimeUnit.SECONDS);
|
||||
|
||||
testBroadcastEntityStateChangeEventTimeManyTimeTenant(new Tenant(), ComponentLifecycleEvent.DELETED, cntEntity);
|
||||
|
||||
pageLink = new PageLink(17);
|
||||
pageData = doGetTypedWithPageLink("/api/tenants?", PAGE_DATA_TENANT_TYPE_REF, pageLink);
|
||||
Assert.assertFalse(pageData.hasNext());
|
||||
@ -464,7 +508,9 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
|
||||
login(username, password);
|
||||
for (Queue queue : foundTenantQueues) {
|
||||
doGet("/api/queues/" + queue.getId()).andExpect(status().isNotFound());
|
||||
doGet("/api/queues/" + queue.getId())
|
||||
.andExpect(status().isNotFound())
|
||||
.andExpect(statusReason(containsString(msgErrorNotFound)));
|
||||
}
|
||||
|
||||
loginSysAdmin();
|
||||
@ -519,4 +565,26 @@ public abstract class BaseTenantControllerTest extends AbstractControllerTest {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void testBroadcastEntityStateChangeEventTimeManyTimeTenant(Tenant tenant, ComponentLifecycleEvent event, int cntTime) {
|
||||
ArgumentMatcher<Tenant> matcherTenant = cntTime == 1 ? argument -> argument.equals(tenant) :
|
||||
argument -> argument.getClass().equals(Tenant.class);
|
||||
if (ComponentLifecycleEvent.DELETED.equals(event)) {
|
||||
Mockito.verify(tbClusterService, times( cntTime)).onTenantDelete(Mockito.argThat(matcherTenant),
|
||||
Mockito.isNull());
|
||||
} else {
|
||||
Mockito.verify(tbClusterService, times( cntTime)).onTenantChange(Mockito.argThat(matcherTenant),
|
||||
Mockito.isNull());
|
||||
}
|
||||
TenantId tenantId = cntTime == 1 ? tenant.getId() : (TenantId) createEntityId_NULL_UUID(tenant);
|
||||
testBroadcastEntityStateChangeEventTime(tenantId, tenantId, cntTime);
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
}
|
||||
|
||||
private void testBroadcastEntityStateChangeEventNeverTenant() {
|
||||
Mockito.verify(tbClusterService, never()).onTenantChange(Mockito.any(Tenant.class),
|
||||
Mockito.isNull());
|
||||
testBroadcastEntityStateChangeEventNever(createEntityId_NULL_UUID(new Tenant()));
|
||||
Mockito.reset(tbClusterService, auditLogService);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user