From de8d1178e743ae6e07df398781b7692c5d5971fc Mon Sep 17 00:00:00 2001 From: devplant Date: Mon, 3 Apr 2023 12:04:57 +0300 Subject: [PATCH] RED-5504 - Prevent using exact same database schema/buckets/index for multiple tenants - update junit test --- .../server/integration/tests/TenantsTest.java | 81 ++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TenantsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TenantsTest.java index 0842ced06..3dcfe9642 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TenantsTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/TenantsTest.java @@ -12,11 +12,13 @@ import org.springframework.beans.factory.annotation.Autowired; import com.iqser.red.keycloak.commons.roles.ApplicationRoles; import com.iqser.red.service.peristence.v1.server.integration.client.TenantsClient; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.multitenancy.AzureStorageConnection; import com.iqser.red.service.persistence.service.v1.api.shared.model.multitenancy.DatabaseConnection; import com.iqser.red.service.persistence.service.v1.api.shared.model.multitenancy.RedUser; import com.iqser.red.service.persistence.service.v1.api.shared.model.multitenancy.S3StorageConnection; import com.iqser.red.service.persistence.service.v1.api.shared.model.multitenancy.SearchConnection; import com.iqser.red.service.persistence.service.v1.api.shared.model.multitenancy.TenantRequest; +import com.iqser.red.service.persistence.service.v1.api.shared.model.multitenancy.TenantResponse; import feign.FeignException; @@ -72,6 +74,8 @@ public class TenantsTest extends AbstractPersistenceServerServiceTest { @Test public void testCreateTenantWithDuplicateStorageS3() { + TenantResponse firstTenant = tenantsClient.getTenants().get(0); + var tenantRequest = TenantRequest.builder() .tenantId("redaction2") .displayName("Redaction default2") @@ -79,7 +83,7 @@ public class TenantsTest extends AbstractPersistenceServerServiceTest { .databaseConnection(DatabaseConnection.builder() .driver("postgresql") .host("localhost") - .port("port") + .port(firstTenant.getDatabaseConnection().getPort()) .database("redaction") .schema("myschema2") .username("redaction") @@ -112,4 +116,79 @@ public class TenantsTest extends AbstractPersistenceServerServiceTest { assertThat(e.status()).isEqualTo(409); } } + + @Test + public void testCreateTenantWithDuplicateAzure() { + + TenantResponse firstTenant = tenantsClient.getTenants().get(0); + + var tenantRequest = TenantRequest.builder() + .tenantId("redaction2") + .displayName("Redaction default2") + .guid(UUID.randomUUID().toString()) + .databaseConnection(DatabaseConnection.builder() + .driver("postgresql") + .host("localhost") + .port(firstTenant.getDatabaseConnection().getPort()) + .database("redaction") + .schema("myschema2") + .username("redaction") + .password("redaction") + .build()) + .searchConnection(SearchConnection.builder() + .hosts(Set.of("elasticsearchHost2")) + .port(9200) + .scheme("https2") + .username("elastic") + .numberOfShards("1") + .numberOfReplicas("5") + .build()) + .azureStorageConnection(AzureStorageConnection.builder() + .connectionString("connection") + .containerName("container") + .build()) + .redUsers(List.of(RedUser.builder().username("user").password("password").redRoles(ApplicationRoles.ROLE_DATA.keySet()).build(), + RedUser.builder().username("manageradmin1@test.com").password("secret").redRoles(ApplicationRoles.ROLE_DATA.keySet()).build(), + RedUser.builder().username("manageradmin2@test.com").password("secret").redRoles(ApplicationRoles.ROLE_DATA.keySet()).build())) + .build(); + + tenantsClient.createTenant(tenantRequest); + assertThat(tenantsClient.getTenants().size()).isEqualTo(2); + + var tenantRequest2 = TenantRequest.builder() + .tenantId("redaction2") + .displayName("Redaction default2") + .guid(UUID.randomUUID().toString()) + .databaseConnection(DatabaseConnection.builder() + .driver("postgresql") + .host("localhost") + .port(firstTenant.getDatabaseConnection().getPort()) + .database("redaction") + .schema("myschema3") + .username("redaction") + .password("redaction") + .build()) + .searchConnection(SearchConnection.builder() + .hosts(Set.of("elasticsearchHost2")) + .port(9200) + .scheme("https2") + .username("elastic") + .numberOfShards("1") + .numberOfReplicas("5") + .build()) + .azureStorageConnection(AzureStorageConnection.builder() + .connectionString("connection") + .containerName("container") + .build()) + .redUsers(List.of(RedUser.builder().username("user").password("password").redRoles(ApplicationRoles.ROLE_DATA.keySet()).build(), + RedUser.builder().username("manageradmin1@test.com").password("secret").redRoles(ApplicationRoles.ROLE_DATA.keySet()).build(), + RedUser.builder().username("manageradmin2@test.com").password("secret").redRoles(ApplicationRoles.ROLE_DATA.keySet()).build())) + .build(); + + try { + tenantsClient.createTenant(tenantRequest2); + } catch(FeignException e) { + assertThat(e.status()).isEqualTo(409); + } + } }