diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/e_service_template/IEServiceTemplateClient.java b/interop-qa-tests/src/main/java/it/pagopa/interop/e_service_template/IEServiceTemplateClient.java index 884d24557..44bac5fd6 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/e_service_template/IEServiceTemplateClient.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/e_service_template/IEServiceTemplateClient.java @@ -3,6 +3,7 @@ import it.pagopa.interop.authorization.service.utils.SettableBearerToken; import it.pagopa.interop.generated.openapi.clients.bff.model.CreatedEServiceTemplateVersion; import it.pagopa.interop.generated.openapi.clients.bff.model.EServiceRiskAnalysisSeed; +import it.pagopa.interop.generated.openapi.clients.bff.model.EServiceTemplateDetails; import it.pagopa.interop.generated.openapi.clients.bff.model.EServiceTemplateSeed; import it.pagopa.interop.generated.openapi.clients.bff.model.EServiceTemplateVersionDetails; import it.pagopa.interop.generated.openapi.clients.bff.model.UpdateEServiceTemplateSeed; @@ -31,6 +32,11 @@ void suspendEServiceTemplate(String xCorrelationId, UUID eServiceTemplateId, void activateEServiceTemplate(String xCorrelationId, UUID eServiceTemplateId, UUID eServiceTemplateVersionId); + ResponseEntity getEServiceTemplateWithHttpInfo(String xCorrelationId, + UUID eServiceTemplateId); + + EServiceTemplateDetails getEServiceTemplate(String xCorrelationId, UUID eServiceTemplateId); + EServiceTemplateVersionDetails getEServiceTemplateVersion(String xCorrelationId, UUID eServiceTemplateId, UUID eServiceTemplateVersionId); ResponseEntity getEServiceTemplateVersionWithHttpInfo( @@ -39,4 +45,9 @@ ResponseEntity getEServiceTemplateVersionWithHtt void addRiskAnalysis(String xCorrelationId, UUID eServiceTemplateId, EServiceRiskAnalysisSeed seed); + + void deleteRiskAnalysis( + String xCorrelationId, + UUID eServiceTemplateId, + UUID riskAnalysisId); } diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/e_service_template/impl/EServiceTemplateApiClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/e_service_template/impl/EServiceTemplateApiClientImpl.java index 3eedfd929..07f391a5c 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/e_service_template/impl/EServiceTemplateApiClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/e_service_template/impl/EServiceTemplateApiClientImpl.java @@ -6,6 +6,7 @@ import it.pagopa.interop.generated.openapi.clients.bff.api.EserviceTemplatesApi; import it.pagopa.interop.generated.openapi.clients.bff.model.CreatedEServiceTemplateVersion; import it.pagopa.interop.generated.openapi.clients.bff.model.EServiceRiskAnalysisSeed; +import it.pagopa.interop.generated.openapi.clients.bff.model.EServiceTemplateDetails; import it.pagopa.interop.generated.openapi.clients.bff.model.EServiceTemplateSeed; import it.pagopa.interop.generated.openapi.clients.bff.model.EServiceTemplateVersionDetails; import it.pagopa.interop.generated.openapi.clients.bff.model.UpdateEServiceTemplateSeed; @@ -95,6 +96,21 @@ public void activateEServiceTemplate(String xCorrelationId, UUID eServiceTemplat eServiceTemplateVersionId); } + @Override + public ResponseEntity getEServiceTemplateWithHttpInfo( + String xCorrelationId, + UUID eServiceTemplateId) { + // TODO 04/03/2025: gli id, a differenza di altre api, se li aspetta in semplice formato stringa e non UUID, va segnalato + return eserviceTemplatesApi.getEServiceTemplateWithHttpInfo(xCorrelationId, eServiceTemplateId.toString()); + } + + @Override + public EServiceTemplateDetails getEServiceTemplate(String xCorrelationId, + UUID eServiceTemplateId) { + // TODO 04/03/2025: gli id, a differenza di altre api, se li aspetta in semplice formato stringa e non UUID, va segnalato + return eserviceTemplatesApi.getEServiceTemplate(xCorrelationId, eServiceTemplateId.toString()); + } + @Override public EServiceTemplateVersionDetails getEServiceTemplateVersion(String xCorrelationId, UUID eServiceTemplateId, UUID eServiceTemplateVersionId) { @@ -119,6 +135,15 @@ public void addRiskAnalysis( this.eserviceTemplatesApi.createEServiceTemplateRiskAnalysis(xCorrelationId, eServiceTemplateId, seed); } + @Override + public void deleteRiskAnalysis( + String xCorrelationId, + UUID eServiceTemplateId, + UUID riskAnalysisId) + { + this.eserviceTemplatesApi.deleteEServiceTemplateRiskAnalysis(xCorrelationId, eServiceTemplateId, riskAnalysisId); + } + @Override public void setBearerToken(String bearerToken) { this.eserviceTemplatesApi.setApiClient(createApiClient(bearerToken)); diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/e_service_template/EServiceTemplateSteps.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/e_service_template/EServiceTemplateSteps.java index e4a6856d3..c623341d5 100644 --- a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/e_service_template/EServiceTemplateSteps.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/e_service_template/EServiceTemplateSteps.java @@ -36,6 +36,7 @@ import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; import lombok.Data; +import static org.apache.commons.collections4.IterableUtils.isEmpty; import org.assertj.core.api.Assertions; import static org.assertj.core.api.Assertions.assertThat; import org.jeasy.random.EasyRandom; @@ -333,6 +334,53 @@ public void addRiskAnalysisToEServiceTemplateWithSameName() { addRiskAnalysisToEServiceTemplate(lastTemplateManaged.id(), sameNameRiskAnalysisSeed); } + @When("l'utente tenta la cancellazione della risk analysis dell'e-service template") + public void deleteRiskAnalysisFromEServiceTemplate() { + UUID eServiceTemplateId = lastTemplateManaged.id(); + + UUID riskAnalysisId = eServiceTemplateClient.getEServiceTemplate( + sharedStepsContext.getXCorrelationId(), + eServiceTemplateId).getRiskAnalysis().get(0).getId(); + deleteRiskAnalysisFromEServiceTemplate(eServiceTemplateId, riskAnalysisId); + } + + @Then("la cancellazione della risk analysis dell'e-service è stata effettuata correttamente") + public void checkRiskAnalysisDeletedFromEServiceTemplate() { + UUID eServiceTemplateId = lastTemplateManaged.id(); + try { + pollingService.makePolling( + () -> eServiceTemplateClient.getEServiceTemplateWithHttpInfo( + sharedStepsContext.getXCorrelationId(), + eServiceTemplateId), + res -> res.getStatusCode().is2xxSuccessful() && nonNull(res.getBody()) && isEmpty(res.getBody().getRiskAnalysis()), + "La risk analysis non è stata cancellata correttamente dall'e-service template, oppure l'e-service template risulta nullo." + ); + } catch (PollingPredicateException e) { + Assertions.fail("La risk analysis non è stata cancellata correttamente dall'e-service template"); + } + } + + @When("l'utente tenta la cancellazione di una risk analysis inesistente nell'e-service template") + public void deleteNonExistentRiskAnalysisFromEServiceTemplate() { + deleteRiskAnalysisFromEServiceTemplate(lastTemplateManaged.id(), UUID.randomUUID()); + } + + @Given("l'utente effettua la cancellazione della risk analysis dell'e-service template con successo") + public void deleteRiskAnalysisFromEServiceTemplateSuccessfully() { + deleteRiskAnalysisFromEServiceTemplate(); + checkRiskAnalysisDeletedFromEServiceTemplate(); + } + + private void deleteRiskAnalysisFromEServiceTemplate(UUID eServiceTemplateId, UUID riskAnalysisId) { + String userToken = getUserToken(); + clientTokenConfigurator.setBearerToken(userToken); + httpCallExecutor.performCall( + () -> eServiceTemplateClient.deleteRiskAnalysis( + sharedStepsContext.getXCorrelationId(), + eServiceTemplateId, + riskAnalysisId)); + } + private void updateEServiceTemplateVersion(UUID eServiceTemplateId, UUID eServiceTemplateVersionId, UpdateEServiceTemplateVersionSeed sameNameUpdateSeed) { String userToken = getUserToken(); clientTokenConfigurator.setBearerToken(userToken); @@ -344,6 +392,11 @@ private void updateEServiceTemplateVersion(UUID eServiceTemplateId, UUID eServic sameNameUpdateSeed)); } + /* TODO un'alternativa all'uso di metodi come "areConsistent" - che confrontano i campi uno a uno - potrebbe essere + * l'uso di una libreria di mapping, da usare per mappare un oggetto nell'altro tipo, e quindi procedere con + * un normale equals(...). + */ + // TODO diverse NPE possibili, agire di conseguenza private boolean areConsistent(UpdateEServiceTemplateVersionSeed lastUpdate, EServiceTemplateVersionDetails retrievedTemplate) { return //lastUpdate.getAttributes().equals(retrievedTemplate.getAttributes()) && <- TODO costoso da implementare, rimandato diff --git a/interop-qa-tests/src/test/resources/it/pagopa/pn/cucumber/e-service-template/e-service-template.feature b/interop-qa-tests/src/test/resources/it/pagopa/pn/cucumber/e-service-template/e-service-template.feature index 72766a730..34554c7e5 100644 --- a/interop-qa-tests/src/test/resources/it/pagopa/pn/cucumber/e-service-template/e-service-template.feature +++ b/interop-qa-tests/src/test/resources/it/pagopa/pn/cucumber/e-service-template/e-service-template.feature @@ -335,7 +335,76 @@ Feature: Test API of e-service template When l'utente tenta l'aggiunta di una risk analysis all'e-service template specificando lo stesso nome Then si ottiene status code 409 + Scenario Outline: [INCARICATO-EST-028] La cancellazione di una risk analysis di un e-service template NON può essere fatta da un ente NON in veste di ADMIN o API + Given l'utente è un "admin" di "PA1" + And l'utente effettua la creazione di un e-service template in modalità ricezione in stato di + And l'utente effettua l'aggiunta di una risk analysis all'e-service template con successo + When l'utente è un "" di "PA1" + And l'utente tenta la cancellazione della risk analysis dell'e-service template + Then si ottiene status code 403 + Examples: + | ruolo | stato | + | security | DRAFT | + | api,security | DRAFT | + | support | DRAFT | + | security | PUBLISHED | + | api,security | PUBLISHED | + | support | PUBLISHED | + | security | SUSPENDED | + | api,security | SUSPENDED | + | support | SUSPENDED | + + Scenario Outline: [INCARICATO-EST-029] La cancellazione di una risk analysis di un e-service template in stato DRAFT può essere fatta da un ente in veste di ADMIN o API + Given l'utente è un "admin" di "PA1" + And l'utente effettua la creazione di un e-service template in modalità ricezione in stato di DRAFT + And l'utente effettua l'aggiunta di una risk analysis all'e-service template con successo + When l'utente è un "" di "PA1" + And l'utente tenta la cancellazione della risk analysis dell'e-service template + Then si ottiene status code 200 + And la cancellazione della risk analysis dell'e-service è stata effettuata correttamente + Examples: + | ruolo | + | admin | + | api | + + Scenario: [INCARICATO-EST-030] La cancellazione di una risk analysis di un e-service template in stato DRAFT non può essere fatta da una PA diversa da quella creatrice del template + Given l'utente è un "admin" di "PA1" + And l'utente effettua la creazione di un e-service template in modalità ricezione in stato di DRAFT + And l'utente effettua l'aggiunta di una risk analysis all'e-service template con successo + When l'utente è un "admin" di "PA2" + And l'utente tenta la cancellazione della risk analysis dell'e-service template + Then si ottiene status code 403 + + Scenario: [INCARICATO-EST-031] La cancellazione di una risk analysis inesistente non può essere effettuata + Given l'utente è un "admin" di "PA1" + And l'utente effettua la creazione di un e-service template in modalità ricezione in stato di DRAFT + When l'utente tenta la cancellazione di una risk analysis inesistente nell'e-service template + Then si ottiene status code 404 + + Scenario: [INCARICATO-EST-032] La cancellazione di una risk analysis già eliminata non può essere effettuata + Given l'utente è un "admin" di "PA1" + And l'utente effettua la creazione di un e-service template in modalità ricezione in stato di DRAFT + And l'utente effettua l'aggiunta di una risk analysis all'e-service template con successo + And l'utente effettua la cancellazione della risk analysis dell'e-service template con successo + When l'utente tenta la cancellazione della risk analysis dell'e-service template + Then si ottiene status code 404 + + + # TODO scenari di modifica della risk analysis... + + + #TODO smistare gli scenari in file .feature più piccoli. Possibili divisioni: # test che rigurdano il ciclo di vita del template (creazione, pubblicazione, sospensione, riattivazione, cancellazione) + # altro da definire... + + # test che riguardano la creazione di risorse # test che riguardano le modifiche a risorse esistenti + # test che riguardano la cancellazione di risorse + # ... + + # test che riguardano il template + # test che riguardano la versione + # test che riguardano la risk anlysis + # ...