diff --git a/src/main/java/org/opendevstack/component_catalog/server/mappers/ProjectComponentsInfoMapper.java b/src/main/java/org/opendevstack/component_catalog/server/mappers/ProjectComponentsInfoMapper.java index f790362..cce48c6 100644 --- a/src/main/java/org/opendevstack/component_catalog/server/mappers/ProjectComponentsInfoMapper.java +++ b/src/main/java/org/opendevstack/component_catalog/server/mappers/ProjectComponentsInfoMapper.java @@ -103,7 +103,7 @@ private String extractDeletionWorkflow(CatalogItem catalogItem) { .findAny(); var deletionWorkflow = provisionAction.flatMap(action -> action.getParameters().stream() - .filter(param -> "deletion_workflow".equals(param.getName())) + .filter(param -> "deletion_workflow".equals(param.getName()) || "deletion_workflow_name".equals(param.getName())) .findAny() .map(CatalogItemUserActionParameter::getDefaultValue) .map(JsonNullable::get)) diff --git a/src/test/java/org/opendevstack/component_catalog/server/mappers/ProjectComponentsInfoMapperTest.java b/src/test/java/org/opendevstack/component_catalog/server/mappers/ProjectComponentsInfoMapperTest.java index 51a6a37..3d68a0b 100644 --- a/src/test/java/org/opendevstack/component_catalog/server/mappers/ProjectComponentsInfoMapperTest.java +++ b/src/test/java/org/opendevstack/component_catalog/server/mappers/ProjectComponentsInfoMapperTest.java @@ -258,4 +258,50 @@ void givenCatalogItemWithProvisionAction_andEmptyDeletionWorkflow_whenMap_thenHa verify(catalogItemsApiFacade, times(1)).fetchCatalogItem(any()); } + + @Test + void givenCatalogItemWithProvisionAction_andEmptyDeletionWorkflowAndEmptyDeletionWorkflowName_whenMap_thenHasAutomatedDeletionWorkflowIsFalse() throws InvalidIdException, InvalidCatalogItemEntityException { + // given + var component = ProjectComponentMother.of("C-304", "cat-304", "ref-304", Status.CREATED); + var deletionWorkflowParam = CatalogItemUserActionParameterMother.of("deletion_workflow", "string") + .defaultValue(""); + var deletionWorkflowNameParam = CatalogItemUserActionParameterMother.of("deletion_workflow_name", "string") + .defaultValue(""); + var provisionAction = CatalogItemUserActionMother.of("PROVISION", List.of(deletionWorkflowParam, deletionWorkflowNameParam)); + var catalogItem = CatalogItemMother.of("cat-001", "logo.png", List.of(provisionAction)); + + when(catalogItemsApiFacade.fetchCatalogItem(any())) + .thenReturn(catalogItem); + + // when + Optional maybeInfo = projectComponentsInfoMapper.mapToProjectComponentInfo(component, token, projectKey, List.of()); + + // then + assertThat(maybeInfo).isPresent(); + assertThat(maybeInfo.get().getHasAutomatedDeletionWorkflow()).isFalse(); + + verify(catalogItemsApiFacade, times(1)).fetchCatalogItem(any()); + } + + @Test + void givenCatalogItemWithProvisionAction_andNonEmptyDeletionWorkflowName_whenMap_thenHasAutomatedDeletionWorkflowIsTrue() throws InvalidIdException, InvalidCatalogItemEntityException { + // given + var component = ProjectComponentMother.of("C-304", "cat-304", "ref-304", Status.CREATED); + var deletionWorkflowNameParam = CatalogItemUserActionParameterMother.of("deletion_workflow_name", "string") + .defaultValue("some-workflow-name"); + var provisionAction = CatalogItemUserActionMother.of("PROVISION", List.of(deletionWorkflowNameParam)); + var catalogItem = CatalogItemMother.of("cat-001", "logo.png", List.of(provisionAction)); + + when(catalogItemsApiFacade.fetchCatalogItem(any())) + .thenReturn(catalogItem); + + // when + Optional maybeInfo = projectComponentsInfoMapper.mapToProjectComponentInfo(component, token, projectKey, List.of()); + + // then + assertThat(maybeInfo).isPresent(); + assertThat(maybeInfo.get().getHasAutomatedDeletionWorkflow()).isTrue(); + + verify(catalogItemsApiFacade, times(1)).fetchCatalogItem(any()); + } }