diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/api/external/TenantsResource.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/api/external/TenantsResource.java index 23ee2aa..808514a 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/api/external/TenantsResource.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/api/external/TenantsResource.java @@ -18,7 +18,8 @@ import com.knecon.fforesight.tenantcommons.model.TenantResponse; import com.knecon.fforesight.tenantcommons.model.UpdateDetailsRequest; import com.knecon.fforesight.tenantusermanagement.model.DeploymentKeyResponse; import com.knecon.fforesight.tenantusermanagement.model.SimpleTenantResponse; -import com.knecon.fforesight.tenantusermanagement.model.TenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.CreateTenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.UpdateTenantRequest; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -36,7 +37,7 @@ public interface TenantsResource { @PostMapping(value = TENANTS_PATH, consumes = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Create a new tenant", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")}) - void createTenant(@RequestBody TenantRequest tenant); + void createTenant(@RequestBody CreateTenantRequest tenant); @ResponseBody @@ -63,7 +64,7 @@ public interface TenantsResource { @PutMapping(value = TENANTS_TENANT_ID_PATH, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Update existing tenant", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")}) - TenantResponse updateTenant(@PathVariable("tenantId") String tenantId, @RequestBody TenantRequest tenantRequest); + TenantResponse updateTenant(@PathVariable("tenantId") String tenantId, @RequestBody UpdateTenantRequest tenantRequest); @PostMapping(value = TENANTS_TENANT_ID_PATH + "/details", consumes = MediaType.APPLICATION_JSON_VALUE) diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/api/internal/InternalTenantsResource.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/api/internal/InternalTenantsResource.java index bf33742..a679525 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/api/internal/InternalTenantsResource.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/api/internal/InternalTenantsResource.java @@ -16,7 +16,8 @@ import com.knecon.fforesight.tenantcommons.model.TenantResponse; import com.knecon.fforesight.tenantcommons.model.UpdateDetailsRequest; import com.knecon.fforesight.tenantusermanagement.model.DeploymentKeyResponse; import com.knecon.fforesight.tenantusermanagement.model.SimpleTenantResponse; -import com.knecon.fforesight.tenantusermanagement.model.TenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.CreateTenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.UpdateTenantRequest; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -38,7 +39,7 @@ public interface InternalTenantsResource { @PostMapping(value = "/tenants", consumes = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Creates a new Tenant", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")}) - TenantResponse createTenant(@RequestBody TenantRequest tenant); + TenantResponse createTenant(@RequestBody CreateTenantRequest tenant); @GetMapping(value = "/tenants", produces = MediaType.APPLICATION_JSON_VALUE) @@ -56,7 +57,7 @@ public interface InternalTenantsResource { @PutMapping(value = "/tenants/{tenantId}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Update existing tenant", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")}) - TenantResponse updateTenant(@PathVariable("tenantId") String tenantId, @RequestBody TenantRequest tenantRequest); + TenantResponse updateTenant(@PathVariable("tenantId") String tenantId, @RequestBody UpdateTenantRequest tenantRequest); @GetMapping(value = "/tenants/simple", produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/controller/external/TenantsController.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/controller/external/TenantsController.java index 76eb796..71a4d7f 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/controller/external/TenantsController.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/controller/external/TenantsController.java @@ -23,7 +23,8 @@ import com.knecon.fforesight.tenantusermanagement.api.external.PublicResource; import com.knecon.fforesight.tenantusermanagement.api.external.TenantsResource; import com.knecon.fforesight.tenantusermanagement.model.DeploymentKeyResponse; import com.knecon.fforesight.tenantusermanagement.model.SimpleTenantResponse; -import com.knecon.fforesight.tenantusermanagement.model.TenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.CreateTenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.UpdateTenantRequest; import com.knecon.fforesight.tenantusermanagement.service.DeploymentKeyService; import com.knecon.fforesight.tenantusermanagement.service.TenantManagementService; @@ -39,7 +40,7 @@ public class TenantsController implements TenantsResource, PublicResource { @PreAuthorize("hasAuthority('" + CREATE_TENANT + "')") - public void createTenant(@Valid @RequestBody TenantRequest tenantRequest) { + public void createTenant(@Valid @RequestBody CreateTenantRequest tenantRequest) { try { tenantManagementService.createTenant(tenantRequest); @@ -83,7 +84,7 @@ public class TenantsController implements TenantsResource, PublicResource { @PreAuthorize("hasAuthority('" + UPDATE_TENANT + "')") - public TenantResponse updateTenant(String tenantId, @RequestBody TenantRequest tenantRequest) { + public TenantResponse updateTenant(String tenantId, @RequestBody UpdateTenantRequest tenantRequest) { TenantResponse tenantResponse = tenantManagementService.updateTenant(tenantId, tenantRequest); return tenantManagementService.removePasswords(tenantResponse); diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/controller/internal/InternalTenantsController.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/controller/internal/InternalTenantsController.java index 82d0229..245af8d 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/controller/internal/InternalTenantsController.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/controller/internal/InternalTenantsController.java @@ -9,16 +9,14 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.server.ResponseStatusException; import com.fasterxml.jackson.databind.JsonNode; -import com.knecon.fforesight.tenantcommons.TenantContext; import com.knecon.fforesight.tenantcommons.model.TenantResponse; import com.knecon.fforesight.tenantcommons.model.UpdateDetailsRequest; import com.knecon.fforesight.tenantusermanagement.api.internal.InternalResource; import com.knecon.fforesight.tenantusermanagement.api.internal.InternalTenantsResource; -import com.knecon.fforesight.tenantusermanagement.events.TenantCreatedEvent; -import com.knecon.fforesight.tenantusermanagement.events.TenantSyncEvent; import com.knecon.fforesight.tenantusermanagement.model.DeploymentKeyResponse; import com.knecon.fforesight.tenantusermanagement.model.SimpleTenantResponse; -import com.knecon.fforesight.tenantusermanagement.model.TenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.CreateTenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.UpdateTenantRequest; import com.knecon.fforesight.tenantusermanagement.service.DeploymentKeyService; import com.knecon.fforesight.tenantusermanagement.service.TenantManagementService; @@ -40,7 +38,7 @@ public class InternalTenantsController implements InternalTenantsResource, Inter } - public TenantResponse createTenant(@Valid @RequestBody TenantRequest tenantRequest) { + public TenantResponse createTenant(@Valid @RequestBody CreateTenantRequest tenantRequest) { try { return tenantManagementService.createTenant(tenantRequest); @@ -63,7 +61,7 @@ public class InternalTenantsController implements InternalTenantsResource, Inter @Override - public TenantResponse updateTenant(String tenantId, TenantRequest tenantRequest) { + public TenantResponse updateTenant(String tenantId, UpdateTenantRequest tenantRequest) { return tenantManagementService.updateTenant(tenantId, tenantRequest); } 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 cf6afdc..2cb0512 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTestTenantService.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTestTenantService.java @@ -15,14 +15,12 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.StatementCallback; import org.springframework.jdbc.datasource.SingleConnectionDataSource; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import com.knecon.fforesight.tenantcommons.model.AzureStorageConnection; import com.knecon.fforesight.tenantcommons.model.DatabaseConnection; import com.knecon.fforesight.tenantcommons.model.S3StorageConnection; -import com.knecon.fforesight.tenantcommons.model.SearchConnection; import com.knecon.fforesight.tenantusermanagement.model.SearchConnectionRequest; -import com.knecon.fforesight.tenantusermanagement.model.TenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.CreateTenantRequest; import com.knecon.fforesight.tenantusermanagement.model.TenantUser; import com.knecon.fforesight.tenantusermanagement.repository.TenantRepository; import com.knecon.fforesight.tenantusermanagement.service.TenantManagementService; @@ -74,7 +72,7 @@ public class DevTestTenantService { createDatabase(tenantsDBName, tenantsDBPassword); createSchema(jdbcUrl, tenantId, tenantsDBName, tenantsDBPassword); - var tenantRequest = TenantRequest.builder() + var tenantRequest = CreateTenantRequest.builder() .tenantId(tenantId) .displayName(tenantId) .guid(UUID.randomUUID().toString()) diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/model/TenantRequest.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/model/CreateTenantRequest.java similarity index 94% rename from src/main/java/com/knecon/fforesight/tenantusermanagement/model/TenantRequest.java rename to src/main/java/com/knecon/fforesight/tenantusermanagement/model/CreateTenantRequest.java index 14fc2da..3283f2f 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/model/TenantRequest.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/model/CreateTenantRequest.java @@ -20,8 +20,8 @@ import lombok.NoArgsConstructor; @Builder @AllArgsConstructor @NoArgsConstructor -@Schema(description = "Object containing the request to create or update a tenant.") -public class TenantRequest { +@Schema(description = "Object containing the request to create a tenant.") +public class CreateTenantRequest { @NotBlank @Pattern(regexp = "[A-Za-z0-9_-]*", message = "Tenant Id must match [A-Za-z0-9_-]") diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/model/UpdateTenantRequest.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/model/UpdateTenantRequest.java new file mode 100644 index 0000000..70cbbab --- /dev/null +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/model/UpdateTenantRequest.java @@ -0,0 +1,47 @@ +package com.knecon.fforesight.tenantusermanagement.model; + +import java.util.ArrayList; +import java.util.List; + +import com.knecon.fforesight.tenantcommons.model.AzureStorageConnection; +import com.knecon.fforesight.tenantcommons.model.DatabaseConnection; +import com.knecon.fforesight.tenantcommons.model.MongoDBConnection; +import com.knecon.fforesight.tenantcommons.model.S3StorageConnection; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Schema(description = "Object containing the request to update a tenant.") +public class UpdateTenantRequest { + + @NotBlank + @Pattern(regexp = "[A-Za-z0-9_-]*", message = "Tenant Id must match [A-Za-z0-9_-]") + @Schema(description = "Parameter containing the ID of the tenant.") + private String tenantId; + @NotBlank + @Schema(description = "Parameter containing the display name of the tenant.") + private String displayName; + @Schema(description = "Parameter containing the global unique ID of the tenant.") + private String guid; + + @Schema(description = "Parameter containing data of the database connection.") + private DatabaseConnection databaseConnection; + @Schema(description = "Parameter containing data of the search connection.") + private SearchConnectionRequest searchConnection; + @Schema(description = "Parameter containing data of the Azure storage connection.") + private AzureStorageConnection azureStorageConnection; + @Schema(description = "Parameter containing data of the S3 storage connection.") + private S3StorageConnection s3StorageConnection; + @Schema(description = "Parameter containing data of the MongoDB connection.") + private MongoDBConnection mongoDBConnection; + +} 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 cf764a8..ce7754f 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/service/TenantManagementService.java @@ -19,6 +19,7 @@ import org.apache.commons.lang3.StringUtils; import org.bson.BsonArray; import org.bson.BsonDocument; import org.bson.BsonString; +import org.keycloak.admin.client.resource.RealmResource; import org.keycloak.representations.idm.ClientRepresentation; import org.keycloak.representations.idm.CredentialRepresentation; import org.keycloak.representations.idm.RealmRepresentation; @@ -62,8 +63,9 @@ import com.knecon.fforesight.tenantusermanagement.entity.TenantEntity; import com.knecon.fforesight.tenantusermanagement.events.TenantCreatedEvent; import com.knecon.fforesight.tenantusermanagement.events.TenantSyncEvent; import com.knecon.fforesight.tenantusermanagement.model.SearchConnectionRequest; -import com.knecon.fforesight.tenantusermanagement.model.TenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.CreateTenantRequest; import com.knecon.fforesight.tenantusermanagement.model.TenantUser; +import com.knecon.fforesight.tenantusermanagement.model.UpdateTenantRequest; import com.knecon.fforesight.tenantusermanagement.properties.TenantUserManagementProperties; import com.knecon.fforesight.tenantusermanagement.repository.TenantRepository; import com.knecon.fforesight.tenantusermanagement.utils.JDBCUtils; @@ -111,7 +113,7 @@ public class TenantManagementService implements TenantProvider { @SneakyThrows - public TenantResponse createTenant(TenantRequest tenantRequest) { + public TenantResponse createTenant(CreateTenantRequest tenantRequest) { // For now we update the master realm theme whenever we create the tenant updateMasterTheme(tenantUserManagementProperties.getLoginTheme()); @@ -215,6 +217,7 @@ public class TenantManagementService implements TenantProvider { log.info("Dispatched message for tenant: {}", tenantRequest.getTenantId()); return convert(saved); + } else { throw new ResponseStatusException(HttpStatus.CONFLICT, "Tenant exists"); } @@ -300,9 +303,8 @@ public class TenantManagementService implements TenantProvider { private void propagateTenantToKeyCloak(String tenantId, List usersToCreate) throws InterruptedException { - log.info("Creating realm for tenant: {}", tenantId); + log.info("Creating or updating realm for tenant: {}", tenantId); createOrUpdateRealm(tenantId, usersToCreate); - log.info("Created realm for tenant: {}", tenantId); var waitTime = 0; boolean realmReady; @@ -318,7 +320,7 @@ public class TenantManagementService implements TenantProvider { } while (waitTime < MAX_WAIT_TIME); if (!realmReady) { - throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, "Failed to create KC realm"); + throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, "Failed to create or update KC realm"); } setPasswordPolicyForRealm(tenantId); @@ -346,7 +348,7 @@ public class TenantManagementService implements TenantProvider { } - private void createSchema(TenantRequest tenantRequest) { + private void createSchema(CreateTenantRequest tenantRequest) { var jdbcUrl = JDBCUtils.buildJdbcUrl(tenantRequest.getDatabaseConnection()); try (Connection connection = DriverManager.getConnection(jdbcUrl, @@ -384,7 +386,7 @@ public class TenantManagementService implements TenantProvider { } - private void createMongoDBDatabase(TenantRequest tenant) { + private void createMongoDBDatabase(CreateTenantRequest tenant) { MongoDBConnection mongoDBConnection = tenant.getMongoDBConnection(); try (MongoClient mongoClient = MongoClients.create(MongoConnectionStringHelper.buildGenericMongoConnectionString(mongoDBConnection))) { @@ -427,7 +429,8 @@ public class TenantManagementService implements TenantProvider { public void createOrUpdateRealm(String tenantId, List users) { - if (syncRealmIfExists(tenantId)) { + if (syncRealmIfExists(tenantId, users)) { + log.info("Updated realm for tenant: {}", tenantId); return; } @@ -447,6 +450,8 @@ public class TenantManagementService implements TenantProvider { } keycloak.getAdminClient().realms().create(realm); + log.info("Created realm for tenant: {}", tenantId); + } @@ -454,7 +459,7 @@ public class TenantManagementService implements TenantProvider { try { log.info("Deleting existing realms for tenant: {}", tenantId); - keycloak.getAdminClient().realm(tenantId).remove(); + getRealmResource(tenantId).remove(); } catch (Exception e) { log.warn("Could not delete realm:", e); throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Tenant deletion failed: " + e.getMessage(), e); @@ -463,10 +468,10 @@ public class TenantManagementService implements TenantProvider { } - private boolean syncRealmIfExists(String tenantId) { + private boolean syncRealmIfExists(String tenantId, List users) { try { - var existingRealm = keycloak.getAdminClient().realm(tenantId).toRepresentation(); + var existingRealm = getRealmResource(tenantId).toRepresentation(); if (existingRealm != null) { log.info("Updating existing realm: {}", tenantId); existingRealm.setLoginTheme(tenantUserManagementProperties.getDefaultTheme()); @@ -476,19 +481,39 @@ public class TenantManagementService implements TenantProvider { existingRealm.setSsoSessionIdleTimeout(tenantUserManagementProperties.getSsoSessionIdleTimeout()); var clients = getRealmClients(); var relevantClientNames = clients.stream().map(c -> c.getClientId().toLowerCase(Locale.getDefault())).collect(Collectors.toSet()); - var existingClients = keycloak.getAdminClient().realm(tenantId).clients().findAll(); + var existingClients = getRealmResource(tenantId).clients().findAll(); existingClients.forEach(ec -> { if (relevantClientNames.contains(ec.getClientId().toLowerCase(Locale.getDefault()))) { log.info("Removing client: {}", ec.getName()); - keycloak.getAdminClient().realm(tenantId).clients().get(ec.getId()).remove(); + getRealmResource(tenantId).clients().get(ec.getId()).remove(); } }); - clients.forEach(c -> keycloak.getAdminClient().realm(tenantId).clients().create(c)); + clients.forEach(c -> getRealmResource(tenantId).clients().create(c)); existingRealm.setClients(clients); existingRealm.setRoles(getRealmRoles()); - keycloak.getAdminClient().realm(tenantId).update(existingRealm); + + if (users != null) { + + var userRepresentationlist = users.stream() + .map(this::toUserRepresentation) + .toList(); + List toUpdate = userRepresentationlist.stream() + .filter(existingRealm.getUsers()::contains) + .toList(); + var toAdd = new ArrayList<>(userRepresentationlist); + toAdd.removeAll(toUpdate); + toAdd.forEach(user -> getRealmResource(tenantId).users().create(user)); + toUpdate.forEach(user -> getRealmResource(tenantId).users().searchByUsername(user.getUsername(), true) + .stream() + .findFirst() + .ifPresent(userRepresentation -> { + getRealmResource(tenantId).users().get(userRepresentation.getId()).update(user); + })); + + existingRealm.getUsers().addAll(toAdd); + } getRealmResource(tenantId).update(existingRealm); return true; } } catch (NotFoundException e) { @@ -496,8 +521,13 @@ public class TenantManagementService implements TenantProvider { } catch (Exception e) { log.warn("Failed to update realm: {}", tenantId, e); throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Failed to update realm: " + tenantId); - } - return false; + } return false; + } + + + private RealmResource getRealmResource(String tenantId) { + + return keycloak.getAdminClient().realm(tenantId); } @@ -611,7 +641,7 @@ public class TenantManagementService implements TenantProvider { user.setLastName(redUser.getLastName()); user.setEmailVerified(true); - var roles = new ArrayList(redUser.getRoles() != null ? redUser.getRoles() : new ArrayList<>()); + var roles = new ArrayList<>(redUser.getRoles() != null ? redUser.getRoles() : new ArrayList<>()); roles.add("uma_authorization"); roles.add("offline_access"); @@ -652,7 +682,8 @@ public class TenantManagementService implements TenantProvider { } - public TenantResponse updateTenant(String tenantId, TenantRequest tenantRequest) { + @SneakyThrows + public TenantResponse updateTenant(String tenantId, UpdateTenantRequest tenantRequest) { if (tenantRequest.getS3StorageConnection() != null && tenantRequest.getAzureStorageConnection() != null) { throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Not possible to set both azure and s3 connection, please only specify one"); @@ -736,7 +767,20 @@ public class TenantManagementService implements TenantProvider { .build()); } - return convert(tenantRepository.save(tenantEntity)); + propagateTenantToKeyCloak(tenantRequest.getTenantId(), null); + + TenantResponse tenantResponse = convert(tenantRepository.save(tenantEntity)); + + log.info("Persisted tenant update: {}", tenantRequest.getTenantId()); + + TenantContext.setTenantId(tenantEntity.getTenantId()); + rabbitTemplate.convertAndSend(tenantExchangeName, "tenant.updated", tenantResponse); + TenantContext.clear(); + + log.info("Dispatched message for tenant: {}", tenantRequest.getTenantId()); + + return tenantResponse; + } else { throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Tenant does not exist"); } @@ -882,7 +926,7 @@ public class TenantManagementService implements TenantProvider { public void syncTenant(String tenantId, JsonNode payload) { log.info("Syncing Realm: {}", tenantId); - syncRealmIfExists(tenantId); + syncRealmIfExists(tenantId, null); setPasswordPolicyForRealm(tenantId); generalConfigurationService.initGeneralConfiguration(tenantId); keyCloakRoleManagerService.updateRoles(tenantId); diff --git a/src/test/java/com/knecon/fforesight/tenantusermanagement/tests/TenantsTest.java b/src/test/java/com/knecon/fforesight/tenantusermanagement/tests/TenantsTest.java index de227ec..eae7e10 100644 --- a/src/test/java/com/knecon/fforesight/tenantusermanagement/tests/TenantsTest.java +++ b/src/test/java/com/knecon/fforesight/tenantusermanagement/tests/TenantsTest.java @@ -18,7 +18,8 @@ import com.knecon.fforesight.tenantcommons.model.SearchConnection; import com.knecon.fforesight.tenantusermanagement.AbstractTenantUserManagementIntegrationTest; import com.knecon.fforesight.tenantusermanagement.feigntestclients.external.TenantsClient; import com.knecon.fforesight.tenantusermanagement.model.SearchConnectionRequest; -import com.knecon.fforesight.tenantusermanagement.model.TenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.CreateTenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.UpdateTenantRequest; import com.knecon.fforesight.tenantusermanagement.service.RealmService; import com.knecon.fforesight.tenantusermanagement.utils.TestTenantService; @@ -68,7 +69,7 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { testTenantService.createTestTenantIfNotExists(tenantId, minioPort); TenantContext.setTenantId(tenantId); - var tenantRequest = TenantRequest.builder() + var tenantRequest = UpdateTenantRequest.builder() .tenantId(tenantId) .displayName("updated_display_name") .searchConnection(SearchConnectionRequest.builder() @@ -159,7 +160,7 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { testTenantService.createTestTenantIfNotExists("new_tenant", minioPort); TenantContext.setTenantId("new_tenant"); - var tenantRequest = TenantRequest.builder() + var tenantRequest = UpdateTenantRequest.builder() .tenantId("new_tenant") .s3StorageConnection(S3StorageConnection.builder() .key("updated_key") @@ -184,7 +185,7 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { testTenantService.createTestTenantWithoutStorageIfNotExist("new_tenant_without_storage"); TenantContext.setTenantId("new_tenant_without_storage"); - var tenantRequest = TenantRequest.builder() + var tenantRequest = UpdateTenantRequest.builder() .tenantId("new_tenant_without_storage") .azureStorageConnection(AzureStorageConnection.builder().connectionString("updated_connection").containerName("updated_container").build()) .build(); @@ -202,7 +203,7 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { testTenantService.createTestTenantIfNotExists("new_tenant", minioPort); TenantContext.setTenantId("new_tenant"); - var tenantRequest = TenantRequest.builder() + var tenantRequest = UpdateTenantRequest.builder() .tenantId("new_tenant") .azureStorageConnection(AzureStorageConnection.builder().connectionString("updated_connection").containerName("updated_container").build()) .s3StorageConnection(S3StorageConnection.builder() @@ -228,7 +229,7 @@ public class TenantsTest extends AbstractTenantUserManagementIntegrationTest { testTenantService.createTestTenantIfNotExists("new_tenant_with_s3", minioPort); TenantContext.setTenantId("new_tenant_with_s3"); - var tenantRequest = TenantRequest.builder() + var tenantRequest = UpdateTenantRequest.builder() .tenantId("new_tenant_with_s3") .azureStorageConnection(AzureStorageConnection.builder().connectionString("updated_connection").containerName("updated_container").build()) .build(); diff --git a/src/test/java/com/knecon/fforesight/tenantusermanagement/utils/TestTenantService.java b/src/test/java/com/knecon/fforesight/tenantusermanagement/utils/TestTenantService.java index a1a06c6..db2162d 100644 --- a/src/test/java/com/knecon/fforesight/tenantusermanagement/utils/TestTenantService.java +++ b/src/test/java/com/knecon/fforesight/tenantusermanagement/utils/TestTenantService.java @@ -18,7 +18,7 @@ import com.knecon.fforesight.tenantcommons.model.DatabaseConnection; import com.knecon.fforesight.tenantcommons.model.S3StorageConnection; import com.knecon.fforesight.tenantusermanagement.api.internal.InternalTenantsResource; import com.knecon.fforesight.tenantusermanagement.model.SearchConnectionRequest; -import com.knecon.fforesight.tenantusermanagement.model.TenantRequest; +import com.knecon.fforesight.tenantusermanagement.model.CreateTenantRequest; import com.knecon.fforesight.tenantusermanagement.model.TenantUser; import com.knecon.fforesight.tenantusermanagement.permissions.ApplicationRoles; import com.knecon.fforesight.tenantusermanagement.testcontainers.MongoDBTestContainer; @@ -53,8 +53,8 @@ public class TestTenantService { private void createUser(String testTenantId, int actualPort, boolean withStorage) { // not found - TenantRequest tenantRequest; - var tenantRequestBuilder = TenantRequest.builder() + CreateTenantRequest tenantRequest; + var tenantRequestBuilder = CreateTenantRequest.builder() .tenantId(testTenantId) .displayName(testTenantId) .guid(UUID.randomUUID().toString())