|
|
|
@ -25,9 +25,11 @@ import io.jsonwebtoken.Header; |
|
|
|
import io.jsonwebtoken.Jwt; |
|
|
|
import io.jsonwebtoken.Jwts; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.apache.http.HttpStatus; |
|
|
|
import org.awaitility.Awaitility; |
|
|
|
import org.hamcrest.Matcher; |
|
|
|
import org.hibernate.exception.ConstraintViolationException; |
|
|
|
import org.jetbrains.annotations.NotNull; |
|
|
|
import org.junit.After; |
|
|
|
import org.junit.Assert; |
|
|
|
import org.junit.Before; |
|
|
|
@ -177,6 +179,7 @@ public abstract class AbstractWebTest extends AbstractInMemoryStorageTest { |
|
|
|
* and {@link org.springframework.mock.web.MockAsyncContext#getTimeout()} |
|
|
|
*/ |
|
|
|
private static final long DEFAULT_TIMEOUT = -1L; |
|
|
|
private static final int CLEANUP_TENANT_RETRIES_COUNT = 3; |
|
|
|
|
|
|
|
protected MediaType contentType = MediaType.APPLICATION_JSON; |
|
|
|
|
|
|
|
@ -330,10 +333,6 @@ public abstract class AbstractWebTest extends AbstractInMemoryStorageTest { |
|
|
|
log.debug("Executing web test teardown"); |
|
|
|
|
|
|
|
loginSysAdmin(); |
|
|
|
doDelete("/api/tenant/" + tenantId.getId().toString()) |
|
|
|
.andExpect(status().isOk()); |
|
|
|
deleteDifferentTenant(); |
|
|
|
|
|
|
|
verifyNoTenantsLeft(); |
|
|
|
|
|
|
|
tenantProfileService.deleteTenantProfiles(TenantId.SYS_TENANT_ID); |
|
|
|
@ -341,7 +340,30 @@ public abstract class AbstractWebTest extends AbstractInMemoryStorageTest { |
|
|
|
log.info("Executed web test teardown"); |
|
|
|
} |
|
|
|
|
|
|
|
void verifyNoTenantsLeft() throws Exception { |
|
|
|
private void verifyNoTenantsLeft() throws Exception { |
|
|
|
List<Tenant> loadedTenants = getAllTenants(); |
|
|
|
if (!loadedTenants.isEmpty()) { |
|
|
|
loadedTenants.forEach(tenant -> deleteTenant(tenant.getId())); |
|
|
|
loadedTenants = getAllTenants(); |
|
|
|
} |
|
|
|
assertThat(loadedTenants).as("All tenants expected to be deleted, but some tenants left in the database").isEmpty(); |
|
|
|
} |
|
|
|
|
|
|
|
private void deleteTenant(TenantId tenantId) { |
|
|
|
int status = 0; |
|
|
|
int retries = 0; |
|
|
|
while (status != HttpStatus.SC_OK && retries < CLEANUP_TENANT_RETRIES_COUNT) { |
|
|
|
retries++; |
|
|
|
try { |
|
|
|
status = doDelete("/api/tenant/" + tenantId.getId().toString()) |
|
|
|
.andReturn().getResponse().getStatus(); |
|
|
|
} catch (Exception e) { |
|
|
|
throw new RuntimeException(e); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@NotNull |
|
|
|
private List<Tenant> getAllTenants() throws Exception { |
|
|
|
List<Tenant> loadedTenants = new ArrayList<>(); |
|
|
|
PageLink pageLink = new PageLink(10); |
|
|
|
PageData<Tenant> pageData; |
|
|
|
@ -353,8 +375,7 @@ public abstract class AbstractWebTest extends AbstractInMemoryStorageTest { |
|
|
|
pageLink = pageLink.nextPageLink(); |
|
|
|
} |
|
|
|
} while (pageData.hasNext()); |
|
|
|
|
|
|
|
assertThat(loadedTenants).as("All tenants expected to be deleted, but some tenants left in the database").isEmpty(); |
|
|
|
return loadedTenants; |
|
|
|
} |
|
|
|
|
|
|
|
protected void loginSysAdmin() throws Exception { |
|
|
|
@ -465,8 +486,7 @@ public abstract class AbstractWebTest extends AbstractInMemoryStorageTest { |
|
|
|
protected void deleteDifferentTenant() throws Exception { |
|
|
|
if (savedDifferentTenant != null) { |
|
|
|
loginSysAdmin(); |
|
|
|
doDelete("/api/tenant/" + savedDifferentTenant.getId().getId().toString()) |
|
|
|
.andExpect(status().isOk()); |
|
|
|
deleteTenant(savedDifferentTenant.getId()); |
|
|
|
savedDifferentTenant = null; |
|
|
|
} |
|
|
|
} |
|
|
|
|