diff --git a/core/src/main/java/io/aiven/klaw/service/EnvsClustersTenantsControllerService.java b/core/src/main/java/io/aiven/klaw/service/EnvsClustersTenantsControllerService.java index ccf07e74d..b7d662ce7 100644 --- a/core/src/main/java/io/aiven/klaw/service/EnvsClustersTenantsControllerService.java +++ b/core/src/main/java/io/aiven/klaw/service/EnvsClustersTenantsControllerService.java @@ -458,6 +458,13 @@ public ApiResponse addNewEnv(EnvModel newEnv) throws KlawException, KlawValidati newEnv.setId(String.valueOf(id)); } } else { + Optional existingEnvOpt = + envActualList.stream().filter(env -> env.getId().equals(newEnv.getId())).findFirst(); + if (existingEnvOpt.isEmpty()) { + + // cannot modify a deleted env + return ApiResponse.notOk("Cannot modify a deleted environment."); + } // modify env envActualList = envActualList.stream() diff --git a/core/src/main/resources/static/js/modifyEnvs.js b/core/src/main/resources/static/js/modifyEnvs.js index 4c531bd8b..d2c7f92a5 100644 --- a/core/src/main/resources/static/js/modifyEnvs.js +++ b/core/src/main/resources/static/js/modifyEnvs.js @@ -627,6 +627,9 @@ app.controller("modifyEnvsCtrl", function($scope, $http, $location, $window) { $window.location.href = $window.location.origin + $scope.dashboardDetails.contextPath + "/envs"; }); }else $scope.showSubmitFailed('',''); + setTimeout(function(){ + $window.location.href = $window.location.origin + $scope.dashboardDetails.contextPath + "/envs"; + }, 1200); }).error( function(error) { diff --git a/core/src/test/java/io/aiven/klaw/service/EnvsClustersTenantsControllerServiceTest.java b/core/src/test/java/io/aiven/klaw/service/EnvsClustersTenantsControllerServiceTest.java index a74016632..a0073c13a 100644 --- a/core/src/test/java/io/aiven/klaw/service/EnvsClustersTenantsControllerServiceTest.java +++ b/core/src/test/java/io/aiven/klaw/service/EnvsClustersTenantsControllerServiceTest.java @@ -1275,4 +1275,34 @@ private static Map buildClusters( } return map; } + + @Test + @WithMockUser( + username = "james", + authorities = {"ADMIN", "USER"}) + void addNewEnv_UpdateOfDeletedEnv_ReturnsNotOk() throws KlawException, KlawValidationException { + EnvModel envToUpdate = getTestEnvModel(null); + envToUpdate.setId("99"); + + when(commonUtilsService.isNotAuthorizedUser(userDetails, PermissionType.ADD_EDIT_DELETE_ENVS)) + .thenReturn(false); + when(handleDbRequestsJdbc.getAllEnvs(101)) + .thenReturn( + List.of( + buildEnv("1", 101, "DEV", KafkaClustersType.KAFKA, 1), + buildEnv("2", 101, "TST", KafkaClustersType.KAFKA, 2))); + when(manageDatabase.getAllEnvList(101)) + .thenReturn( + List.of( + buildEnv("1", 101, "DEV", KafkaClustersType.KAFKA, 1), + buildEnv("2", 101, "TST", KafkaClustersType.KAFKA, 2))); + + ApiResponse response = service.addNewEnv(envToUpdate); + + // Assert + assertThat(response.isSuccess()).isFalse(); + assertThat(response.getMessage()).contains("Cannot modify a deleted environment."); + + verify(handleDbRequestsJdbc, times(0)).addNewEnv(any(Env.class)); + } }