Skip to content

Commit

Permalink
QA-5253: added risk analysis cancellation scenarios
Browse files Browse the repository at this point in the history
  • Loading branch information
Vincenzo-Massaro committed Mar 4, 2025
1 parent e47956e commit 79b0de8
Show file tree
Hide file tree
Showing 4 changed files with 158 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -31,6 +32,11 @@ void suspendEServiceTemplate(String xCorrelationId, UUID eServiceTemplateId,
void activateEServiceTemplate(String xCorrelationId, UUID eServiceTemplateId,
UUID eServiceTemplateVersionId);

ResponseEntity<EServiceTemplateDetails> getEServiceTemplateWithHttpInfo(String xCorrelationId,
UUID eServiceTemplateId);

EServiceTemplateDetails getEServiceTemplate(String xCorrelationId, UUID eServiceTemplateId);

EServiceTemplateVersionDetails getEServiceTemplateVersion(String xCorrelationId, UUID eServiceTemplateId, UUID eServiceTemplateVersionId);

ResponseEntity<EServiceTemplateVersionDetails> getEServiceTemplateVersionWithHttpInfo(
Expand All @@ -39,4 +45,9 @@ ResponseEntity<EServiceTemplateVersionDetails> getEServiceTemplateVersionWithHtt

void addRiskAnalysis(String xCorrelationId, UUID eServiceTemplateId,
EServiceRiskAnalysisSeed seed);

void deleteRiskAnalysis(
String xCorrelationId,
UUID eServiceTemplateId,
UUID riskAnalysisId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -95,6 +96,21 @@ public void activateEServiceTemplate(String xCorrelationId, UUID eServiceTemplat
eServiceTemplateVersionId);
}

@Override
public ResponseEntity<EServiceTemplateDetails> 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) {
Expand All @@ -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));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 <stato>
And l'utente effettua l'aggiunta di una risk analysis all'e-service template con successo
When l'utente è un "<ruolo>" 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 "<ruolo>" 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
# ...

0 comments on commit 79b0de8

Please sign in to comment.