From e66082013b4ccdbe81c4ef57423311353126dc35 Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Fri, 1 Sep 2023 11:23:49 +0200 Subject: [PATCH 1/3] RED-7175: updated dependencies and adapted tests --- build.gradle.kts | 4 +-- .../knecon/fforesight/tests/TenantsTest.java | 34 +++++++++++-------- .../fforesight/utils/TestTenantService.java | 15 ++++++-- 3 files changed, 34 insertions(+), 19 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 1e244ab..39a106e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -82,7 +82,7 @@ tasks.named("bootBuildImage") { dependencies { - implementation("com.knecon.fforesight:keycloak-commons:0.18.0") + implementation("com.knecon.fforesight:keycloak-commons:0.19.0") implementation("com.knecon.fforesight:swagger-commons:0.5.0") implementation("org.postgresql:postgresql:42.5.4") implementation("com.google.guava:guava:31.1-jre") @@ -99,7 +99,7 @@ dependencies { implementation("org.apache.commons:commons-lang3:3.12.0") implementation("commons-validator:commons-validator:1.7") implementation("org.springframework.boot:spring-boot-configuration-processor") - implementation("com.iqser.red.commons:storage-commons:2.22.0") + implementation("com.iqser.red.commons:storage-commons:2.43.0") testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.springframework.cloud:spring-cloud-starter-openfeign") testImplementation("org.projectlombok:lombok") diff --git a/src/test/java/com/knecon/fforesight/tests/TenantsTest.java b/src/test/java/com/knecon/fforesight/tests/TenantsTest.java index f2c3cfc..9c141fb 100644 --- a/src/test/java/com/knecon/fforesight/tests/TenantsTest.java +++ b/src/test/java/com/knecon/fforesight/tests/TenantsTest.java @@ -22,6 +22,7 @@ import com.knecon.fforesight.tenantusermanagement.service.RealmService; import com.knecon.fforesight.utils.TestTenantService; import feign.FeignException; +import software.amazon.awssdk.regions.Region; public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { @@ -37,7 +38,6 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { @Autowired private RealmService realmService; - private static final String PASSWORD = "**********"; @@ -60,6 +60,7 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { } + @Test public void testUpdateTenant() { @@ -92,7 +93,9 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { .key("minioadmin") .secret("minioadmin") .bucketName("redaction2") - .endpoint("http://localhost:" + minioPort).build()) + .region(Region.AWS_GLOBAL.id()) + .endpoint("http://localhost:" + minioPort) + .build()) .build(); var updatedTenant = tenantsClient.updateTenant("new_tenant", tenantRequest); @@ -122,8 +125,10 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { TenantContext.clear(); } + @Test public void testUpdateTenantWithIncorrectS3Storage() { + testTenantService.createTestTenantIfNotExists("new_tenant", minioPort); TenantContext.setTenantId("new_tenant"); @@ -145,17 +150,16 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { TenantContext.clear(); } + @Test public void testUpdateTenantWithIncorrectAzureStorage() { + testTenantService.createTestTenantWithoutStorageIfNotExist("new_tenant_without_storage"); TenantContext.setTenantId("new_tenant_without_storage"); var tenantRequest = TenantRequest.builder() .tenantId("new_tenant_without_storage") - .azureStorageConnection(AzureStorageConnection.builder() - .connectionString("updated_connection") - .containerName("updated_container") - .build()) + .azureStorageConnection(AzureStorageConnection.builder().connectionString("updated_connection").containerName("updated_container").build()) .build(); var exception = assertThrows(FeignException.BadRequest.class, () -> tenantsClient.updateTenant("new_tenant_without_storage", tenantRequest)); @@ -164,17 +168,16 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { TenantContext.clear(); } + @Test public void testUpdateTenantWithBothAzureAndS3Storage() { + testTenantService.createTestTenantIfNotExists("new_tenant", minioPort); TenantContext.setTenantId("new_tenant"); var tenantRequest = TenantRequest.builder() .tenantId("new_tenant") - .azureStorageConnection(AzureStorageConnection.builder() - .connectionString("updated_connection") - .containerName("updated_container") - .build()) + .azureStorageConnection(AzureStorageConnection.builder().connectionString("updated_connection").containerName("updated_container").build()) .s3StorageConnection(S3StorageConnection.builder() .key("updated_key") .bucketName("updated_bucket") @@ -191,17 +194,16 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { TenantContext.clear(); } + @Test public void testUpdateTenantFromS3ToAzureStorage() { + testTenantService.createTestTenantIfNotExists("new_tenant_with_s3", minioPort); TenantContext.setTenantId("new_tenant_with_s3"); var tenantRequest = TenantRequest.builder() .tenantId("new_tenant_with_s3") - .azureStorageConnection(AzureStorageConnection.builder() - .connectionString("updated_connection") - .containerName("updated_container") - .build()) + .azureStorageConnection(AzureStorageConnection.builder().connectionString("updated_connection").containerName("updated_container").build()) .build(); var exception = assertThrows(FeignException.BadRequest.class, () -> tenantsClient.updateTenant("new_tenant_with_s3", tenantRequest)); @@ -210,8 +212,10 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { TenantContext.clear(); } + @Test public void testRemovePasswords() { + testTenantService.createTestTenantIfNotExists("new_tenant_passwords", minioPort); TenantContext.setTenantId("new_tenant_passwords"); @@ -230,6 +234,7 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { @Test public void testPasswordPolicy() { + testTenantService.createTestTenantIfNotExists("new_tenant", minioPort); TenantContext.setTenantId("new_tenant"); @@ -242,4 +247,5 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { TenantContext.clear(); } + } diff --git a/src/test/java/com/knecon/fforesight/utils/TestTenantService.java b/src/test/java/com/knecon/fforesight/utils/TestTenantService.java index 3f0e171..a9ecbb0 100644 --- a/src/test/java/com/knecon/fforesight/utils/TestTenantService.java +++ b/src/test/java/com/knecon/fforesight/utils/TestTenantService.java @@ -19,6 +19,7 @@ import com.knecon.fforesight.tenantusermanagement.model.TenantUser; import com.knecon.fforesight.testcontainers.SpringPostgreSQLTestContainer; import lombok.RequiredArgsConstructor; +import software.amazon.awssdk.regions.Region; @Service @RequiredArgsConstructor @@ -29,6 +30,7 @@ public class TestTenantService { private final TokenService tokenService; + public void createTestTenantIfNotExists(String testTenantId, int actualPort) { try { @@ -42,7 +44,9 @@ public class TestTenantService { } + public void createTestTenantWithoutStorageIfNotExist(String testTenantId) { + try { var tenantExists = internalTenantsResource.getTenant(testTenantId); assertThat(tenantExists.getGuid()).isNotBlank(); @@ -53,6 +57,7 @@ public class TestTenantService { } } + private void createUser(String testTenantId, int actualPort, boolean withStorage) { // not found TenantRequest tenantRequest; @@ -73,9 +78,13 @@ public class TestTenantService { .searchConnection(SearchConnection.builder().hosts(Set.of("localhost")).port(9200).scheme("http").numberOfShards("1").numberOfReplicas("5").build()); if (withStorage) { - tenantRequest = tenantRequestBuilder - .s3StorageConnection(S3StorageConnection.builder().key("minioadmin").secret("minioadmin").bucketName("redaction").endpoint("http://localhost:" + actualPort).build()) - .build(); + tenantRequest = tenantRequestBuilder.s3StorageConnection(S3StorageConnection.builder() + .key("minioadmin") + .secret("minioadmin") + .bucketName(testTenantId.replaceAll("-", "").replaceAll("_", "")) + .endpoint("http://localhost:" + actualPort) + .region(Region.AWS_GLOBAL.id()) + .build()).build(); } else { tenantRequest = tenantRequestBuilder.build(); } From 32d12d4155ea87dc455d8db8783a1e4d23b6eadf Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Fri, 1 Sep 2023 11:31:30 +0200 Subject: [PATCH 2/3] RED-7175: updated dependencies and adapted tests --- .../AbstractTenantUserManagementIntegrationTest.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/knecon/fforesight/AbstractTenantUserManagementIntegrationTest.java b/src/test/java/com/knecon/fforesight/AbstractTenantUserManagementIntegrationTest.java index 3991da8..74f1827 100644 --- a/src/test/java/com/knecon/fforesight/AbstractTenantUserManagementIntegrationTest.java +++ b/src/test/java/com/knecon/fforesight/AbstractTenantUserManagementIntegrationTest.java @@ -1,8 +1,5 @@ package com.knecon.fforesight; -import java.io.IOException; - -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.amqp.rabbit.core.RabbitTemplate; @@ -55,10 +52,12 @@ public class AbstractTenantUserManagementIntegrationTest { @BeforeEach - public void createTestTenant(){ + public void createTestTenant() { + testTenantService.createTestTenantIfNotExists(TEST_TENANT_ID, minioPort); } + @Slf4j static class Initializer implements ApplicationContextInitializer { From e6314a220acf626250a3edd8aebfb425f37eefa2 Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Fri, 1 Sep 2023 15:20:49 +0200 Subject: [PATCH 3/3] RED-7175: added index name to search connection entity and adapted the code accordingly --- build.gradle.kts | 2 +- .../dev/DevTestTenantService.java | 2 +- .../entity/SearchConnectionEntity.java | 2 ++ .../tenantusermanagement/model/TenantRequest.java | 1 - .../service/TenantManagementService.java | 3 +++ .../resources/db/changelog/db.changelog-master.yaml | 2 ++ .../master/6-add-index-name-column.changelog.yaml | 11 +++++++++++ .../java/com/knecon/fforesight/tests/TenantsTest.java | 1 + .../knecon/fforesight/utils/TestTenantService.java | 2 +- 9 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/db/changelog/master/6-add-index-name-column.changelog.yaml diff --git a/build.gradle.kts b/build.gradle.kts index 39a106e..3706ac3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -82,7 +82,7 @@ tasks.named("bootBuildImage") { dependencies { - implementation("com.knecon.fforesight:keycloak-commons:0.19.0") + implementation("com.knecon.fforesight:keycloak-commons:0.20.0") implementation("com.knecon.fforesight:swagger-commons:0.5.0") implementation("org.postgresql:postgresql:42.5.4") implementation("com.google.guava:guava:31.1-jre") diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTestTenantService.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTestTenantService.java index 05ef0fc..804e117 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTestTenantService.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTestTenantService.java @@ -81,7 +81,7 @@ public class DevTestTenantService { .username(tenantsDBName) .password(tenantsDBPassword) .build()) - .searchConnection(SearchConnection.builder().hosts(Set.of("localhost")).port(9200).scheme("http").numberOfShards("1").numberOfReplicas("5").build()) + .searchConnection(SearchConnection.builder().hosts(Set.of("localhost")).port(9200).scheme("http").numberOfShards("1").numberOfReplicas("5").indexName("indexname").build()) .s3StorageConnection(S3StorageConnection.builder().key("minioadmin").secret("minioadmin").bucketName("redaction").endpoint("http://localhost:9000").build()) .build(); diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/entity/SearchConnectionEntity.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/entity/SearchConnectionEntity.java index 0426436..14c2fff 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/entity/SearchConnectionEntity.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/entity/SearchConnectionEntity.java @@ -34,5 +34,7 @@ public class SearchConnectionEntity { private String numberOfShards; @Column(name = "search_number_of_replicas") private String numberOfReplicas; + @Column(name = "search_index_name") + private String indexName; } diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/model/TenantRequest.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/model/TenantRequest.java index dd5ced6..c4ee21a 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/model/TenantRequest.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/model/TenantRequest.java @@ -10,7 +10,6 @@ import com.knecon.fforesight.tenantcommons.model.SearchConnection; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.Pattern; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java index 0ecb211..4ef1bab 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java @@ -113,6 +113,7 @@ public class TenantManagementService implements TenantProvider { .password(encryptionService.encrypt(tenantRequest.getSearchConnection().getPassword())) .numberOfShards(tenantRequest.getSearchConnection().getNumberOfShards()) .numberOfReplicas(tenantRequest.getSearchConnection().getNumberOfReplicas()) + .indexName(tenantRequest.getSearchConnection().getIndexName()) .build()) .build(); @@ -407,6 +408,7 @@ public class TenantManagementService implements TenantProvider { .password(encryptionService.encrypt(searchConnection.getPassword())) .numberOfShards(searchConnection.getNumberOfShards()) .numberOfReplicas(searchConnection.getNumberOfReplicas()) + .indexName(searchConnection.getIndexName()) .build()); } @@ -508,6 +510,7 @@ public class TenantManagementService implements TenantProvider { .numberOfShards(entity.getSearchConnection().getNumberOfShards()) .numberOfReplicas(entity.getSearchConnection().getNumberOfReplicas()) .password(entity.getSearchConnection().getPassword()) + .indexName(entity.getSearchConnection().getIndexName()) .build()) .build(); diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml index 305dd4f..aee0958 100644 --- a/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/src/main/resources/db/changelog/db.changelog-master.yaml @@ -7,3 +7,5 @@ databaseChangeLog: file: db/changelog/master/4-add-unique-constraint-for-tenants-table.yaml - include: file: db/changelog/master/5-add-details-column.changelog.yaml + - include: + file: db/changelog/master/6-add-index-name-column.changelog.yaml diff --git a/src/main/resources/db/changelog/master/6-add-index-name-column.changelog.yaml b/src/main/resources/db/changelog/master/6-add-index-name-column.changelog.yaml new file mode 100644 index 0000000..1c6882a --- /dev/null +++ b/src/main/resources/db/changelog/master/6-add-index-name-column.changelog.yaml @@ -0,0 +1,11 @@ +databaseChangeLog: + - changeSet: + id: add-index-name-column-to-tenant + author: ali + changes: + - addColumn: + tableName: tenant + columns: + - column: + name: search_index_name + type: TEXT \ No newline at end of file diff --git a/src/test/java/com/knecon/fforesight/tests/TenantsTest.java b/src/test/java/com/knecon/fforesight/tests/TenantsTest.java index 9c141fb..a01917f 100644 --- a/src/test/java/com/knecon/fforesight/tests/TenantsTest.java +++ b/src/test/java/com/knecon/fforesight/tests/TenantsTest.java @@ -78,6 +78,7 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { .port(123) .username("updated_username") .scheme("updated_scheme") + .indexName("indexname") .build()) .databaseConnection(DatabaseConnection.builder() .database("updated_db") diff --git a/src/test/java/com/knecon/fforesight/utils/TestTenantService.java b/src/test/java/com/knecon/fforesight/utils/TestTenantService.java index a9ecbb0..2ef7930 100644 --- a/src/test/java/com/knecon/fforesight/utils/TestTenantService.java +++ b/src/test/java/com/knecon/fforesight/utils/TestTenantService.java @@ -75,7 +75,7 @@ public class TestTenantService { .username(SpringPostgreSQLTestContainer.getInstance().getUsername()) .password(SpringPostgreSQLTestContainer.getInstance().getPassword()) .build()) - .searchConnection(SearchConnection.builder().hosts(Set.of("localhost")).port(9200).scheme("http").numberOfShards("1").numberOfReplicas("5").build()); + .searchConnection(SearchConnection.builder().hosts(Set.of("localhost")).port(9200).scheme("http").numberOfShards("1").numberOfReplicas("5").indexName("indexname").build()); if (withStorage) { tenantRequest = tenantRequestBuilder.s3StorageConnection(S3StorageConnection.builder()