From 2520f99bda93bcd019149e904e731b033faee255 Mon Sep 17 00:00:00 2001 From: Matteo Mancini Date: Wed, 5 Feb 2025 14:59:05 +0100 Subject: [PATCH 1/9] QA-5723: migrated the tracing tests in the interop submodule --- .gitignore | 2 +- .../config/application.properties | 11 ++ interop-qa-tests/pom.xml | 41 +++++++ .../service/impl/AgreementClientImpl.java | 2 +- .../service/impl/EServiceApiClientImpl.java | 3 +- .../service/impl/AttributeApiClientImpl.java | 2 +- .../service/factory/SessionTokenFactory.java | 2 +- .../service/impl/AuthorizationClientImpl.java | 2 +- .../service/impl/ProducerClientImpl.java | 2 +- .../service/utils/IdentityService.java | 3 - .../service/utils/PollingService.java | 2 +- .../service/utils/SettableBearerToken.java | 2 +- .../InteropClientConfigs.java | 2 +- .../service/impl/DelegationApiClientImpl.java | 2 +- .../ProducerDelegationsApiClientImpl.java | 2 +- .../service/impl/PurposeApiClientImpl.java | 3 +- .../service/impl/TenantsApiClientImpl.java | 3 +- .../tracing/config/TracingClientConfigs.java | 7 +- .../service}/IInteropTracingClient.java | 14 ++- .../tracing/service/TracingRetriever.java | 18 +++ .../impl/InteropTracingClientImpl.java | 36 +++--- .../main/resources/tracing}/tracing-error.csv | 0 .../src/main/resources/tracing/tracing-ok.csv | 2 + .../interop/cucumber/InteropTracingTest.java | 28 +++++ .../InteropCucumberSpringIntegration.java | 14 ++- .../cucumber/steps/tracing}/TracingSteps.java | 77 ++++++++----- .../cucumber}/utility/TracingFileUtils.java | 14 ++- .../cucumber/tracing}/InteropTracing.feature | 0 .../springconfig/InteropConfiguration.java | 9 -- .../interop/polling/dto/PnPollingInterop.java | 14 --- .../polling/dto/PnTracingResponse.java | 12 -- .../service/impl/PnPollingInteropTracing.java | 101 ----------------- .../pa/polling/dto/PnPollingParameter.java | 2 - src/main/resources/interop/tracing-ok.csv | 2 - .../cucumber/interop/InteropTracingTest.java | 20 ---- .../steps/CucumberSpringIntegration.java | 105 +++++++++++++++--- 36 files changed, 307 insertions(+), 254 deletions(-) create mode 100644 interop-qa-tests/config/application.properties rename interop-qa-tests/src/main/java/it/pagopa/interop/conf/{springconfig => }/InteropClientConfigs.java (94%) rename src/main/java/it/pagopa/pn/client/b2b/pa/interop/config/InteropClientConfigs.java => interop-qa-tests/src/main/java/it/pagopa/interop/tracing/config/TracingClientConfigs.java (69%) rename {src/main/java/it/pagopa/pn/client/b2b/pa/interop => interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service}/IInteropTracingClient.java (59%) create mode 100644 interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/TracingRetriever.java rename {src/main/java/it/pagopa/pn/client/b2b/pa/interop => interop-qa-tests/src/main/java/it/pagopa/interop/tracing}/service/impl/InteropTracingClientImpl.java (65%) rename {src/main/resources/interop => interop-qa-tests/src/main/resources/tracing}/tracing-error.csv (100%) create mode 100644 interop-qa-tests/src/main/resources/tracing/tracing-ok.csv create mode 100644 interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/InteropTracingTest.java rename {src/test/java/it/pagopa/pn/cucumber/steps/pa => interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing}/TracingSteps.java (79%) rename {src/test/java/it/pagopa/pn/cucumber/interop => interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber}/utility/TracingFileUtils.java (81%) rename {src/test/resources/it/pagopa/pn/cucumber/interop => interop-qa-tests/src/test/resources/it/pagopa/pn/cucumber/tracing}/InteropTracing.feature (100%) delete mode 100644 src/main/java/it/pagopa/pn/client/b2b/pa/interop/config/springconfig/InteropConfiguration.java delete mode 100644 src/main/java/it/pagopa/pn/client/b2b/pa/interop/polling/dto/PnPollingInterop.java delete mode 100644 src/main/java/it/pagopa/pn/client/b2b/pa/interop/polling/dto/PnTracingResponse.java delete mode 100644 src/main/java/it/pagopa/pn/client/b2b/pa/interop/service/impl/PnPollingInteropTracing.java delete mode 100644 src/main/resources/interop/tracing-ok.csv delete mode 100644 src/test/java/it/pagopa/pn/cucumber/interop/InteropTracingTest.java diff --git a/.gitignore b/.gitignore index 46bfbc4e8..6a3629ada 100644 --- a/.gitignore +++ b/.gitignore @@ -45,6 +45,6 @@ build/ .vscode/ /config/api-keys-dev.properties /config/bearer-token-dev.properties -/config/interop-tracing-dev.properties +/interop-qa-tests/src/main/resources/interop-tracing-dev.properties token.json diff --git a/interop-qa-tests/config/application.properties b/interop-qa-tests/config/application.properties new file mode 100644 index 000000000..d902d5819 --- /dev/null +++ b/interop-qa-tests/config/application.properties @@ -0,0 +1,11 @@ +#PURPOSE_ID 28874634-6ea6-4def-b200-7377182c71be +interop.configuration.tracing.bearerToken-1=eyJhbGciOiJSUzI1NiIsInVzZSI6InNpZyIsInR5cCI6ImF0K2p3dCIsImtpZCI6IjBiOTEwNmExLWRiMGMtNDg4Zi05MDg0LWNlOGM2MzIxNDJiYyJ9.eyJqdGkiOiJhMGQzN2QxYy1iMzU3LTRlN2EtYjIzYy05MDViNTU3NzA2NjciLCJpc3MiOiJ0cmFjaW5nLWlzc3VlciIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6NDAwMSIsInN1YiI6InRyYWNpbmctc3ViamVjdCIsImlhdCI6MTcyOTYwNzUwMCwibmJmIjoxNzI5NjA3NTAwLCJleHAiOjE4Mjk2MDc0OTksIm9yZ2FuaXphdGlvbklkIjoiMGU5ZTJkYWItMmU5My00ZjI0LWJhNTktMzhkOWYxMTE5OGNhIiwicm9sZSI6ImludGVybmFsIn0.AEhPS-dnJWwTOY1gN5gqKtfAswKxZtRTPozHVM2xbG4TD3oSoo5TCyLyvPWYezFMEIIueMZykeiBnUvT_EEePl018cpio_lrlmKqHpGiYe-9u_6EU-cmPTAU9Cnpu6yESS7KyaGziFHm-Rp7qxmjnMsMgKG6IpxgmnbEwxnu4pBiFwHx_sJyUtVks7xZr50UVRzpNQNYRv9ypko140fx85bDQHyNzFqLa75wFX3hiF2yi7A-vmEuwqVwCRrpwuphMksNaSEs-E8bbxnXeq1zeiav7oc9wZHtnPruhth9fr6PoTcPwtftLEEh_QH_IssciqpTY8stA0S4AMwvFYyP_w +#PURPOSE_ID 5602d95a-9297-4221-86d0-f142b8690d5c +interop.configuration.tracing.bearerToken-2=eyJhbGciOiJSUzI1NiIsInVzZSI6InNpZyIsInR5cCI6ImF0K2p3dCIsImtpZCI6IjBiOTEwNmExLWRiMGMtNDg4Zi05MDg0LWNlOGM2MzIxNDJiYyJ9.eyJqdGkiOiI0MDNlYzc3ZC01OGM3LTQwMmYtYTg4Zi1iYzNmODFjMTBiNGIiLCJpc3MiOiJ0cmFjaW5nLWlzc3VlciIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6NDAwMSIsInN1YiI6InRyYWNpbmctc3ViamVjdCIsImlhdCI6MTczMDI3NzkwOCwibmJmIjoxNzMwMjc3OTA4LCJleHAiOjE4MzAyNzc5MDcsIm9yZ2FuaXphdGlvbklkIjoiNjllMjg2NWUtNjVhYi00ZTQ4LWE2MzgtMjAzN2E5ZWUyZWU3Iiwicm9sZSI6ImludGVybmFsIn0.JH2Rs9pDCHlMCBmrIvMOiCKd6eb_Xs1OdIDG47ET5gTpd1uPFio0wwHpKBnhzVZpjuFzi14EaMVHRuZqLq7NBkP4-xRAP5_muOdCKjRu6gcJVagXVTwtFXw-3WnP7jFX8FEOqjqmRoA83hX4s_dPewKZbqtC8VkKDPAHOaN9I0ZEUWwzwn9X07gCJPi3jimfhdsk4YgjcR4qlTUif73hxcHwNvfpiCqYCAXZDa_KWcz7D_QQsOLxRWFHKgfGNRr5gbuYDBSykb-ZLqsxecnXyhc3Fpwe5rTnIHWKcITfRNQjej5YnJ88HUyPrTqLqOfGvWIM3kY4n82Vt1oJYSmQNA + + + +#INTEROP TRACING +pn.interop.tracing.base-url=https://api.dev.tracing.interop.pagopa.it +pn.interop.tracing.bearerToken-1=${interop.configuration.tracing.bearerToken-1} +pn.interop.tracing.bearerToken-2=${interop.configuration.tracing.bearerToken-2} \ No newline at end of file diff --git a/interop-qa-tests/pom.xml b/interop-qa-tests/pom.xml index fc0a57aa6..eb8bb2aee 100644 --- a/interop-qa-tests/pom.xml +++ b/interop-qa-tests/pom.xml @@ -123,6 +123,12 @@ 3.17.0 + + com.opencsv + opencsv + 5.9 + + @@ -177,6 +183,41 @@ it.pagopa.interop.generated.openapi.clients.bff.model + + + generate-external-interop-client + + generate + + process-resources + + + OffsetDateTime=java.lang.String + + https://raw.githubusercontent.com/pagopa/interop-tracing-core/refs/heads/develop/packages/api/open-api/api-external-interop-v1.yaml + java + resttemplate + false + false + true + + it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api + it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model + java8 + none + source + false + true + false + + @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL) + + + it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api + it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model + + + diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/AgreementClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/AgreementClientImpl.java index bfe9a4d23..1fa1836f8 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/AgreementClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/AgreementClientImpl.java @@ -1,7 +1,7 @@ package it.pagopa.interop.agreement.service.impl; import it.pagopa.interop.agreement.service.IAgreementClient; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; +import it.pagopa.interop.conf.InteropClientConfigs; import it.pagopa.interop.generated.openapi.clients.bff.ApiClient; import it.pagopa.interop.generated.openapi.clients.bff.api.AgreementsApi; import it.pagopa.interop.generated.openapi.clients.bff.model.Agreement; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/EServiceApiClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/EServiceApiClientImpl.java index f36bacaaf..1a283a977 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/EServiceApiClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/EServiceApiClientImpl.java @@ -1,10 +1,9 @@ package it.pagopa.interop.agreement.service.impl; import it.pagopa.interop.agreement.service.IEServiceClient; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; +import it.pagopa.interop.conf.InteropClientConfigs; import it.pagopa.interop.generated.openapi.clients.bff.ApiClient; import it.pagopa.interop.generated.openapi.clients.bff.api.EservicesApi; -import it.pagopa.interop.generated.openapi.clients.bff.model.*; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/attribute/service/impl/AttributeApiClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/attribute/service/impl/AttributeApiClientImpl.java index 9dd6ba27d..24144a926 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/attribute/service/impl/AttributeApiClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/attribute/service/impl/AttributeApiClientImpl.java @@ -1,7 +1,7 @@ package it.pagopa.interop.attribute.service.impl; import it.pagopa.interop.attribute.service.IAttributeApiClient; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; +import it.pagopa.interop.conf.InteropClientConfigs; import it.pagopa.interop.generated.openapi.clients.bff.ApiClient; import it.pagopa.interop.generated.openapi.clients.bff.api.AttributesApi; import it.pagopa.interop.generated.openapi.clients.bff.model.Attribute; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/SessionTokenFactory.java b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/SessionTokenFactory.java index d03c15701..5058c9e0e 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/SessionTokenFactory.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/SessionTokenFactory.java @@ -10,7 +10,7 @@ import it.pagopa.interop.authorization.domain.Tenant; import it.pagopa.interop.authorization.service.exception.UnsignedSTSGenerationException; import it.pagopa.interop.authorization.service.utils.ConfigFileReader; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; +import it.pagopa.interop.conf.InteropClientConfigs; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.config.ConfigurableBeanFactory; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/impl/AuthorizationClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/impl/AuthorizationClientImpl.java index 80e688a99..40610ca63 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/impl/AuthorizationClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/impl/AuthorizationClientImpl.java @@ -8,7 +8,7 @@ import org.springframework.stereotype.Component; import it.pagopa.interop.authorization.service.IAuthorizationClient; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; +import it.pagopa.interop.conf.InteropClientConfigs; import it.pagopa.interop.generated.openapi.clients.bff.ApiClient; import it.pagopa.interop.generated.openapi.clients.bff.api.ClientsApi; import it.pagopa.interop.generated.openapi.clients.bff.model.Client; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/impl/ProducerClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/impl/ProducerClientImpl.java index ba7fe6174..62bc2d2ff 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/impl/ProducerClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/impl/ProducerClientImpl.java @@ -1,7 +1,7 @@ package it.pagopa.interop.authorization.service.impl; import it.pagopa.interop.authorization.service.IProducerClient; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; +import it.pagopa.interop.conf.InteropClientConfigs; import it.pagopa.interop.generated.openapi.clients.bff.ApiClient; import it.pagopa.interop.generated.openapi.clients.bff.api.EservicesApi; import it.pagopa.interop.generated.openapi.clients.bff.model.ProducerEServiceDescriptor; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/IdentityService.java b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/IdentityService.java index 2b8256639..b42c034cc 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/IdentityService.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/IdentityService.java @@ -6,9 +6,6 @@ import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; -import org.yaml.snakeyaml.Yaml; -import org.yaml.snakeyaml.constructor.Constructor; import java.util.List; import java.util.Objects; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/PollingService.java b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/PollingService.java index 5ac2d80c2..06c31acec 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/PollingService.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/PollingService.java @@ -1,6 +1,6 @@ package it.pagopa.interop.authorization.service.utils; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; +import it.pagopa.interop.conf.InteropClientConfigs; import java.util.function.Predicate; import java.util.function.Supplier; import lombok.AllArgsConstructor; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/SettableBearerToken.java b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/SettableBearerToken.java index d65e02ed8..5ed0ae3e7 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/SettableBearerToken.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/SettableBearerToken.java @@ -1,6 +1,6 @@ package it.pagopa.interop.authorization.service.utils; public interface SettableBearerToken { - enum BearerTokenType { CONSUMER, API} + enum BearerTokenType { CONSUMER, API, TENANT_1, TENANT_2} void setBearerToken(String bearerToken); } \ No newline at end of file diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/conf/springconfig/InteropClientConfigs.java b/interop-qa-tests/src/main/java/it/pagopa/interop/conf/InteropClientConfigs.java similarity index 94% rename from interop-qa-tests/src/main/java/it/pagopa/interop/conf/springconfig/InteropClientConfigs.java rename to interop-qa-tests/src/main/java/it/pagopa/interop/conf/InteropClientConfigs.java index eb3ca1a30..57bb76362 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/conf/springconfig/InteropClientConfigs.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/conf/InteropClientConfigs.java @@ -1,4 +1,4 @@ -package it.pagopa.interop.conf.springconfig; +package it.pagopa.interop.conf; import lombok.Getter; import lombok.Setter; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/DelegationApiClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/DelegationApiClientImpl.java index 926100a65..862e2c10f 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/DelegationApiClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/DelegationApiClientImpl.java @@ -1,6 +1,6 @@ package it.pagopa.interop.delegate.service.impl; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; +import it.pagopa.interop.conf.InteropClientConfigs; import it.pagopa.interop.delegate.service.IDelegationApiClient; import it.pagopa.interop.generated.openapi.clients.bff.ApiClient; import it.pagopa.interop.generated.openapi.clients.bff.api.DelegationsApi; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/ProducerDelegationsApiClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/ProducerDelegationsApiClientImpl.java index 73567754b..d5c958fa6 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/ProducerDelegationsApiClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/ProducerDelegationsApiClientImpl.java @@ -1,6 +1,6 @@ package it.pagopa.interop.delegate.service.impl; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; +import it.pagopa.interop.conf.InteropClientConfigs; import it.pagopa.interop.delegate.service.IProducerDelegationsApiClient; import it.pagopa.interop.generated.openapi.clients.bff.ApiClient; import it.pagopa.interop.generated.openapi.clients.bff.api.ProducerDelegationsApi; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/purpose/service/impl/PurposeApiClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/purpose/service/impl/PurposeApiClientImpl.java index f5ff57254..b49d9e036 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/purpose/service/impl/PurposeApiClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/purpose/service/impl/PurposeApiClientImpl.java @@ -1,6 +1,6 @@ package it.pagopa.interop.purpose.service.impl; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; +import it.pagopa.interop.conf.InteropClientConfigs; import it.pagopa.interop.generated.openapi.clients.bff.ApiClient; import it.pagopa.interop.generated.openapi.clients.bff.api.PurposesApi; import it.pagopa.interop.generated.openapi.clients.bff.model.CreatedResource; @@ -17,7 +17,6 @@ import org.springframework.web.client.RestTemplate; import java.util.UUID; -import org.springframework.web.client.RestTemplate; @Component @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/tenant/service/impl/TenantsApiClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tenant/service/impl/TenantsApiClientImpl.java index cce3a1186..561783b6a 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/tenant/service/impl/TenantsApiClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tenant/service/impl/TenantsApiClientImpl.java @@ -1,6 +1,6 @@ package it.pagopa.interop.tenant.service.impl; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; +import it.pagopa.interop.conf.InteropClientConfigs; import it.pagopa.interop.generated.openapi.clients.bff.ApiClient; import it.pagopa.interop.generated.openapi.clients.bff.api.TenantsApi; import it.pagopa.interop.generated.openapi.clients.bff.model.CertifiedAttributesResponse; @@ -15,7 +15,6 @@ import org.springframework.web.client.RestTemplate; import java.util.UUID; -import org.springframework.web.client.RestTemplate; @Component @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) diff --git a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/config/InteropClientConfigs.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/config/TracingClientConfigs.java similarity index 69% rename from src/main/java/it/pagopa/pn/client/b2b/pa/interop/config/InteropClientConfigs.java rename to interop-qa-tests/src/main/java/it/pagopa/interop/tracing/config/TracingClientConfigs.java index 62d6d045f..5efadc1eb 100644 --- a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/config/InteropClientConfigs.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/config/TracingClientConfigs.java @@ -1,12 +1,13 @@ -package it.pagopa.pn.client.b2b.pa.interop.config; +package it.pagopa.interop.tracing.config; -import lombok.*; +import lombok.Getter; +import lombok.Setter; import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties(prefix = "pn.interop.tracing", ignoreUnknownFields = false) @Getter @Setter -public class InteropClientConfigs { +public class TracingClientConfigs { private String baseUrl; private String bearerToken1; private String bearerToken2; diff --git a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/IInteropTracingClient.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/IInteropTracingClient.java similarity index 59% rename from src/main/java/it/pagopa/pn/client/b2b/pa/interop/IInteropTracingClient.java rename to interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/IInteropTracingClient.java index 74638f4bf..13d621380 100644 --- a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/IInteropTracingClient.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/IInteropTracingClient.java @@ -1,10 +1,14 @@ -package it.pagopa.pn.client.b2b.pa.interop; - -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.*; -import it.pagopa.pn.client.b2b.pa.service.utils.SettableBearerToken; +package it.pagopa.interop.tracing.service; + +import it.pagopa.interop.authorization.service.utils.SettableBearerToken; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingErrorsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.RecoverTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.ReplaceTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.SubmitTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.TracingState; import org.springframework.web.client.RestClientException; -import java.time.LocalDate; import java.util.List; import java.util.UUID; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/TracingRetriever.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/TracingRetriever.java new file mode 100644 index 000000000..71f148c8a --- /dev/null +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/TracingRetriever.java @@ -0,0 +1,18 @@ +package it.pagopa.interop.tracing.service; + +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.TracingState; + +import java.util.List; + +public class TracingRetriever { + private final IInteropTracingClient interopTracingClient; + + public TracingRetriever(IInteropTracingClient interopTracingClient) { + this.interopTracingClient = interopTracingClient; + } + + public GetTracingsResponse retrieve(int offset, List states) { + return interopTracingClient.getTracings(offset, 50, states); + } +} diff --git a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/service/impl/InteropTracingClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/InteropTracingClientImpl.java similarity index 65% rename from src/main/java/it/pagopa/pn/client/b2b/pa/interop/service/impl/InteropTracingClientImpl.java rename to interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/InteropTracingClientImpl.java index bf77df715..fe5f840e1 100644 --- a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/service/impl/InteropTracingClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/InteropTracingClientImpl.java @@ -1,11 +1,16 @@ -package it.pagopa.pn.client.b2b.pa.interop.service.impl; +package it.pagopa.interop.tracing.service.impl; import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.ApiClient; import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api.HealthApi; import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api.TracingsApi; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.*; -import it.pagopa.pn.client.b2b.pa.interop.config.InteropClientConfigs; -import it.pagopa.pn.client.b2b.pa.interop.IInteropTracingClient; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingErrorsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.RecoverTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.ReplaceTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.SubmitTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.TracingState; +import it.pagopa.interop.tracing.config.TracingClientConfigs; +import it.pagopa.interop.tracing.service.IInteropTracingClient; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.core.io.Resource; @@ -22,14 +27,14 @@ public class InteropTracingClientImpl implements IInteropTracingClient { private final RestTemplate restTemplate; private final TracingsApi tracingsApi; private final HealthApi healthApi; - private final InteropClientConfigs interopClientConfigs; + private final TracingClientConfigs tracingClientConfigs; private BearerTokenType bearerTokenSetted; - public InteropTracingClientImpl(RestTemplate restTemplate, InteropClientConfigs interopClientConfigs) { + public InteropTracingClientImpl(RestTemplate restTemplate, TracingClientConfigs tracingClientConfigs) { this.restTemplate = restTemplate; - this.interopClientConfigs = interopClientConfigs; - this.tracingsApi = new TracingsApi(createApiClient(interopClientConfigs.getBaseUrl(), interopClientConfigs.getBearerToken1())); - this.healthApi = new HealthApi(createApiClient(interopClientConfigs.getBaseUrl(), interopClientConfigs.getBearerToken1())); + this.tracingClientConfigs = tracingClientConfigs; + this.tracingsApi = new TracingsApi(createApiClient(tracingClientConfigs.getBaseUrl(), tracingClientConfigs.getBearerToken1())); + this.healthApi = new HealthApi(createApiClient(tracingClientConfigs.getBaseUrl(), tracingClientConfigs.getBearerToken1())); this.bearerTokenSetted = BearerTokenType.TENANT_1; } @@ -71,23 +76,22 @@ public void getHealthStatus() { } @Override - public boolean setBearerToken(BearerTokenType bearerToken) { + public void setBearerToken(String bearerToken) { switch (bearerToken) { - case TENANT_1 -> { - this.tracingsApi.setApiClient(createApiClient(interopClientConfigs.getBaseUrl(), interopClientConfigs.getBearerToken1())); + case "TENANT_1" -> { + this.tracingsApi.setApiClient(createApiClient(tracingClientConfigs.getBaseUrl(), tracingClientConfigs.getBearerToken1())); this.bearerTokenSetted = BearerTokenType.TENANT_1; } - case TENANT_2 -> { - this.tracingsApi.setApiClient(createApiClient(interopClientConfigs.getBaseUrl(), interopClientConfigs.getBearerToken2())); + case "TENANT_2" -> { + this.tracingsApi.setApiClient(createApiClient(tracingClientConfigs.getBaseUrl(), tracingClientConfigs.getBearerToken2())); this.bearerTokenSetted = BearerTokenType.TENANT_2; } default -> throw new IllegalStateException("Unexpected value: " + bearerToken); } - return true; } - @Override public BearerTokenType getBearerTokenSetted() { return this.bearerTokenSetted; } + } diff --git a/src/main/resources/interop/tracing-error.csv b/interop-qa-tests/src/main/resources/tracing/tracing-error.csv similarity index 100% rename from src/main/resources/interop/tracing-error.csv rename to interop-qa-tests/src/main/resources/tracing/tracing-error.csv diff --git a/interop-qa-tests/src/main/resources/tracing/tracing-ok.csv b/interop-qa-tests/src/main/resources/tracing/tracing-ok.csv new file mode 100644 index 000000000..ed7aa36b9 --- /dev/null +++ b/interop-qa-tests/src/main/resources/tracing/tracing-ok.csv @@ -0,0 +1,2 @@ +"date","purpose_id","token_id","status","requests_count" +"1917-12-29","28874634-6ea6-4def-b200-7377182c71be","99382e29-b0cf-412b-a060-72e421b6d167","200","48" diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/InteropTracingTest.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/InteropTracingTest.java new file mode 100644 index 000000000..ddda9fee5 --- /dev/null +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/InteropTracingTest.java @@ -0,0 +1,28 @@ +package it.pagopa.pn.interop.cucumber; + +import org.junit.platform.suite.api.ConfigurationParameter; +import org.junit.platform.suite.api.ConfigurationParameters; +import org.junit.platform.suite.api.ExcludeTags; +import org.junit.platform.suite.api.IncludeEngines; +import org.junit.platform.suite.api.IncludeTags; +import org.junit.platform.suite.api.SelectClasspathResource; +import org.junit.platform.suite.api.Suite; + +import static io.cucumber.junit.platform.engine.Constants.EXECUTION_MODE_FEATURE_PROPERTY_NAME; +import static io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME; +import static io.cucumber.junit.platform.engine.Constants.PLUGIN_PROPERTY_NAME; + +@Suite +@IncludeEngines("cucumber") +@SelectClasspathResource("it/pagopa/pn/cucumber") +@ConfigurationParameters({ + @ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty"), + @ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "json:target/cucumber-report.json," + + "html:target/cucumber-report.html"), + @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "it.pagopa.pn.interop.cucumber.steps"), + @ConfigurationParameter(key = EXECUTION_MODE_FEATURE_PROPERTY_NAME, value = "same_thread"), +}) +@IncludeTags({"interopTracingCsv"}) +@ExcludeTags({"ignore"}) +public class InteropTracingTest { +} diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/InteropCucumberSpringIntegration.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/InteropCucumberSpringIntegration.java index ae38fe1e3..f07f19515 100644 --- a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/InteropCucumberSpringIntegration.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/InteropCucumberSpringIntegration.java @@ -14,7 +14,7 @@ import it.pagopa.interop.authorization.service.utils.ConfigFileReader; import it.pagopa.interop.authorization.service.utils.IdentityService; import it.pagopa.interop.authorization.service.utils.PollingService; -import it.pagopa.interop.conf.springconfig.InteropClientConfigs; +import it.pagopa.interop.conf.InteropClientConfigs; import it.pagopa.interop.config.springconfig.springconfig.InteropRestTemplateConfiguration; import it.pagopa.interop.delegate.service.impl.DelegationApiClientImpl; import it.pagopa.interop.delegate.service.impl.ProducerDelegationsApiClientImpl; @@ -22,7 +22,11 @@ import it.pagopa.interop.purpose.service.impl.PurposeApiClientImpl; import it.pagopa.interop.tenant.service.ITenantsApi; import it.pagopa.interop.tenant.service.impl.TenantsApiClientImpl; +import it.pagopa.interop.tracing.config.TracingClientConfigs; +import it.pagopa.interop.tracing.service.TracingRetriever; +import it.pagopa.interop.tracing.service.impl.InteropTracingClientImpl; import it.pagopa.interop.utils.HttpCallExecutor; +import it.pagopa.pn.interop.cucumber.utility.TracingFileUtils; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.scheduling.annotation.EnableScheduling; @@ -45,7 +49,6 @@ IAttributeApiClient.class, ITenantsApi.class, TenantsApiClientImpl.class, - InteropClientConfigs.class, PurposeApiClientImpl.class, IEServiceClient.class, EServiceApiClientImpl.class, @@ -53,7 +56,12 @@ ClientTokenConfigurator.class, ProducerDelegationsApiClientImpl.class, DelegationApiClientImpl.class, - ConfigFileReader.class + ConfigFileReader.class, + InteropClientConfigs.class, + InteropTracingClientImpl.class, + TracingFileUtils.class, + TracingClientConfigs.class, + TracingRetriever.class }) @EnableScheduling @EnableConfigurationProperties diff --git a/src/test/java/it/pagopa/pn/cucumber/steps/pa/TracingSteps.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java similarity index 79% rename from src/test/java/it/pagopa/pn/cucumber/steps/pa/TracingSteps.java rename to interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java index b1b9f23d9..43025f8f2 100644 --- a/src/test/java/it/pagopa/pn/cucumber/steps/pa/TracingSteps.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java @@ -1,35 +1,40 @@ -package it.pagopa.pn.cucumber.steps.pa; +package it.pagopa.pn.interop.cucumber.steps.tracing; import io.cucumber.java.en.And; import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.*; -import it.pagopa.pn.client.b2b.pa.interop.IInteropTracingClient; -import it.pagopa.pn.client.b2b.pa.interop.polling.dto.PnPollingInterop; -import it.pagopa.pn.client.b2b.pa.interop.polling.dto.PnTracingResponse; -import it.pagopa.pn.client.b2b.pa.interop.service.impl.PnPollingInteropTracing; -import it.pagopa.pn.client.b2b.pa.polling.design.PnPollingFactory; -import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingParameter; -import it.pagopa.pn.client.b2b.pa.service.utils.SettableBearerToken; -import it.pagopa.pn.cucumber.interop.utility.TracingFileUtils; +import it.pagopa.interop.authorization.service.utils.PollingService; +import it.pagopa.interop.authorization.service.utils.SettableBearerToken; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingErrorsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingErrorsResponseResults; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponseResults; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.SubmitTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.TracingState; +import it.pagopa.interop.tracing.service.IInteropTracingClient; +import it.pagopa.interop.tracing.service.TracingRetriever; +import it.pagopa.pn.interop.cucumber.utility.TracingFileUtils; import org.junit.jupiter.api.Assertions; import org.opentest4j.AssertionFailedError; -import org.springframework.core.io.*; +import org.springframework.core.io.Resource; import org.springframework.web.client.HttpStatusCodeException; import java.time.LocalDate; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.UUID; -import static it.pagopa.pn.client.b2b.pa.polling.design.PnPollingStrategy.INTEROP_TRACING; import static org.assertj.core.api.Assertions.assertThat; public class TracingSteps { private static final int OFFSET_VALUE = 0; private static final int LIMIT_VALUE = 50; - private final PnPollingFactory pnPollingFactory; private final IInteropTracingClient interopTracingClient; private final TracingFileUtils tracingFileUtils; + private final PollingService pollingService; + private final TracingRetriever tracingRetriever; private SubmitTracingResponse submitTracingResponse; private GetTracingsResponse getTracingsResponse; @@ -42,18 +47,21 @@ public class TracingSteps { * @param pnPollingFactory {@link PnPollingFactory} * @param interopTracingClient {@link IInteropTracingClient} * @param tracingFileUtils {@link TracingFileUtils} + * @param pollingService {@link PollingService} */ - public TracingSteps(PnPollingFactory pnPollingFactory, IInteropTracingClient interopTracingClient, TracingFileUtils tracingFileUtils) { - this.pnPollingFactory = pnPollingFactory; + public TracingSteps(IInteropTracingClient interopTracingClient, + TracingFileUtils tracingFileUtils, PollingService pollingService, TracingRetriever tracingRetriever) { this.interopTracingClient = interopTracingClient; this.tracingFileUtils = tracingFileUtils; + this.pollingService = pollingService; + this.tracingRetriever = tracingRetriever; } @Given("l'utenza {string} effettua le chiamate") public void selectOperator(String operator) { switch (operator.trim().toLowerCase()) { - case "tenant1" -> interopTracingClient.setBearerToken(SettableBearerToken.BearerTokenType.TENANT_1); - case "tenant2" -> interopTracingClient.setBearerToken(SettableBearerToken.BearerTokenType.TENANT_2); + case "tenant1" -> interopTracingClient.setBearerToken(SettableBearerToken.BearerTokenType.TENANT_1.toString()); + case "tenant2" -> interopTracingClient.setBearerToken(SettableBearerToken.BearerTokenType.TENANT_2.toString()); default -> throw new IllegalStateException("Unexpected value: " + operator.trim().toLowerCase()); } } @@ -147,7 +155,7 @@ public void verifyGetTracingErrorResponse() { createExpectedResponse("INVALID_PURPOSE", "purpose_id: Invalid uuid", "", 2), createExpectedResponse("INVALID_DATE", String.format("date: Date field (2024-08-25) in csv is different from tracing date (%s).", submissionDate.toString()), "", 2) ); - assertThat(getTracingErrorsResponse.getResults()).containsAll(expectedResult); + org.assertj.core.api.Assertions.assertThat(getTracingErrorsResponse.getResults()).containsAll(expectedResult); } @When("gli errori riscontrati vengono corretti passando il csv {string}") @@ -216,15 +224,28 @@ public void recoverMissingCsvForDate(String fileType) { } @And("si attende che il file di tracing caricato passi in stato {string}") - public void waitForStatus(String status) { - PnPollingInteropTracing interopTracing = (PnPollingInteropTracing) pnPollingFactory.getPollingService(INTEROP_TRACING); - PnTracingResponse pnTracingResponse = interopTracing.waitForEvent(null, - PnPollingParameter.builder() - .value(INTEROP_TRACING) - .pollingType(PnPollingParameter.PollingType.RAPID) - .pnPollingInterop(new PnPollingInterop(submitTracingResponse.getTracingId().toString(), TracingState.fromValue(status))) - .build()); - Assertions.assertTrue(pnTracingResponse.getResult()); + public void waitForStatus(String state) { + pollingService.makePolling( + () -> tracingRetriever.retrieve(0, List.of(TracingState.fromValue(state))), + res -> res.getResults().stream() + .filter(x -> x.getTracingId().equals(submitTracingResponse.getTracingId().toString())) + .map(GetTracingsResponseResults::getState) + .anyMatch(tracingState -> tracingState.equals(state)), + "" + ); +// +// +// +// +// +// PnPollingInteropTracing interopTracing = (PnPollingInteropTracing) pnPollingFactory.getPollingService(PnPollingStrategy.INTEROP_TRACING); +// PnTracingResponse pnTracingResponse = interopTracing.waitForEvent(null, +// PnPollingParameter.builder() +// .value(PnPollingStrategy.INTEROP_TRACING) +// .pollingType(PnPollingParameter.PollingType.RAPID) +// .pnPollingInterop(new PnPollingInterop(submitTracingResponse.getTracingId().toString(), TracingState.fromValue(status))) +// .build()); +// Assertions.assertTrue(pnTracingResponse.getResult()); } @Then("viene recuperato il file di tracing appena caricato e si verifica che lo stato sia {string}") diff --git a/src/test/java/it/pagopa/pn/cucumber/interop/utility/TracingFileUtils.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/utility/TracingFileUtils.java similarity index 81% rename from src/test/java/it/pagopa/pn/cucumber/interop/utility/TracingFileUtils.java rename to interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/utility/TracingFileUtils.java index 8d68c8cfd..463c946b3 100644 --- a/src/test/java/it/pagopa/pn/cucumber/interop/utility/TracingFileUtils.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/utility/TracingFileUtils.java @@ -1,4 +1,4 @@ -package it.pagopa.pn.cucumber.interop.utility; +package it.pagopa.pn.interop.cucumber.utility; import com.opencsv.CSVWriter; import org.opentest4j.AssertionFailedError; @@ -6,12 +6,14 @@ import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Component; -import java.io.*; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; @Component public class TracingFileUtils { - private static final String CSV_OK_FILEPATH = "src/main/resources/interop/tracing-ok.csv"; - private static final String CSV_ERROR_FILEPATH = "src/main/resources/interop/tracing-error.csv"; + private static final String CSV_OK_FILEPATH = "src/main/resources/tracing/tracing-ok.csv"; + private static final String CSV_ERROR_FILEPATH = "src/main/resources/tracing/tracing-error.csv"; private final ResourceLoader resourceLoader; public TracingFileUtils(ResourceLoader resourceLoader) { @@ -22,8 +24,8 @@ public void updateCsv(String date) { File file = new File(CSV_OK_FILEPATH); try { CSVWriter csvWriter = new CSVWriter(new FileWriter(file)); - csvWriter.writeNext(new String[] {"date", "purpose_id", "status", "requests_count"}); - csvWriter.writeNext(new String[] {date, "28874634-6ea6-4def-b200-7377182c71be", "200", "48"}); + csvWriter.writeNext(new String[] {"date", "purpose_id", "token_id", "status", "requests_count"}); + csvWriter.writeNext(new String[] {date, "28874634-6ea6-4def-b200-7377182c71be", "99382e29-b0cf-412b-a060-72e421b6d167", "200", "48"}); csvWriter.close(); } catch (IOException ex) { throw new AssertionFailedError("There was an error while generating the csv file: " + ex); diff --git a/src/test/resources/it/pagopa/pn/cucumber/interop/InteropTracing.feature b/interop-qa-tests/src/test/resources/it/pagopa/pn/cucumber/tracing/InteropTracing.feature similarity index 100% rename from src/test/resources/it/pagopa/pn/cucumber/interop/InteropTracing.feature rename to interop-qa-tests/src/test/resources/it/pagopa/pn/cucumber/tracing/InteropTracing.feature diff --git a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/config/springconfig/InteropConfiguration.java b/src/main/java/it/pagopa/pn/client/b2b/pa/interop/config/springconfig/InteropConfiguration.java deleted file mode 100644 index c15e594f7..000000000 --- a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/config/springconfig/InteropConfiguration.java +++ /dev/null @@ -1,9 +0,0 @@ -package it.pagopa.pn.client.b2b.pa.interop.config.springconfig; - -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; - -@Configuration -@PropertySource( value = "file:config/interop-tracing-dev.properties", ignoreResourceNotFound = true ) -public class InteropConfiguration { -} diff --git a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/polling/dto/PnPollingInterop.java b/src/main/java/it/pagopa/pn/client/b2b/pa/interop/polling/dto/PnPollingInterop.java deleted file mode 100644 index 3242b9e11..000000000 --- a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/polling/dto/PnPollingInterop.java +++ /dev/null @@ -1,14 +0,0 @@ -package it.pagopa.pn.client.b2b.pa.interop.polling.dto; - -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.TracingState; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -@AllArgsConstructor -public class PnPollingInterop { - private String tracingId; - private TracingState status; -} diff --git a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/polling/dto/PnTracingResponse.java b/src/main/java/it/pagopa/pn/client/b2b/pa/interop/polling/dto/PnTracingResponse.java deleted file mode 100644 index 73364e2ac..000000000 --- a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/polling/dto/PnTracingResponse.java +++ /dev/null @@ -1,12 +0,0 @@ -package it.pagopa.pn.client.b2b.pa.interop.polling.dto; - -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponse; -import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingResponse; -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -public class PnTracingResponse extends PnPollingResponse { - private GetTracingsResponse getTracingsResponse; -} diff --git a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/service/impl/PnPollingInteropTracing.java b/src/main/java/it/pagopa/pn/client/b2b/pa/interop/service/impl/PnPollingInteropTracing.java deleted file mode 100644 index 3e6df9254..000000000 --- a/src/main/java/it/pagopa/pn/client/b2b/pa/interop/service/impl/PnPollingInteropTracing.java +++ /dev/null @@ -1,101 +0,0 @@ -package it.pagopa.pn.client.b2b.pa.interop.service.impl; - -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponseResults; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.TracingState; -import it.pagopa.pn.client.b2b.pa.interop.IInteropTracingClient; -import it.pagopa.pn.client.b2b.pa.interop.polling.dto.PnTracingResponse; -import it.pagopa.pn.client.b2b.pa.polling.design.PnPollingStrategy; -import it.pagopa.pn.client.b2b.pa.polling.design.PnPollingTemplate; -import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingParameter; -import it.pagopa.pn.client.b2b.pa.polling.exception.PnPollingException; -import it.pagopa.pn.client.b2b.pa.utils.TimingForPolling; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.config.ConfigurableBeanFactory; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.concurrent.Callable; -import java.util.function.Predicate; - -@Service(PnPollingStrategy.INTEROP_TRACING) -@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) -@Slf4j -public class PnPollingInteropTracing extends PnPollingTemplate { - private static final int OFFSET_VALUE = 0; - private static final int LIMIT_VALUE = 50; - protected final TimingForPolling timingForPolling; - private final IInteropTracingClient interopTracingClient; - private GetTracingsResponse pollingResponse; - - public PnPollingInteropTracing(TimingForPolling timingForPolling, IInteropTracingClient interopTracingClient) { - this.timingForPolling = timingForPolling; - this.interopTracingClient = interopTracingClient; - } - - @Override - protected Callable getPollingResponse(String id, PnPollingParameter pnPollingParameter) { - return () -> { - PnTracingResponse pnTracingResponse = new PnTracingResponse(); - GetTracingsResponse getTracingsResponse; - try { - getTracingsResponse = interopTracingClient.getTracings(OFFSET_VALUE, LIMIT_VALUE, List.of(pnPollingParameter.getPnPollingInterop().getStatus())); - } catch (Exception exception) { - log.error("There was an error while retrieving all the tracings!"); - throw new PnPollingException(exception.getMessage()); - } - pnTracingResponse.setGetTracingsResponse(getTracingsResponse); - this.pollingResponse = getTracingsResponse; - return pnTracingResponse; - }; - } - - @Override - protected Predicate checkCondition(String id, PnPollingParameter pnPollingParameter) { - return pnTracingResponse -> { - pnTracingResponse.setResult( - pnTracingResponse.getGetTracingsResponse().getResults().stream() - .filter(x -> pnPollingParameter.getPnPollingInterop().getTracingId().equals(x.getTracingId())) - .map(GetTracingsResponseResults::getState) - .map(TracingState::fromValue) - .anyMatch(status -> pnPollingParameter.getPnPollingInterop().getStatus().equals(status))); - return pnTracingResponse.getResult(); - }; - } - - @Override - protected PnTracingResponse getException(Exception exception) { - PnTracingResponse pnTracingResponse = new PnTracingResponse(); - pnTracingResponse.setGetTracingsResponse(this.pollingResponse); - pnTracingResponse.setResult(false); - return pnTracingResponse; - } - - @Override - protected Integer getPollInterval(String value) { - TimingForPolling.TimingResult timingResult = timingForPolling.getTimingForElement(value, false, true); - return timingResult.waiting(); - } - - @Override - protected Integer getAtMost(String value) { - TimingForPolling.TimingResult timingResult = timingForPolling.getTimingForElement(value, false, true); - return timingResult.waiting() * timingResult.numCheck(); - } - - @Override - public boolean setApiKeys(ApiKeyType apiKey) { - throw new UnsupportedOperationException(); - } - - @Override - public void setApiKey(String apiKey) { - throw new UnsupportedOperationException(); - } - - @Override - public ApiKeyType getApiKeySetted() { - throw new UnsupportedOperationException(); - } -} diff --git a/src/main/java/it/pagopa/pn/client/b2b/pa/polling/dto/PnPollingParameter.java b/src/main/java/it/pagopa/pn/client/b2b/pa/polling/dto/PnPollingParameter.java index 1da2ca808..3d45c7bca 100644 --- a/src/main/java/it/pagopa/pn/client/b2b/pa/polling/dto/PnPollingParameter.java +++ b/src/main/java/it/pagopa/pn/client/b2b/pa/polling/dto/PnPollingParameter.java @@ -1,6 +1,5 @@ package it.pagopa.pn.client.b2b.pa.polling.dto; -import it.pagopa.pn.client.b2b.pa.interop.polling.dto.PnPollingInterop; import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -20,5 +19,4 @@ public class PnPollingParameter { public enum PollingType {SLOW, RAPID, SHORT} private PnPollingPredicate pnPollingPredicate; private PnPollingWebhook pnPollingWebhook; - private PnPollingInterop pnPollingInterop; } \ No newline at end of file diff --git a/src/main/resources/interop/tracing-ok.csv b/src/main/resources/interop/tracing-ok.csv deleted file mode 100644 index 19f96bbfa..000000000 --- a/src/main/resources/interop/tracing-ok.csv +++ /dev/null @@ -1,2 +0,0 @@ -"date","purpose_id","status","requests_count" -"2024-08-06","28874634-6ea6-4def-b200-7377182c71be","200","48" diff --git a/src/test/java/it/pagopa/pn/cucumber/interop/InteropTracingTest.java b/src/test/java/it/pagopa/pn/cucumber/interop/InteropTracingTest.java deleted file mode 100644 index 28fff31b8..000000000 --- a/src/test/java/it/pagopa/pn/cucumber/interop/InteropTracingTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package it.pagopa.pn.cucumber.interop; - -import org.junit.platform.suite.api.*; - -import static io.cucumber.junit.platform.engine.Constants.*; - -@Suite -@IncludeEngines("cucumber") -@SelectClasspathResource("it/pagopa/pn/cucumber/interop") -@ConfigurationParameters({ - @ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty"), - @ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "json:target/cucumber-report.json," + - "html:target/cucumber-report.html"), - @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "it.pagopa.pn.cucumber.steps"), - @ConfigurationParameter(key = EXECUTION_MODE_FEATURE_PROPERTY_NAME, value = "same_thread"), -}) -@IncludeTags({"interopTracingCsv"}) -@ExcludeTags({"ignore"}) -public class InteropTracingTest { -} diff --git a/src/test/java/it/pagopa/pn/cucumber/steps/CucumberSpringIntegration.java b/src/test/java/it/pagopa/pn/cucumber/steps/CucumberSpringIntegration.java index 3c90fde24..34f97719e 100644 --- a/src/test/java/it/pagopa/pn/cucumber/steps/CucumberSpringIntegration.java +++ b/src/test/java/it/pagopa/pn/cucumber/steps/CucumberSpringIntegration.java @@ -3,23 +3,107 @@ import io.cucumber.spring.CucumberContextConfiguration; import it.pagopa.pn.client.b2b.pa.PnPaB2bUtils; import it.pagopa.pn.client.b2b.pa.config.PnB2bClientTimingConfigs; -import it.pagopa.pn.client.b2b.pa.config.springconfig.*; -import it.pagopa.pn.client.b2b.pa.interop.service.impl.PnPollingInteropTracing; +import it.pagopa.pn.client.b2b.pa.config.springconfig.ApiKeysConfiguration; +import it.pagopa.pn.client.b2b.pa.config.springconfig.BearerTokenConfiguration; +import it.pagopa.pn.client.b2b.pa.config.springconfig.LegalFactTokenConfiguration; +import it.pagopa.pn.client.b2b.pa.config.springconfig.MailSenderConfig; +import it.pagopa.pn.client.b2b.pa.config.springconfig.RestTemplateConfiguration; +import it.pagopa.pn.client.b2b.pa.config.springconfig.TimingConfiguration; import it.pagopa.pn.client.b2b.pa.parsing.config.PnLegalFactTokenProperty; import it.pagopa.pn.client.b2b.pa.parsing.config.PnLegalFactTokens; import it.pagopa.pn.client.b2b.pa.parsing.parser.impl.PnParser; import it.pagopa.pn.client.b2b.pa.parsing.service.impl.PnParserService; import it.pagopa.pn.client.b2b.pa.polling.design.PnPollingFactory; -import it.pagopa.pn.client.b2b.pa.polling.impl.*; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusExtraRapidV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusExtraRapidV25; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusExtraRapidV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusRapidV1; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusRapidV20; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusRapidV21; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusRapidV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusRapidV25; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusRapidV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusSlowV1; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusSlowV20; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusSlowV21; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusSlowV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusSlowV25; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusSlowV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineExtraRapidV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineExtraRapidV25; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineExtraRapidV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineRapidV1; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineRapidV20; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineRapidV21; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineRapidV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineRapidV25; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineRapidV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineSlowE2eV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineSlowE2eV25; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineSlowE2eV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineSlowV1; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineSlowV20; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineSlowV21; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineSlowV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineSlowV25; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineSlowV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusAcceptedExtraRapidV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusAcceptedExtraRapidV25; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusAcceptedExtraRapidV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusAcceptedShortV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusAcceptedShortV25; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusAcceptedShortV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusNoAcceptedV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusNoAcceptedV25; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusNoAcceptedV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusV1; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusV20; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusV21; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusV25; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceValidationStatusV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceWebhookV20; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceWebhookV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceWebhookV24; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceWebhookV25; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceWebhookV26; import it.pagopa.pn.client.b2b.pa.service.IBffMandateServiceApi; import it.pagopa.pn.client.b2b.pa.service.IMandateReverseServiceClient; -import it.pagopa.pn.client.b2b.pa.service.impl.*; -import it.pagopa.pn.client.b2b.pa.interop.config.InteropClientConfigs; -import it.pagopa.pn.client.b2b.pa.interop.config.springconfig.InteropConfiguration; -import it.pagopa.pn.client.b2b.pa.interop.service.impl.InteropTracingClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.B2BDeliveryPushServiceClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.B2BRecipientExternalClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.B2BUserAttributesExternalClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.B2bMandateServiceClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.BffMandateServiceClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.IPnInteropProbingClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.IPnLegalPersonAuthClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.IPnLegalPersonVirtualKeyServiceClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.IPnTosPrivacyClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.MandateReverseServiceClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PaperCalculatorClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnApiKeyManagerExternalClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnAppIOB2bExternalClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnBFFRecipientNotificationClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnDowntimeLogsExternalClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnExternalChannelsServiceClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnExternalRegistryPrivateUserApiImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnExternalServiceClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnGPDClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnIoUserAttributerExternaClient; +import it.pagopa.pn.client.b2b.pa.service.impl.PnPaB2bExternalClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnPaymentInfoClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnPrivateDeliveryPushExternalClient; +import it.pagopa.pn.client.b2b.pa.service.impl.PnRaddAlternativeClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnRaddFsuClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnSafeStoragePrivateClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnServiceDeskClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnWebMandateExternalClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnWebPaClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnWebRecipientExternalClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnWebUserAttributesExternalClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.PnWebhookB2bExternalClientImpl; +import it.pagopa.pn.client.b2b.pa.service.impl.TemplateEngineClientImpl; import it.pagopa.pn.client.b2b.pa.service.utils.InteropTokenSingleton; import it.pagopa.pn.client.b2b.pa.utils.TimingForPolling; -import it.pagopa.pn.cucumber.interop.utility.TracingFileUtils; import it.pagopa.pn.cucumber.steps.templateEngine.TemplateConfiguration; import it.pagopa.pn.cucumber.steps.templateEngine.context.TemplateEngineContextFactory; import org.springframework.boot.context.properties.EnableConfigurationProperties; @@ -130,11 +214,6 @@ IPnLegalPersonAuthClientImpl.class, IPnLegalPersonVirtualKeyServiceClientImpl.class, IPnTosPrivacyClientImpl.class, - InteropConfiguration.class, - InteropClientConfigs.class, - InteropTracingClientImpl.class, - PnPollingInteropTracing.class, - TracingFileUtils.class, TemplateEngineClientImpl.class, TemplateConfiguration.class, TemplateEngineContextFactory.class From c7b6c5cdaed539f5eb1d0fed18a667caae3c1f40 Mon Sep 17 00:00:00 2001 From: Matteo Mancini Date: Thu, 6 Feb 2025 11:29:03 +0100 Subject: [PATCH 2/9] QA-5723: added a specifici application.properties in the interop submodule --- config/application.properties | 5 ----- interop-qa-tests/config/application.properties | 17 +++++++++++------ .../interop/conf/InteropClientConfigs.java | 1 - .../src/main/resources/qa-interop.properties | 6 ------ ...pTracing.feature => interop-tracing.feature} | 0 5 files changed, 11 insertions(+), 18 deletions(-) delete mode 100644 interop-qa-tests/src/main/resources/qa-interop.properties rename interop-qa-tests/src/test/resources/it/pagopa/pn/cucumber/tracing/{InteropTracing.feature => interop-tracing.feature} (100%) diff --git a/config/application.properties b/config/application.properties index 96d06de0b..177a53f2e 100644 --- a/config/application.properties +++ b/config/application.properties @@ -148,11 +148,6 @@ pn.interop.clientId=${interop.clientId.value} pn.interop.base-url=https://auth.uat.interop.pagopa.it pn.interop.token-oauth2.path=/token.oauth2 -#INTEROP TRACING -pn.interop.tracing.base-url=https://api.dev.tracing.interop.pagopa.it -pn.interop.tracing.bearerToken-1=${interop.configuration.tracing.bearerToken-1} -pn.interop.tracing.bearerToken-2=${interop.configuration.tracing.bearerToken-2} - #RADD ALT ADEGUAMENTO pn.radd.alt.external.max-print-request=10 diff --git a/interop-qa-tests/config/application.properties b/interop-qa-tests/config/application.properties index d902d5819..01e12e4da 100644 --- a/interop-qa-tests/config/application.properties +++ b/interop-qa-tests/config/application.properties @@ -1,11 +1,16 @@ +#TRACING +pn.interop.tracing.base-url=https://api.dev.tracing.interop.pagopa.it +pn.interop.tracing.bearerToken-1=${interop.configuration.tracing.bearerToken-1} +pn.interop.tracing.bearerToken-2=${interop.configuration.tracing.bearerToken-2} #PURPOSE_ID 28874634-6ea6-4def-b200-7377182c71be interop.configuration.tracing.bearerToken-1=eyJhbGciOiJSUzI1NiIsInVzZSI6InNpZyIsInR5cCI6ImF0K2p3dCIsImtpZCI6IjBiOTEwNmExLWRiMGMtNDg4Zi05MDg0LWNlOGM2MzIxNDJiYyJ9.eyJqdGkiOiJhMGQzN2QxYy1iMzU3LTRlN2EtYjIzYy05MDViNTU3NzA2NjciLCJpc3MiOiJ0cmFjaW5nLWlzc3VlciIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6NDAwMSIsInN1YiI6InRyYWNpbmctc3ViamVjdCIsImlhdCI6MTcyOTYwNzUwMCwibmJmIjoxNzI5NjA3NTAwLCJleHAiOjE4Mjk2MDc0OTksIm9yZ2FuaXphdGlvbklkIjoiMGU5ZTJkYWItMmU5My00ZjI0LWJhNTktMzhkOWYxMTE5OGNhIiwicm9sZSI6ImludGVybmFsIn0.AEhPS-dnJWwTOY1gN5gqKtfAswKxZtRTPozHVM2xbG4TD3oSoo5TCyLyvPWYezFMEIIueMZykeiBnUvT_EEePl018cpio_lrlmKqHpGiYe-9u_6EU-cmPTAU9Cnpu6yESS7KyaGziFHm-Rp7qxmjnMsMgKG6IpxgmnbEwxnu4pBiFwHx_sJyUtVks7xZr50UVRzpNQNYRv9ypko140fx85bDQHyNzFqLa75wFX3hiF2yi7A-vmEuwqVwCRrpwuphMksNaSEs-E8bbxnXeq1zeiav7oc9wZHtnPruhth9fr6PoTcPwtftLEEh_QH_IssciqpTY8stA0S4AMwvFYyP_w #PURPOSE_ID 5602d95a-9297-4221-86d0-f142b8690d5c interop.configuration.tracing.bearerToken-2=eyJhbGciOiJSUzI1NiIsInVzZSI6InNpZyIsInR5cCI6ImF0K2p3dCIsImtpZCI6IjBiOTEwNmExLWRiMGMtNDg4Zi05MDg0LWNlOGM2MzIxNDJiYyJ9.eyJqdGkiOiI0MDNlYzc3ZC01OGM3LTQwMmYtYTg4Zi1iYzNmODFjMTBiNGIiLCJpc3MiOiJ0cmFjaW5nLWlzc3VlciIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6NDAwMSIsInN1YiI6InRyYWNpbmctc3ViamVjdCIsImlhdCI6MTczMDI3NzkwOCwibmJmIjoxNzMwMjc3OTA4LCJleHAiOjE4MzAyNzc5MDcsIm9yZ2FuaXphdGlvbklkIjoiNjllMjg2NWUtNjVhYi00ZTQ4LWE2MzgtMjAzN2E5ZWUyZWU3Iiwicm9sZSI6ImludGVybmFsIn0.JH2Rs9pDCHlMCBmrIvMOiCKd6eb_Xs1OdIDG47ET5gTpd1uPFio0wwHpKBnhzVZpjuFzi14EaMVHRuZqLq7NBkP4-xRAP5_muOdCKjRu6gcJVagXVTwtFXw-3WnP7jFX8FEOqjqmRoA83hX4s_dPewKZbqtC8VkKDPAHOaN9I0ZEUWwzwn9X07gCJPi3jimfhdsk4YgjcR4qlTUif73hxcHwNvfpiCqYCAXZDa_KWcz7D_QQsOLxRWFHKgfGNRr5gbuYDBSykb-ZLqsxecnXyhc3Fpwe5rTnIHWKcITfRNQjej5YnJ88HUyPrTqLqOfGvWIM3kY4n82Vt1oJYSmQNA - - -#INTEROP TRACING -pn.interop.tracing.base-url=https://api.dev.tracing.interop.pagopa.it -pn.interop.tracing.bearerToken-1=${interop.configuration.tracing.bearerToken-1} -pn.interop.tracing.bearerToken-2=${interop.configuration.tracing.bearerToken-2} \ No newline at end of file +#INTEROP GLOBAL PROPERTIES +bff.base-url=https://selfcare.qa.interop.pagopa.it/1.0/backend-for-frontend +remote-wellknown-url=https://qa.interop.pagopa.it/.well-known/jwks.json +session.tokens.duration.seconds=3000 +interop-env=qa +max-polling-try-ms=50 +max-polling-sleep-ms=1000 diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/conf/InteropClientConfigs.java b/interop-qa-tests/src/main/java/it/pagopa/interop/conf/InteropClientConfigs.java index 57bb76362..da73432d1 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/conf/InteropClientConfigs.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/conf/InteropClientConfigs.java @@ -7,7 +7,6 @@ import org.springframework.context.annotation.PropertySource; @Configuration -@PropertySource("classpath:qa-interop.properties") @Getter @Setter public class InteropClientConfigs { diff --git a/interop-qa-tests/src/main/resources/qa-interop.properties b/interop-qa-tests/src/main/resources/qa-interop.properties deleted file mode 100644 index 30f83206b..000000000 --- a/interop-qa-tests/src/main/resources/qa-interop.properties +++ /dev/null @@ -1,6 +0,0 @@ -bff.base-url=https://selfcare.qa.interop.pagopa.it/1.0/backend-for-frontend -remote-wellknown-url=https://qa.interop.pagopa.it/.well-known/jwks.json -session.tokens.duration.seconds=3000 -interop-env=qa -max-polling-try-ms=50 -max-polling-sleep-ms=1000 \ No newline at end of file diff --git a/interop-qa-tests/src/test/resources/it/pagopa/pn/cucumber/tracing/InteropTracing.feature b/interop-qa-tests/src/test/resources/it/pagopa/pn/cucumber/tracing/interop-tracing.feature similarity index 100% rename from interop-qa-tests/src/test/resources/it/pagopa/pn/cucumber/tracing/InteropTracing.feature rename to interop-qa-tests/src/test/resources/it/pagopa/pn/cucumber/tracing/interop-tracing.feature From 1ea963d3432e207e392e81a3b7e8576fbc2f5c49 Mon Sep 17 00:00:00 2001 From: Vincenzo Massaro Date: Wed, 12 Feb 2025 12:59:05 +0100 Subject: [PATCH 3/9] QA-5851: first version of test edits - modified [B2B_TIMELINE_ANALOG_GIACENZA_AR_3] by adding missing checks on deliveryDetailCode and attempts made - introduced [B2B_TIMELINE_ANALOG_GIACENZA_AR_ERR_1] --- .../pagopa/pn/cucumber/steps/SharedSteps.java | 13 ++++ .../pa/AvanzamentoNotificheB2bSteps.java | 59 ++++++++++++++++++- ...entoNotifichePFAnalogicoGiacenzaAR.feature | 55 +++++++++++++++++ 3 files changed, 125 insertions(+), 2 deletions(-) diff --git a/src/test/java/it/pagopa/pn/cucumber/steps/SharedSteps.java b/src/test/java/it/pagopa/pn/cucumber/steps/SharedSteps.java index 0209a5b56..db69d748f 100644 --- a/src/test/java/it/pagopa/pn/cucumber/steps/SharedSteps.java +++ b/src/test/java/it/pagopa/pn/cucumber/steps/SharedSteps.java @@ -6,6 +6,7 @@ import static it.pagopa.pn.cucumber.utils.NotificationValue.PAYMENT_PAGOPA_FORM; import static it.pagopa.pn.cucumber.utils.NotificationValue.getDefaultValue; import static it.pagopa.pn.cucumber.utils.NotificationValue.getValue; +import static java.util.Objects.nonNull; import static org.awaitility.Awaitility.await; import com.fasterxml.jackson.core.JsonProcessingException; @@ -2242,6 +2243,18 @@ public List getTimelineElementsByEventId(String timelineEven return timelineElementList.stream().filter(elem -> Objects.requireNonNull(elem.getCategory()).getValue().equals(timelineEventCategory)).toList(); } + /** Get all timeline elements having attempt index less or equal to the given one + * @param attemptIndex the index of the attempt (starting from 0) + * @return a list of timeline elements that match the given event category and data from test */ + public List getTimelineElementsToAttempt(int attemptIndex) { + List timelineElementList = notificationResponseComplete.getTimeline(); + return timelineElementList.stream() + .filter(elem -> nonNull(elem.getDetails())) + .filter(elem -> nonNull(elem.getDetails().getSentAttemptMade())) + .filter(elem -> elem.getDetails().getSentAttemptMade() <= attemptIndex) + .toList(); + } + public TimelineElementV26 getTimelineElementByEventId(String timelineEventCategory, DataTest dataFromTest) { return getTimelineElementsByEventId(timelineEventCategory, dataFromTest).stream() .findAny() diff --git a/src/test/java/it/pagopa/pn/cucumber/steps/pa/AvanzamentoNotificheB2bSteps.java b/src/test/java/it/pagopa/pn/cucumber/steps/pa/AvanzamentoNotificheB2bSteps.java index be31207c4..31a179f2a 100644 --- a/src/test/java/it/pagopa/pn/cucumber/steps/pa/AvanzamentoNotificheB2bSteps.java +++ b/src/test/java/it/pagopa/pn/cucumber/steps/pa/AvanzamentoNotificheB2bSteps.java @@ -41,8 +41,23 @@ import it.pagopa.pn.client.b2b.pa.mapper.model.PnTimelineLegalFactV26; import it.pagopa.pn.client.b2b.pa.polling.design.PnPollingFactory; import it.pagopa.pn.client.b2b.pa.polling.design.PnPollingStrategy; -import it.pagopa.pn.client.b2b.pa.polling.dto.*; -import it.pagopa.pn.client.b2b.pa.polling.impl.*; +import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingParameter; +import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingPredicate; +import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingResponseV1; +import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingResponseV20; +import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingResponseV21; +import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingResponseV23; +import it.pagopa.pn.client.b2b.pa.polling.dto.PnPollingResponseV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusRapidV1; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceStatusRapidV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineExtraRapidV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineRapidV1; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineRapidV20; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineRapidV21; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineRapidV23; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineRapidV26; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineSlowV1; +import it.pagopa.pn.client.b2b.pa.polling.impl.PnPollingServiceTimelineSlowV26; import it.pagopa.pn.client.b2b.pa.service.IPnPaB2bClient; import it.pagopa.pn.client.b2b.pa.service.IPnPrivateDeliveryPushExternalClient; import it.pagopa.pn.client.b2b.pa.service.IPnWebRecipientClient; @@ -73,6 +88,7 @@ import java.util.function.Predicate; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.IntStream; import lombok.extern.slf4j.Slf4j; import org.apache.commons.beanutils.BeanUtils; import org.apache.pdfbox.Loader; @@ -2588,6 +2604,31 @@ public void vieneVerificatoElementoTimeline(String timelineEventCategory, @Trans } } + @Then("viene verificato che l'ultimo tentativo effettuato abbia indice {int}") + public void vieneVerificatoCheUltimoTentativoEffettuatoAbbiaIndice(Integer index) { + try { + List actualTimelineElements = sharedSteps.getTimelineElementsToAttempt( + index); + List actualAttemptsMade = actualTimelineElements.stream() + .map(TimelineElementV26::getDetails) + .filter(Objects::nonNull) + .map(TimelineElementDetailsV26::getSentAttemptMade) + .distinct() + .toList(); + List expectedAttemptsMade = IntStream.range(0, index + 1) + .boxed() + .toList(); + + assertThat(actualAttemptsMade) + .withFailMessage("Non è stato trovato alcun elemento di timeline corrispondente a un tentativo di indice minore o uguale a '%d'.".formatted(index)) + .isNotEmpty() + .as("I tentativi effettuati non corrispondono a quelli attesi.") + .hasSameElementsAs(expectedAttemptsMade); + } catch (AssertionError assertionFailedError) { + sharedSteps.throwAssertFailerWithIUN(assertionFailedError); + } + } + /** Checks that a certain timeline element has a field with a text value compatible with the specified regular expression. * @param timelineEventCategory the category of the timeline element, e.g. "SEND_ANALOG_PROGRESS" * @param eventId the event id of the timeline element, e.g. "CON020" @@ -2690,6 +2731,20 @@ public void vieneVerificatoCheElementoTimelineNonEsista(String timelineEventCate } } + /* TODO 12/02/2025 Accorpare con vieneVerificatoCheElementoTimelineNonEsista(String timelineEventCategory, @Transpose DataTest dataFromTest) + * parametrizzando il load della timeline. + */ + @And("viene verificato che l'elemento di timeline {string} non esista nella timeline caricata") + public void vieneVerificatoCheElementoTimelineNonEsistaNotLoadTimeline(String timelineEventCategory, @Transpose DataTest dataFromTest) { + TimelineElementV26 timelineElement = sharedSteps.getTimelineElementByEventId(timelineEventCategory, dataFromTest); + try { + log.info("TIMELINE_ELEMENT: " + timelineElement); + Assertions.assertNull(timelineElement); + } catch (AssertionFailedError assertionFailedError) { + sharedSteps.throwAssertFailerWithIUN(assertionFailedError); + } + } + @And("viene schedulato il perfezionamento per decorrenza termini per il caso {string}") public void vieneSchedulatoIlPerfezionamento(String timelineCategory, @Transpose DataTest dataFromTest) { diff --git a/src/test/resources/it/pagopa/pn/cucumber/workflowNotifica/workflowAnalogico/giacenza/giacenzaAR/AvanzamentoNotifichePFAnalogicoGiacenzaAR.feature b/src/test/resources/it/pagopa/pn/cucumber/workflowNotifica/workflowAnalogico/giacenza/giacenzaAR/AvanzamentoNotifichePFAnalogicoGiacenzaAR.feature index ee1a6b2cb..3307df55f 100644 --- a/src/test/resources/it/pagopa/pn/cucumber/workflowNotifica/workflowAnalogico/giacenza/giacenzaAR/AvanzamentoNotifichePFAnalogicoGiacenzaAR.feature +++ b/src/test/resources/it/pagopa/pn/cucumber/workflowNotifica/workflowAnalogico/giacenza/giacenzaAR/AvanzamentoNotifichePFAnalogicoGiacenzaAR.feature @@ -75,12 +75,61 @@ Feature: avanzamento notifiche b2b con workflow cartaceo giacenza AR | digitalDomicile | NULL | | physicalAddress_address | Via@FAIL-CompiutaGiacenza_AR | When la notifica viene inviata tramite api b2b dal "Comune_Multi" e si attende che lo stato diventi ACCEPTED + And vengono letti gli eventi fino all'elemento di timeline della notifica "REFINEMENT" + And viene verificato che l'elemento di timeline "SEND_ANALOG_PROGRESS" esista + | details | NOT_NULL | + | details_deliveryDetailCode | CON080 | + | details_recIndex | 0 | + | details_sentAttemptMade | 0 | + And viene verificato che l'elemento di timeline "SEND_ANALOG_PROGRESS" esista + | details | NOT_NULL | + | details_deliveryDetailCode | CON020 | + | details_recIndex | 0 | + | details_sentAttemptMade | 0 | + And viene verificato che l'elemento di timeline "SEND_ANALOG_PROGRESS" esista + | details | NOT_NULL | + | details_deliveryDetailCode | RECRN011 | + | details_recIndex | 0 | + | details_sentAttemptMade | 0 | + And viene verificato che l'elemento di timeline "SEND_ANALOG_PROGRESS" esista + | details | NOT_NULL | + | details_deliveryDetailCode | RECRN005B | + | details_recIndex | 0 | + | details_sentAttemptMade | 0 | + | details_attachments | [{"documentType": "Plico"}] | + And viene verificato che l'elemento di timeline "SEND_ANALOG_PROGRESS" esista + | details | NOT_NULL | + | details_deliveryDetailCode | RECRN005C | + | details_recIndex | 0 | + | details_sentAttemptMade | 0 | + And viene verificato che l'elemento di timeline "SEND_ANALOG_FEEDBACK" esista + | details | NOT_NULL | + | details_deliveryDetailCode | PNRN012 | + | details_recIndex | 0 | + | details_sentAttemptMade | 0 | + And viene verificato che l'ultimo tentativo effettuato abbia indice 1 + + # FIXME 12/02/2025 attualmente non si ha certezza della sequenza corretta, rivedere il test una volta ottenuta + @dev @workflowAnalogico + Scenario: [B2B_TIMELINE_ANALOG_GIACENZA_AR_ERR_1] Invio Notifica Mono destinatario workflow cartaceo - Caso FAIL-CompiutaGiacenza_AR_ERR + Given viene generata una nuova notifica + | subject | notifica analogica con cucumber | + | senderDenomination | Comune di palermo | + And destinatario Mario Gherkin e: + | digitalDomicile | NULL | + | physicalAddress_address | Via@FAIL_CompiutaGiacenza_AR_ERR | + When la notifica viene inviata tramite api b2b dal "Comune_Multi" e si attende che lo stato diventi ACCEPTED And vengono letti gli eventi fino all'elemento di timeline della notifica "SEND_ANALOG_PROGRESS" con deliveryDetailCode "RECRN005C" And viene verificato che l'elemento di timeline "SEND_ANALOG_PROGRESS" esista | details | NOT_NULL | | details_deliveryDetailCode | CON080 | | details_recIndex | 0 | | details_sentAttemptMade | 0 | + And viene verificato che l'elemento di timeline "SEND_ANALOG_PROGRESS" esista + | details | NOT_NULL | + | details_deliveryDetailCode | CON020 | + | details_recIndex | 0 | + | details_sentAttemptMade | 0 | And viene verificato che l'elemento di timeline "SEND_ANALOG_PROGRESS" esista | details | NOT_NULL | | details_deliveryDetailCode | RECRN011 | @@ -92,6 +141,12 @@ Feature: avanzamento notifiche b2b con workflow cartaceo giacenza AR | details_recIndex | 0 | | details_sentAttemptMade | 0 | | details_attachments | [{"documentType": "Plico"}] | + And viene verificato che l'elemento di timeline "SEND_ANALOG_FEEDBACK" non esista nella timeline caricata + | details | NOT_NULL | + | details_deliveryDetailCode | PNRN012 | + | details_recIndex | 0 | + | details_sentAttemptMade | 0 | + And viene verificato che l'ultimo tentativo effettuato abbia indice 0 @dev @workflowAnalogico Scenario: [B2B_TIMELINE_ANALOG_GIACENZA_AR_4] Invio Notifica Mono destinatario workflow cartaceo - Caso OK-Giacenza-gt10_AR PN-5927 From ba113e2cfe55cbe72c15dac5586c802c30501cc3 Mon Sep 17 00:00:00 2001 From: Vincenzo Massaro Date: Wed, 12 Feb 2025 16:51:55 +0100 Subject: [PATCH 4/9] QA-5851 - [B2B_TIMELINE_ANALOG_GIACENZA_AR_3]: set max attempt to 0, checked ANALOG_SUCCESS_WORKFLOW instead REFINEMENT - [B2B_TIMELINE_ANALOG_GIACENZA_AR_ERR_1]: replaced RECRN005C with RECRN005B and removed PNRN012 --- .../steps/pa/AvanzamentoNotificheB2bSteps.java | 2 +- ...AvanzamentoNotifichePFAnalogicoGiacenzaAR.feature | 12 +++--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/test/java/it/pagopa/pn/cucumber/steps/pa/AvanzamentoNotificheB2bSteps.java b/src/test/java/it/pagopa/pn/cucumber/steps/pa/AvanzamentoNotificheB2bSteps.java index 31a179f2a..0294432b6 100644 --- a/src/test/java/it/pagopa/pn/cucumber/steps/pa/AvanzamentoNotificheB2bSteps.java +++ b/src/test/java/it/pagopa/pn/cucumber/steps/pa/AvanzamentoNotificheB2bSteps.java @@ -2620,7 +2620,7 @@ public void vieneVerificatoCheUltimoTentativoEffettuatoAbbiaIndice(Integer index .toList(); assertThat(actualAttemptsMade) - .withFailMessage("Non è stato trovato alcun elemento di timeline corrispondente a un tentativo di indice minore o uguale a '%d'.".formatted(index)) + .as("Non è stato trovato alcun elemento di timeline corrispondente a un tentativo di indice minore o uguale a '%d'.".formatted(index)) .isNotEmpty() .as("I tentativi effettuati non corrispondono a quelli attesi.") .hasSameElementsAs(expectedAttemptsMade); diff --git a/src/test/resources/it/pagopa/pn/cucumber/workflowNotifica/workflowAnalogico/giacenza/giacenzaAR/AvanzamentoNotifichePFAnalogicoGiacenzaAR.feature b/src/test/resources/it/pagopa/pn/cucumber/workflowNotifica/workflowAnalogico/giacenza/giacenzaAR/AvanzamentoNotifichePFAnalogicoGiacenzaAR.feature index 3307df55f..42ef78f72 100644 --- a/src/test/resources/it/pagopa/pn/cucumber/workflowNotifica/workflowAnalogico/giacenza/giacenzaAR/AvanzamentoNotifichePFAnalogicoGiacenzaAR.feature +++ b/src/test/resources/it/pagopa/pn/cucumber/workflowNotifica/workflowAnalogico/giacenza/giacenzaAR/AvanzamentoNotifichePFAnalogicoGiacenzaAR.feature @@ -75,7 +75,7 @@ Feature: avanzamento notifiche b2b con workflow cartaceo giacenza AR | digitalDomicile | NULL | | physicalAddress_address | Via@FAIL-CompiutaGiacenza_AR | When la notifica viene inviata tramite api b2b dal "Comune_Multi" e si attende che lo stato diventi ACCEPTED - And vengono letti gli eventi fino all'elemento di timeline della notifica "REFINEMENT" + And vengono letti gli eventi fino all'elemento di timeline della notifica "ANALOG_SUCCESS_WORKFLOW" And viene verificato che l'elemento di timeline "SEND_ANALOG_PROGRESS" esista | details | NOT_NULL | | details_deliveryDetailCode | CON080 | @@ -107,9 +107,8 @@ Feature: avanzamento notifiche b2b con workflow cartaceo giacenza AR | details_deliveryDetailCode | PNRN012 | | details_recIndex | 0 | | details_sentAttemptMade | 0 | - And viene verificato che l'ultimo tentativo effettuato abbia indice 1 + And viene verificato che l'ultimo tentativo effettuato abbia indice 0 - # FIXME 12/02/2025 attualmente non si ha certezza della sequenza corretta, rivedere il test una volta ottenuta @dev @workflowAnalogico Scenario: [B2B_TIMELINE_ANALOG_GIACENZA_AR_ERR_1] Invio Notifica Mono destinatario workflow cartaceo - Caso FAIL-CompiutaGiacenza_AR_ERR Given viene generata una nuova notifica @@ -119,7 +118,7 @@ Feature: avanzamento notifiche b2b con workflow cartaceo giacenza AR | digitalDomicile | NULL | | physicalAddress_address | Via@FAIL_CompiutaGiacenza_AR_ERR | When la notifica viene inviata tramite api b2b dal "Comune_Multi" e si attende che lo stato diventi ACCEPTED - And vengono letti gli eventi fino all'elemento di timeline della notifica "SEND_ANALOG_PROGRESS" con deliveryDetailCode "RECRN005C" + And vengono letti gli eventi fino all'elemento di timeline della notifica "SEND_ANALOG_PROGRESS" con deliveryDetailCode "RECRN005B" And viene verificato che l'elemento di timeline "SEND_ANALOG_PROGRESS" esista | details | NOT_NULL | | details_deliveryDetailCode | CON080 | @@ -141,11 +140,6 @@ Feature: avanzamento notifiche b2b con workflow cartaceo giacenza AR | details_recIndex | 0 | | details_sentAttemptMade | 0 | | details_attachments | [{"documentType": "Plico"}] | - And viene verificato che l'elemento di timeline "SEND_ANALOG_FEEDBACK" non esista nella timeline caricata - | details | NOT_NULL | - | details_deliveryDetailCode | PNRN012 | - | details_recIndex | 0 | - | details_sentAttemptMade | 0 | And viene verificato che l'ultimo tentativo effettuato abbia indice 0 @dev @workflowAnalogico From c17641c905e744ef69be3c6d021394b9f09c6de0 Mon Sep 17 00:00:00 2001 From: Matteo Mancini Date: Thu, 13 Feb 2025 17:58:12 +0100 Subject: [PATCH 5/9] QA-5872: completed the logic to dynamically generate the tracing and interop tokens for the QA environment. Additionally, a switch was added to execute the tracing tests in the dev environment --- .../config/application-dev.properties | 3 ++ .../config/application-qa.properties | 2 + .../config/application.properties | 4 +- .../service/impl/AgreementClientImpl.java | 2 +- .../service/factory/InteropTokenFactory.java | 39 +++++++++++++++++ .../service/factory/SessionTokenFactory.java | 39 ++++++----------- .../service/factory/TracingTokenFactory.java | 40 +++++++++++++++++ .../service/utils/IdentityService.java | 6 +-- .../JwtTokenServiceConfiguration.java | 41 ++++++++++++++++++ .../ProducerDelegationsApiClientImpl.java | 4 +- ...java => AbstractInteropTracingClient.java} | 40 +++++------------ .../impl/DevAbstractInteropTracingClient.java | 43 +++++++++++++++++++ .../impl/QAAbstractInteropTracingClient.java | 40 +++++++++++++++++ .../InteropCucumberSpringIntegration.java | 13 +++--- .../cucumber/steps/SharedStepsContext.java | 3 +- .../steps/purpose/PurposeCommonStep.java | 3 +- .../cucumber/steps/tracing/TracingSteps.java | 1 + 17 files changed, 253 insertions(+), 70 deletions(-) create mode 100644 interop-qa-tests/config/application-dev.properties create mode 100644 interop-qa-tests/config/application-qa.properties create mode 100644 interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/InteropTokenFactory.java create mode 100644 interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/TracingTokenFactory.java create mode 100644 interop-qa-tests/src/main/java/it/pagopa/interop/config/springconfig/springconfig/JwtTokenServiceConfiguration.java rename interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/{InteropTracingClientImpl.java => AbstractInteropTracingClient.java} (65%) create mode 100644 interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/DevAbstractInteropTracingClient.java create mode 100644 interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/QAAbstractInteropTracingClient.java diff --git a/interop-qa-tests/config/application-dev.properties b/interop-qa-tests/config/application-dev.properties new file mode 100644 index 000000000..e7616d178 --- /dev/null +++ b/interop-qa-tests/config/application-dev.properties @@ -0,0 +1,3 @@ +#TRACING +pn.interop.tracing.base-url=https://api.dev.tracing.interop.pagopa.it + diff --git a/interop-qa-tests/config/application-qa.properties b/interop-qa-tests/config/application-qa.properties new file mode 100644 index 000000000..d67c4b69d --- /dev/null +++ b/interop-qa-tests/config/application-qa.properties @@ -0,0 +1,2 @@ +#TRACING +pn.interop.tracing.base-url=https://api.qa.tracing.interop.pagopa.it diff --git a/interop-qa-tests/config/application.properties b/interop-qa-tests/config/application.properties index 01e12e4da..aabc94487 100644 --- a/interop-qa-tests/config/application.properties +++ b/interop-qa-tests/config/application.properties @@ -1,5 +1,6 @@ +spring.profiles.active=dev #TRACING -pn.interop.tracing.base-url=https://api.dev.tracing.interop.pagopa.it +pn.interop.tracing.base-url=https://api.qa.tracing.interop.pagopa.it pn.interop.tracing.bearerToken-1=${interop.configuration.tracing.bearerToken-1} pn.interop.tracing.bearerToken-2=${interop.configuration.tracing.bearerToken-2} #PURPOSE_ID 28874634-6ea6-4def-b200-7377182c71be @@ -9,7 +10,6 @@ interop.configuration.tracing.bearerToken-2=eyJhbGciOiJSUzI1NiIsInVzZSI6InNpZyIs #INTEROP GLOBAL PROPERTIES bff.base-url=https://selfcare.qa.interop.pagopa.it/1.0/backend-for-frontend -remote-wellknown-url=https://qa.interop.pagopa.it/.well-known/jwks.json session.tokens.duration.seconds=3000 interop-env=qa max-polling-try-ms=50 diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/AgreementClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/AgreementClientImpl.java index 1fa1836f8..325bfcda1 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/AgreementClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/AgreementClientImpl.java @@ -39,7 +39,7 @@ private ApiClient createApiClient(String bearerToken) { @Override public CreatedResource createAgreement(String xCorrelationId, AgreementPayload agreementPayload) { - return agreementsApi.createAgreement(xCorrelationId, agreementPayload); + return agreementsApi.createAgreement(agreementPayload); } @Override diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/InteropTokenFactory.java b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/InteropTokenFactory.java new file mode 100644 index 000000000..b01375164 --- /dev/null +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/InteropTokenFactory.java @@ -0,0 +1,39 @@ +package it.pagopa.interop.authorization.service.factory; + +import it.pagopa.interop.authorization.service.utils.ConfigFileReader; +import it.pagopa.interop.conf.InteropClientConfigs; +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Slf4j +@Getter +@Setter +public class InteropTokenFactory extends SessionTokenFactory { + private static final String WELLKNOWN_URL = "https://qa.interop.pagopa.it/.well-known/jwks.json"; + private Map> cachedTokens = null; + + public InteropTokenFactory(InteropClientConfigs interopClientConfigs, ConfigFileReader configFileReader) { + super(interopClientConfigs, configFileReader); + } + + public Map> loadToken() { + getSessionTokenPayloadTemplate().put("aud", "{{ENVIRONMENT}}.interop.pagopa.it/ui"); + try { + if (cachedTokens == null) cachedTokens = generateSessionToken(); + } catch (Exception ex) { + throw new IllegalArgumentException("There was an error while creating the session token: " + ex.getMessage(), ex); + } + return cachedTokens; + } + + @Override + public String getRemoteWellknownUrl() { + return WELLKNOWN_URL; + } +} diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/SessionTokenFactory.java b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/SessionTokenFactory.java index 5058c9e0e..e08c78973 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/SessionTokenFactory.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/SessionTokenFactory.java @@ -39,9 +39,7 @@ import software.amazon.awssdk.services.kms.model.VerifyResponse; @Slf4j -@Component -@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON) -public class SessionTokenFactory { +public abstract class SessionTokenFactory { private static final Map> CONFIG = new HashMap<>(); private static final Map SESSION_TOKEN_PAYLOAD_TEMPLATE; private static final Map SESSION_TOKEN_HEADER_TEMPLATE = Map.of( @@ -72,7 +70,6 @@ public class SessionTokenFactory { )); SESSION_TOKEN_PAYLOAD_TEMPLATE.put("uid", "VALUES_UID"); SESSION_TOKEN_PAYLOAD_TEMPLATE.put("iss", "{{ENVIRONMENT}}.interop.pagopa.it"); - SESSION_TOKEN_PAYLOAD_TEMPLATE.put("aud", "{{ENVIRONMENT}}.interop.pagopa.it/ui"); SESSION_TOKEN_PAYLOAD_TEMPLATE.put("nbf", 123); SESSION_TOKEN_PAYLOAD_TEMPLATE.put("iat", 123); SESSION_TOKEN_PAYLOAD_TEMPLATE.put("exp", 456); @@ -80,29 +77,18 @@ public class SessionTokenFactory { } private final InteropClientConfigs interopClientConfigs; - @Getter - private Map> cachedTokens = null; private ConfigFileReader configFileReader; - public SessionTokenFactory(InteropClientConfigs interopClientConfigs, ConfigFileReader configFileReader) { this.interopClientConfigs = interopClientConfigs; this.configFileReader = configFileReader; - this.cachedTokens = loadToken(); } - private Map> loadToken() { - try { - if (cachedTokens == null) { - cachedTokens = generateSessionToken(configFileReader.getTenantList()); - } - } catch (Exception ex) { - throw new IllegalArgumentException("There was an error while creating the session token: " + ex.getMessage(), ex); - } - return cachedTokens; - } + public abstract Map> loadToken(); + + public abstract String getRemoteWellknownUrl(); - public Map> generateSessionToken(List configFile) throws Exception { + public Map> generateSessionToken() throws Exception { // Step 1. Read session token payload values file log.info("##Generating session token... ##"); log.debug("##Step 1. Read session token payload values file ##"); @@ -110,7 +96,7 @@ public Map> generateSessionToken(List config // Step 2. Parse well known log.debug("##Step 2. Parse well known ##"); - URL wellKnownUrl = new URL(interopClientConfigs.getRemoteWellknownUrl()); + URL wellKnownUrl = new URL(getRemoteWellknownUrl()); Map wellKnownData = fetchWellKnown(wellKnownUrl.toString()); if (!wellKnownData.containsKey("kid") || !wellKnownData.containsKey("alg")) { throw new IllegalStateException("Kid or alg not found."); @@ -152,7 +138,7 @@ public Map> generateSessionToken(List config log.debug("ST Payload Compiled: {}", stPayloadCompiled); log.debug("## Step 5. Generate unsigned STs ##"); - Map> unsignedSTs = unsignedStsGeneration(stHeaderCompiled, stPayloadCompiled, configFile, environment); + Map> unsignedSTs = unsignedStsGeneration(stHeaderCompiled, stPayloadCompiled, configFileReader.getTenantList(), environment); log.debug("Unsigned STs: {}", unsignedSTs); log.debug("## Step 6. Generate signed STs ##"); @@ -191,9 +177,8 @@ private static Map fetchWellKnown(String wellKnownUrl) throws Ex } - public Map> unsignedStsGeneration( - Map stHeaderCompiled, HashMap stPayloadCompiled, List stPayloadValues, String environment) { - + private Map> unsignedStsGeneration(Map stHeaderCompiled, + HashMap stPayloadCompiled, List stPayloadValues, String environment) { try { log.debug("unsignedStsGeneration::Phase1:START: Build roles dynamic substitutions"); Map stsSubOutput = new HashMap<>(); @@ -290,7 +275,7 @@ private Map> signedStsGeneration(Map getSessionTokenPayloadTemplate() { + return SESSION_TOKEN_PAYLOAD_TEMPLATE; + } + } diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/TracingTokenFactory.java b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/TracingTokenFactory.java new file mode 100644 index 000000000..4249a9d4c --- /dev/null +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/factory/TracingTokenFactory.java @@ -0,0 +1,40 @@ +package it.pagopa.interop.authorization.service.factory; + +import it.pagopa.interop.authorization.service.utils.ConfigFileReader; +import it.pagopa.interop.conf.InteropClientConfigs; +import lombok.Getter; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.util.Map; + +@Slf4j +@Getter +@Setter +public class TracingTokenFactory extends SessionTokenFactory { + private static final String WELLKNOWN_URL = "https://tracing-qa-only-well-known-qa.s3.eu-south-1.amazonaws.com/.well-known/jwks.json"; + private Map> cachedTokens = null; + + public TracingTokenFactory(InteropClientConfigs interopClientConfigs, ConfigFileReader configFileReader) { + super(interopClientConfigs, configFileReader); + } + + @Override + public Map> loadToken() { + getSessionTokenPayloadTemplate().put("aud", "{{ENVIRONMENT}}.interop.pagopa.it/m2m"); + try { + if (cachedTokens == null) cachedTokens = generateSessionToken(); + } catch (Exception ex) { + throw new IllegalArgumentException("There was an error while creating the session token: " + ex.getMessage(), ex); + } + return cachedTokens; + } + + @Override + public String getRemoteWellknownUrl() { + return WELLKNOWN_URL; + } +} diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/IdentityService.java b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/IdentityService.java index b42c034cc..a0c3acabf 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/IdentityService.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/authorization/service/utils/IdentityService.java @@ -1,7 +1,9 @@ package it.pagopa.interop.authorization.service.utils; import it.pagopa.interop.authorization.domain.Tenant; +import it.pagopa.interop.authorization.service.factory.InteropTokenFactory; import it.pagopa.interop.authorization.service.factory.SessionTokenFactory; +import it.pagopa.interop.authorization.service.factory.TracingTokenFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; @@ -13,8 +15,6 @@ import java.util.UUID; @Slf4j -@Component -@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class IdentityService { private final SessionTokenFactory sessionTokenFactory; private final List tenantList; @@ -26,7 +26,7 @@ public IdentityService(SessionTokenFactory sessionTokenFactory, } public String getToken(String tenantType, String role) { - String token = Optional.ofNullable(sessionTokenFactory.getCachedTokens()) + String token = Optional.ofNullable(sessionTokenFactory.loadToken()) .map(m -> m.get(tenantType)) .map(m -> (role == null) ? m.get("admin") : m.get(role)) .filter(Objects::nonNull) diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/config/springconfig/springconfig/JwtTokenServiceConfiguration.java b/interop-qa-tests/src/main/java/it/pagopa/interop/config/springconfig/springconfig/JwtTokenServiceConfiguration.java new file mode 100644 index 000000000..5564bd3ca --- /dev/null +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/config/springconfig/springconfig/JwtTokenServiceConfiguration.java @@ -0,0 +1,41 @@ +package it.pagopa.interop.config.springconfig.springconfig; + +import it.pagopa.interop.authorization.service.factory.InteropTokenFactory; +import it.pagopa.interop.authorization.service.factory.TracingTokenFactory; +import it.pagopa.interop.authorization.service.utils.ConfigFileReader; +import it.pagopa.interop.authorization.service.utils.IdentityService; +import it.pagopa.interop.conf.InteropClientConfigs; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.Scope; + +@Configuration +public class JwtTokenServiceConfiguration { + + @Bean + @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON) + public TracingTokenFactory tracingTokenFactory(InteropClientConfigs interopClientConfigs, ConfigFileReader configFileReader) { + return new TracingTokenFactory(interopClientConfigs, configFileReader); + } + + @Bean + @Primary + @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON) + public InteropTokenFactory interopTokenFactory(InteropClientConfigs interopClientConfigs, ConfigFileReader configFileReader) { + return new InteropTokenFactory(interopClientConfigs, configFileReader); + } + + @Bean(name = "tracingIdentityService") + @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) + public IdentityService tracingIdentityService(TracingTokenFactory tracingTokenFactory, ConfigFileReader configFileReader) { + return new IdentityService(tracingTokenFactory, configFileReader); + } + + @Bean(name = "interopIdentityService") + @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) + public IdentityService interopIdentityService(InteropTokenFactory interopTokenFactory, ConfigFileReader configFileReader) { + return new IdentityService(interopTokenFactory, configFileReader); + } +} diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/ProducerDelegationsApiClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/ProducerDelegationsApiClientImpl.java index d5c958fa6..afb231ea6 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/ProducerDelegationsApiClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/ProducerDelegationsApiClientImpl.java @@ -41,12 +41,12 @@ public CreatedResource createProducerDelegation(String xCorrelationId, Delegatio @Override public void approveDelegation(String xCorrelationId, UUID delegationId) { - producerDelegationsApi.approveDelegation(xCorrelationId, delegationId); + producerDelegationsApi.approveProducerDelegation(xCorrelationId, delegationId); } @Override public void rejectDelegation(String xCorrelationId, UUID delegationId, RejectDelegationPayload rejectDelegationPayload) { - producerDelegationsApi.rejectDelegation(xCorrelationId, delegationId, rejectDelegationPayload); + producerDelegationsApi.rejectProducerDelegation(xCorrelationId, delegationId, rejectDelegationPayload); } @Override diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/InteropTracingClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/AbstractInteropTracingClient.java similarity index 65% rename from interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/InteropTracingClientImpl.java rename to interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/AbstractInteropTracingClient.java index fe5f840e1..06387c6a6 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/InteropTracingClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/AbstractInteropTracingClient.java @@ -11,34 +11,28 @@ import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.TracingState; import it.pagopa.interop.tracing.config.TracingClientConfigs; import it.pagopa.interop.tracing.service.IInteropTracingClient; -import org.springframework.beans.factory.config.ConfigurableBeanFactory; -import org.springframework.context.annotation.Scope; import org.springframework.core.io.Resource; -import org.springframework.stereotype.Component; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import java.util.List; import java.util.UUID; -@Component -@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) -public class InteropTracingClientImpl implements IInteropTracingClient { +public abstract class AbstractInteropTracingClient implements IInteropTracingClient { private final RestTemplate restTemplate; - private final TracingsApi tracingsApi; - private final HealthApi healthApi; + protected final TracingsApi tracingsApi; + protected final HealthApi healthApi; private final TracingClientConfigs tracingClientConfigs; - private BearerTokenType bearerTokenSetted; + protected BearerTokenType bearerTokenSetted; - public InteropTracingClientImpl(RestTemplate restTemplate, TracingClientConfigs tracingClientConfigs) { + public AbstractInteropTracingClient(RestTemplate restTemplate, TracingClientConfigs tracingClientConfigs, String bearerToken) { this.restTemplate = restTemplate; this.tracingClientConfigs = tracingClientConfigs; - this.tracingsApi = new TracingsApi(createApiClient(tracingClientConfigs.getBaseUrl(), tracingClientConfigs.getBearerToken1())); - this.healthApi = new HealthApi(createApiClient(tracingClientConfigs.getBaseUrl(), tracingClientConfigs.getBearerToken1())); - this.bearerTokenSetted = BearerTokenType.TENANT_1; + this.tracingsApi = new TracingsApi(createApiClient(tracingClientConfigs.getBaseUrl(), bearerToken)); + this.healthApi = new HealthApi(createApiClient(tracingClientConfigs.getBaseUrl(), bearerToken)); } - private ApiClient createApiClient(String basePath, String bearerToken) { + protected ApiClient createApiClient(String basePath, String bearerToken) { ApiClient apiClient = new ApiClient(restTemplate); apiClient.setBasePath(basePath); apiClient.setBearerToken(bearerToken); @@ -75,23 +69,11 @@ public void getHealthStatus() { healthApi.getStatus(); } - @Override - public void setBearerToken(String bearerToken) { - switch (bearerToken) { - case "TENANT_1" -> { - this.tracingsApi.setApiClient(createApiClient(tracingClientConfigs.getBaseUrl(), tracingClientConfigs.getBearerToken1())); - this.bearerTokenSetted = BearerTokenType.TENANT_1; - } - case "TENANT_2" -> { - this.tracingsApi.setApiClient(createApiClient(tracingClientConfigs.getBaseUrl(), tracingClientConfigs.getBearerToken2())); - this.bearerTokenSetted = BearerTokenType.TENANT_2; - } - default -> throw new IllegalStateException("Unexpected value: " + bearerToken); - } - } - public BearerTokenType getBearerTokenSetted() { return this.bearerTokenSetted; } + public TracingClientConfigs getTracingClientConfigs() { + return tracingClientConfigs; + } } diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/DevAbstractInteropTracingClient.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/DevAbstractInteropTracingClient.java new file mode 100644 index 000000000..0b6f8392c --- /dev/null +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/DevAbstractInteropTracingClient.java @@ -0,0 +1,43 @@ +package it.pagopa.interop.tracing.service.impl; + +import it.pagopa.interop.authorization.service.utils.IdentityService; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api.HealthApi; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api.TracingsApi; +import it.pagopa.interop.tracing.config.TracingClientConfigs; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Profile; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +@Profile("dev") +@Component +@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) +public class DevAbstractInteropTracingClient extends AbstractInteropTracingClient { + private BearerTokenType bearerTokenSetted; + + public DevAbstractInteropTracingClient(RestTemplate restTemplate, TracingClientConfigs tracingClientConfigs) { + super(restTemplate, tracingClientConfigs, tracingClientConfigs.getBearerToken1()); + this.bearerTokenSetted = BearerTokenType.TENANT_1; + } + + @Override + public void setBearerToken(String bearerToken) { + switch (bearerToken) { + case "TENANT_1" -> { + this.tracingsApi.setApiClient(createApiClient(getTracingClientConfigs().getBaseUrl(), getTracingClientConfigs().getBearerToken1())); + this.bearerTokenSetted = BearerTokenType.TENANT_1; + } + case "TENANT_2" -> { + this.tracingsApi.setApiClient(createApiClient(getTracingClientConfigs().getBaseUrl(), getTracingClientConfigs().getBearerToken2())); + this.bearerTokenSetted = BearerTokenType.TENANT_2; + } + default -> throw new IllegalStateException("Unexpected value: " + bearerToken); + } + } + + public BearerTokenType getBearerTokenSetted() { + return this.bearerTokenSetted; + } +} diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/QAAbstractInteropTracingClient.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/QAAbstractInteropTracingClient.java new file mode 100644 index 000000000..df48a687b --- /dev/null +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/QAAbstractInteropTracingClient.java @@ -0,0 +1,40 @@ +package it.pagopa.interop.tracing.service.impl; + +import it.pagopa.interop.authorization.service.utils.IdentityService; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api.HealthApi; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api.TracingsApi; +import it.pagopa.interop.tracing.config.TracingClientConfigs; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Profile; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +@Profile("qa") +@Component +@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE) +public class QAAbstractInteropTracingClient extends AbstractInteropTracingClient { + private IdentityService identityService; + + public QAAbstractInteropTracingClient(RestTemplate restTemplate, TracingClientConfigs tracingClientConfigs, @Qualifier("tracingIdentityService") IdentityService identityService) { + super(restTemplate, tracingClientConfigs, identityService.getToken("PA1", null)); + this.bearerTokenSetted = BearerTokenType.TENANT_1; + } + + @Override + public void setBearerToken(String bearerToken) { + switch (bearerToken) { + case "TENANT_1" -> { + this.tracingsApi.setApiClient(createApiClient(getTracingClientConfigs().getBaseUrl(), identityService.getToken("PA1", null))); + this.bearerTokenSetted = BearerTokenType.TENANT_1; + } + case "TENANT_2" -> { + this.tracingsApi.setApiClient(createApiClient(getTracingClientConfigs().getBaseUrl(), identityService.getToken("PA2", null))); + this.bearerTokenSetted = BearerTokenType.TENANT_2; + } + default -> throw new IllegalStateException("Unexpected value: " + bearerToken); + } + } + +} diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/InteropCucumberSpringIntegration.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/InteropCucumberSpringIntegration.java index f07f19515..9f55e2dca 100644 --- a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/InteropCucumberSpringIntegration.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/InteropCucumberSpringIntegration.java @@ -8,7 +8,6 @@ import it.pagopa.interop.attribute.service.IAttributeApiClient; import it.pagopa.interop.attribute.service.impl.AttributeApiClientImpl; import it.pagopa.interop.authorization.service.IAuthorizationClient; -import it.pagopa.interop.authorization.service.factory.SessionTokenFactory; import it.pagopa.interop.authorization.service.impl.AuthorizationClientImpl; import it.pagopa.interop.authorization.service.impl.ProducerClientImpl; import it.pagopa.interop.authorization.service.utils.ConfigFileReader; @@ -16,6 +15,7 @@ import it.pagopa.interop.authorization.service.utils.PollingService; import it.pagopa.interop.conf.InteropClientConfigs; import it.pagopa.interop.config.springconfig.springconfig.InteropRestTemplateConfiguration; +import it.pagopa.interop.config.springconfig.springconfig.JwtTokenServiceConfiguration; import it.pagopa.interop.delegate.service.impl.DelegationApiClientImpl; import it.pagopa.interop.delegate.service.impl.ProducerDelegationsApiClientImpl; import it.pagopa.interop.purpose.RiskAnalysisDataInitializer; @@ -24,22 +24,22 @@ import it.pagopa.interop.tenant.service.impl.TenantsApiClientImpl; import it.pagopa.interop.tracing.config.TracingClientConfigs; import it.pagopa.interop.tracing.service.TracingRetriever; -import it.pagopa.interop.tracing.service.impl.InteropTracingClientImpl; +import it.pagopa.interop.tracing.service.impl.DevAbstractInteropTracingClient; +import it.pagopa.interop.tracing.service.impl.QAAbstractInteropTracingClient; import it.pagopa.interop.utils.HttpCallExecutor; import it.pagopa.pn.interop.cucumber.utility.TracingFileUtils; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.scheduling.annotation.EnableScheduling; -//@ComponentScan(basePackages = {"it.pagopa.pn.interop.cucumber"}) @CucumberContextConfiguration @SpringBootTest(classes = { IAuthorizationClient.class, AuthorizationClientImpl.class, InteropRestTemplateConfiguration.class, + JwtTokenServiceConfiguration.class, IdentityService.class, PollingService.class, - SessionTokenFactory.class, ProducerClientImpl.class, DataPreparationService.class, HttpCallExecutor.class, @@ -58,10 +58,11 @@ DelegationApiClientImpl.class, ConfigFileReader.class, InteropClientConfigs.class, - InteropTracingClientImpl.class, TracingFileUtils.class, TracingClientConfigs.class, - TracingRetriever.class + TracingRetriever.class, + DevAbstractInteropTracingClient.class, + QAAbstractInteropTracingClient.class }) @EnableScheduling @EnableConfigurationProperties diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/SharedStepsContext.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/SharedStepsContext.java index 43b35a2d1..3c0d0e019 100644 --- a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/SharedStepsContext.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/SharedStepsContext.java @@ -11,6 +11,7 @@ import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; @@ -37,7 +38,7 @@ public class SharedStepsContext { public SharedStepsContext( HttpCallExecutor httpCallExecutor, - IdentityService identityService, + @Qualifier("interopIdentityService") IdentityService identityService, PollingService pollingService) { this.httpCallExecutor = httpCallExecutor; this.identityService = identityService; diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/purpose/PurposeCommonStep.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/purpose/PurposeCommonStep.java index 3394704b0..023e824aa 100644 --- a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/purpose/PurposeCommonStep.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/purpose/PurposeCommonStep.java @@ -10,6 +10,7 @@ import it.pagopa.pn.interop.cucumber.steps.common.PurposeCommonContext; import it.pagopa.pn.interop.cucumber.steps.DataPreparationService; import it.pagopa.pn.interop.cucumber.steps.SharedStepsContext; +import org.springframework.beans.factory.annotation.Qualifier; import java.util.List; import java.util.UUID; @@ -22,7 +23,7 @@ public class PurposeCommonStep { private final SharedStepsContext sharedStepsContext; public PurposeCommonStep(ClientTokenConfigurator clientTokenConfigurator, - IdentityService identityService, + @Qualifier("interopIdentityService") IdentityService identityService, DataPreparationService dataPreparationService, SharedStepsContext sharedStepsContext) { this.clientTokenConfigurator = clientTokenConfigurator; diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java index 43025f8f2..6b18b6bf5 100644 --- a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java @@ -4,6 +4,7 @@ import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; +import it.pagopa.interop.authorization.service.utils.IdentityService; import it.pagopa.interop.authorization.service.utils.PollingService; import it.pagopa.interop.authorization.service.utils.SettableBearerToken; import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingErrorsResponse; From 94a0cc4adf075a526db1d104872bf86323eb09c4 Mon Sep 17 00:00:00 2001 From: Matteo Mancini Date: Fri, 14 Feb 2025 11:58:15 +0100 Subject: [PATCH 6/9] QA-5872: enhanced the logic to separate the CSV reading process for the QA and DEV environments --- .../config/application-dev.properties | 2 + .../config/application-qa.properties | 2 + .../config/application.properties | 4 +- .../impl/QAAbstractInteropTracingClient.java | 1 + .../resources/tracing/dev/tracing-error.csv | 3 ++ .../tracing/{ => dev}/tracing-ok.csv | 2 +- .../resources/tracing/qa/tracing-error.csv | 3 ++ .../main/resources/tracing/qa/tracing-ok.csv | 3 ++ .../cucumber/steps/tracing/TracingSteps.java | 13 +++-- .../cucumber/utility/TracingFileUtils.java | 47 ++++++++++++++----- 10 files changed, 58 insertions(+), 22 deletions(-) create mode 100644 interop-qa-tests/src/main/resources/tracing/dev/tracing-error.csv rename interop-qa-tests/src/main/resources/tracing/{ => dev}/tracing-ok.csv (59%) create mode 100644 interop-qa-tests/src/main/resources/tracing/qa/tracing-error.csv create mode 100644 interop-qa-tests/src/main/resources/tracing/qa/tracing-ok.csv diff --git a/interop-qa-tests/config/application-dev.properties b/interop-qa-tests/config/application-dev.properties index e7616d178..b0f297bbc 100644 --- a/interop-qa-tests/config/application-dev.properties +++ b/interop-qa-tests/config/application-dev.properties @@ -1,3 +1,5 @@ #TRACING pn.interop.tracing.base-url=https://api.dev.tracing.interop.pagopa.it +tracing.success.csv.filepath=src/main/resources/tracing/dev/tracing-ok.csv +tracing.error.csv.filepath=src/main/resources/tracing/dev/tracing-error.csv diff --git a/interop-qa-tests/config/application-qa.properties b/interop-qa-tests/config/application-qa.properties index d67c4b69d..0fa529f5c 100644 --- a/interop-qa-tests/config/application-qa.properties +++ b/interop-qa-tests/config/application-qa.properties @@ -1,2 +1,4 @@ #TRACING pn.interop.tracing.base-url=https://api.qa.tracing.interop.pagopa.it +tracing.success.csv.filepath=src/main/resources/tracing/qa/tracing-ok.csv +tracing.error.csv.filepath=src/main/resources/tracing/qa/tracing-error.csv diff --git a/interop-qa-tests/config/application.properties b/interop-qa-tests/config/application.properties index aabc94487..f8c516314 100644 --- a/interop-qa-tests/config/application.properties +++ b/interop-qa-tests/config/application.properties @@ -1,4 +1,4 @@ -spring.profiles.active=dev +spring.profiles.active=qa #TRACING pn.interop.tracing.base-url=https://api.qa.tracing.interop.pagopa.it pn.interop.tracing.bearerToken-1=${interop.configuration.tracing.bearerToken-1} @@ -7,6 +7,8 @@ pn.interop.tracing.bearerToken-2=${interop.configuration.tracing.bearerToken-2} interop.configuration.tracing.bearerToken-1=eyJhbGciOiJSUzI1NiIsInVzZSI6InNpZyIsInR5cCI6ImF0K2p3dCIsImtpZCI6IjBiOTEwNmExLWRiMGMtNDg4Zi05MDg0LWNlOGM2MzIxNDJiYyJ9.eyJqdGkiOiJhMGQzN2QxYy1iMzU3LTRlN2EtYjIzYy05MDViNTU3NzA2NjciLCJpc3MiOiJ0cmFjaW5nLWlzc3VlciIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6NDAwMSIsInN1YiI6InRyYWNpbmctc3ViamVjdCIsImlhdCI6MTcyOTYwNzUwMCwibmJmIjoxNzI5NjA3NTAwLCJleHAiOjE4Mjk2MDc0OTksIm9yZ2FuaXphdGlvbklkIjoiMGU5ZTJkYWItMmU5My00ZjI0LWJhNTktMzhkOWYxMTE5OGNhIiwicm9sZSI6ImludGVybmFsIn0.AEhPS-dnJWwTOY1gN5gqKtfAswKxZtRTPozHVM2xbG4TD3oSoo5TCyLyvPWYezFMEIIueMZykeiBnUvT_EEePl018cpio_lrlmKqHpGiYe-9u_6EU-cmPTAU9Cnpu6yESS7KyaGziFHm-Rp7qxmjnMsMgKG6IpxgmnbEwxnu4pBiFwHx_sJyUtVks7xZr50UVRzpNQNYRv9ypko140fx85bDQHyNzFqLa75wFX3hiF2yi7A-vmEuwqVwCRrpwuphMksNaSEs-E8bbxnXeq1zeiav7oc9wZHtnPruhth9fr6PoTcPwtftLEEh_QH_IssciqpTY8stA0S4AMwvFYyP_w #PURPOSE_ID 5602d95a-9297-4221-86d0-f142b8690d5c interop.configuration.tracing.bearerToken-2=eyJhbGciOiJSUzI1NiIsInVzZSI6InNpZyIsInR5cCI6ImF0K2p3dCIsImtpZCI6IjBiOTEwNmExLWRiMGMtNDg4Zi05MDg0LWNlOGM2MzIxNDJiYyJ9.eyJqdGkiOiI0MDNlYzc3ZC01OGM3LTQwMmYtYTg4Zi1iYzNmODFjMTBiNGIiLCJpc3MiOiJ0cmFjaW5nLWlzc3VlciIsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3Q6NDAwMSIsInN1YiI6InRyYWNpbmctc3ViamVjdCIsImlhdCI6MTczMDI3NzkwOCwibmJmIjoxNzMwMjc3OTA4LCJleHAiOjE4MzAyNzc5MDcsIm9yZ2FuaXphdGlvbklkIjoiNjllMjg2NWUtNjVhYi00ZTQ4LWE2MzgtMjAzN2E5ZWUyZWU3Iiwicm9sZSI6ImludGVybmFsIn0.JH2Rs9pDCHlMCBmrIvMOiCKd6eb_Xs1OdIDG47ET5gTpd1uPFio0wwHpKBnhzVZpjuFzi14EaMVHRuZqLq7NBkP4-xRAP5_muOdCKjRu6gcJVagXVTwtFXw-3WnP7jFX8FEOqjqmRoA83hX4s_dPewKZbqtC8VkKDPAHOaN9I0ZEUWwzwn9X07gCJPi3jimfhdsk4YgjcR4qlTUif73hxcHwNvfpiCqYCAXZDa_KWcz7D_QQsOLxRWFHKgfGNRr5gbuYDBSykb-ZLqsxecnXyhc3Fpwe5rTnIHWKcITfRNQjej5YnJ88HUyPrTqLqOfGvWIM3kY4n82Vt1oJYSmQNA +tracing.success.csv.filepath=src/main/resources/tracing/dev/tracing-ok.csv +tracing.error.csv.filepath=src/main/resources/tracing/dev/tracing-error.csv #INTEROP GLOBAL PROPERTIES bff.base-url=https://selfcare.qa.interop.pagopa.it/1.0/backend-for-frontend diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/QAAbstractInteropTracingClient.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/QAAbstractInteropTracingClient.java index df48a687b..f304eb85e 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/QAAbstractInteropTracingClient.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/QAAbstractInteropTracingClient.java @@ -20,6 +20,7 @@ public class QAAbstractInteropTracingClient extends AbstractInteropTracingClient public QAAbstractInteropTracingClient(RestTemplate restTemplate, TracingClientConfigs tracingClientConfigs, @Qualifier("tracingIdentityService") IdentityService identityService) { super(restTemplate, tracingClientConfigs, identityService.getToken("PA1", null)); this.bearerTokenSetted = BearerTokenType.TENANT_1; + this.identityService = identityService; } @Override diff --git a/interop-qa-tests/src/main/resources/tracing/dev/tracing-error.csv b/interop-qa-tests/src/main/resources/tracing/dev/tracing-error.csv new file mode 100644 index 000000000..8aef59001 --- /dev/null +++ b/interop-qa-tests/src/main/resources/tracing/dev/tracing-error.csv @@ -0,0 +1,3 @@ +"date","purpose_id","status","requests_count" +"2024-08-25","0e1e4c98-6f2e-4f55-90e3-45f7d3f1dbf8","999","48" +"2024-08-25","","200","47" diff --git a/interop-qa-tests/src/main/resources/tracing/tracing-ok.csv b/interop-qa-tests/src/main/resources/tracing/dev/tracing-ok.csv similarity index 59% rename from interop-qa-tests/src/main/resources/tracing/tracing-ok.csv rename to interop-qa-tests/src/main/resources/tracing/dev/tracing-ok.csv index ed7aa36b9..207e0bee0 100644 --- a/interop-qa-tests/src/main/resources/tracing/tracing-ok.csv +++ b/interop-qa-tests/src/main/resources/tracing/dev/tracing-ok.csv @@ -1,2 +1,2 @@ "date","purpose_id","token_id","status","requests_count" -"1917-12-29","28874634-6ea6-4def-b200-7377182c71be","99382e29-b0cf-412b-a060-72e421b6d167","200","48" +"1917-11-30","28874634-6ea6-4def-b200-7377182c71be","99382e29-b0cf-412b-a060-72e421b6d167","200","48" diff --git a/interop-qa-tests/src/main/resources/tracing/qa/tracing-error.csv b/interop-qa-tests/src/main/resources/tracing/qa/tracing-error.csv new file mode 100644 index 000000000..8aef59001 --- /dev/null +++ b/interop-qa-tests/src/main/resources/tracing/qa/tracing-error.csv @@ -0,0 +1,3 @@ +"date","purpose_id","status","requests_count" +"2024-08-25","0e1e4c98-6f2e-4f55-90e3-45f7d3f1dbf8","999","48" +"2024-08-25","","200","47" diff --git a/interop-qa-tests/src/main/resources/tracing/qa/tracing-ok.csv b/interop-qa-tests/src/main/resources/tracing/qa/tracing-ok.csv new file mode 100644 index 000000000..3c1861393 --- /dev/null +++ b/interop-qa-tests/src/main/resources/tracing/qa/tracing-ok.csv @@ -0,0 +1,3 @@ +"date","purpose_id","status","token_id","requests_count" +"2025-02-13","59b568cc-a097-4217-9c58-66fa76389fe0","200","c7ebf39e-e323-46f1-92d8-0482bcc3bfe3","555" +"2025-02-13","59b568cc-a097-4217-9c58-66fa76389fe0","404","c7ebf39e-e323-46f1-92d8-0482bcc3bfe3","0" diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java index 6b18b6bf5..986cefd5d 100644 --- a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java @@ -4,7 +4,6 @@ import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; -import it.pagopa.interop.authorization.service.utils.IdentityService; import it.pagopa.interop.authorization.service.utils.PollingService; import it.pagopa.interop.authorization.service.utils.SettableBearerToken; import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingErrorsResponse; @@ -27,8 +26,6 @@ import java.util.Objects; import java.util.UUID; -import static org.assertj.core.api.Assertions.assertThat; - public class TracingSteps { private static final int OFFSET_VALUE = 0; private static final int LIMIT_VALUE = 50; @@ -69,11 +66,13 @@ public void selectOperator(String operator) { @Given("viene aggiornato il file CSV con la prima data disponibile") public void updateCsv() { - submissionDate = interopTracingClient.getTracings(OFFSET_VALUE, LIMIT_VALUE, null).getResults().stream() + GetTracingsResponse tracingsResponse = interopTracingClient.getTracings(OFFSET_VALUE, LIMIT_VALUE, null); + submissionDate = tracingsResponse.getResults().stream() .map(GetTracingsResponseResults::getDate) .min(LocalDate::compareTo) - .get().minusDays(1); - tracingFileUtils.updateCsv(submissionDate.toString()); + .map(date -> date.minusDays(1)) + .orElseGet(() -> LocalDate.now().minusDays(1)); + tracingFileUtils.updateCsv(submissionDate); } @When("viene sottomesso il file CSV {string}") @@ -219,7 +218,7 @@ public void recoverMissingCsvForDate(String fileType) { Assertions.assertNotNull(getTracingsResponse, "There was an error while retrieving the tracing with MISSING status!"); Assertions.assertFalse(getTracingsResponse.getResults().isEmpty(), "No tracing with MISSING status found!"); GetTracingsResponseResults tracingsResponseResults = getTracingsResponse.getResults().get(0); - tracingFileUtils.updateCsv(tracingsResponseResults.getDate().toString()); + tracingFileUtils.updateCsv(tracingsResponseResults.getDate()); submissionDate = tracingsResponseResults.getDate(); uploadCsv(fileType); } diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/utility/TracingFileUtils.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/utility/TracingFileUtils.java index 463c946b3..fa81437a0 100644 --- a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/utility/TracingFileUtils.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/utility/TracingFileUtils.java @@ -1,41 +1,62 @@ package it.pagopa.pn.interop.cucumber.utility; +import com.opencsv.CSVReader; import com.opencsv.CSVWriter; -import org.opentest4j.AssertionFailedError; +import com.opencsv.exceptions.CsvException; +import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Component; -import java.io.File; +import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.time.LocalDate; +import java.util.List; @Component public class TracingFileUtils { - private static final String CSV_OK_FILEPATH = "src/main/resources/tracing/tracing-ok.csv"; - private static final String CSV_ERROR_FILEPATH = "src/main/resources/tracing/tracing-error.csv"; + @Value("${tracing.success.csv.filepath}") + private String tracingOkCsvPath; + @Value("${tracing.error.csv.filepath}") + private String tracingErrorCsvPath; private final ResourceLoader resourceLoader; public TracingFileUtils(ResourceLoader resourceLoader) { this.resourceLoader = resourceLoader; } - public void updateCsv(String date) { - File file = new File(CSV_OK_FILEPATH); + public void updateCsv(LocalDate date) { try { - CSVWriter csvWriter = new CSVWriter(new FileWriter(file)); - csvWriter.writeNext(new String[] {"date", "purpose_id", "token_id", "status", "requests_count"}); - csvWriter.writeNext(new String[] {date, "28874634-6ea6-4def-b200-7377182c71be", "99382e29-b0cf-412b-a060-72e421b6d167", "200", "48"}); + // Read the csv file before overriding it with the correct date. + FileReader fileReader = new FileReader(tracingOkCsvPath); + CSVReader csvReader = new CSVReader(fileReader); + // Read the header (first row) of the CSV file + String[] header = csvReader.readNext(); + // Read all the rows (excluding the header) + List allRows = csvReader.readAll(); + csvReader.close(); + + FileWriter fileWriter = new FileWriter(tracingOkCsvPath); + CSVWriter csvWriter = new CSVWriter(fileWriter); + // Write the header back to the CSV file + csvWriter.writeNext(header); + // Write all the rows back and update the first column with the provided date + for (String[] nextLine : allRows) { + nextLine[0] = date.toString(); + csvWriter.writeNext(nextLine); + } csvWriter.close(); - } catch (IOException ex) { - throw new AssertionFailedError("There was an error while generating the csv file: " + ex); + + } catch (CsvException | IOException ex) { + throw new RuntimeException("There was an error while generating the csv file: " + ex); } } public Resource getCsvFile(String file) { return switch (file.trim().toLowerCase()) { - case "corretto" -> resourceLoader.getResource("file:" + CSV_OK_FILEPATH); - case "errato" -> resourceLoader.getResource("file:" + CSV_ERROR_FILEPATH); + case "corretto" -> resourceLoader.getResource("file:" + tracingOkCsvPath); + case "errato" -> resourceLoader.getResource("file:" + tracingErrorCsvPath); default -> throw new IllegalStateException("Unexpected value: " + file.trim().toLowerCase()); }; } From 4af10e5eb884794f12fd293b8be01d14ee65c684 Mon Sep 17 00:00:00 2001 From: Matteo Mancini Date: Fri, 14 Feb 2025 12:21:12 +0100 Subject: [PATCH 7/9] QA-5723: removed tracing execution in the parent pom and added in the specific interop module --- interop-qa-tests/pom.xml | 12 +++---- .../agreement/service/IAgreementClient.java | 8 +++-- .../service/impl/AgreementClientImpl.java | 4 +-- .../ProducerDelegationsApiClientImpl.java | 4 +-- .../interop/tenant/service/ITenantsApi.java | 6 +++- .../service/IInteropTracingClient.java | 12 +++---- .../tracing/service/TracingRetriever.java | 4 +-- .../impl/InteropTracingClientImpl.java | 18 +++++----- .../steps/DataPreparationService.java | 2 +- .../cucumber/steps/tracing/TracingSteps.java | 12 +++---- pom.xml | 34 ------------------- 11 files changed, 45 insertions(+), 71 deletions(-) diff --git a/interop-qa-tests/pom.xml b/interop-qa-tests/pom.xml index eb8bb2aee..8b7dd5180 100644 --- a/interop-qa-tests/pom.xml +++ b/interop-qa-tests/pom.xml @@ -161,7 +161,7 @@ OffsetDateTime=java.lang.String - https://raw.githubusercontent.com/pagopa/interop-be-monorepo/refs/heads/develop/packages/api-clients/open-api/bffApi.yml + https://raw.githubusercontent.com/pagopa/interop-be-monorepo/bae46fcee339b15245ac748a6583e6dd829a6be5/packages/api-clients/open-api/bffApi.yml java resttemplate false @@ -185,7 +185,7 @@ - generate-external-interop-client + generate-external-interop-tracing-client generate @@ -201,8 +201,8 @@ false true - it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api - it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model + it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.api + it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model java8 none source @@ -213,8 +213,8 @@ @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL) - it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api - it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model + it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.api + it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/IAgreementClient.java b/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/IAgreementClient.java index 05d747d0c..7bf35a353 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/IAgreementClient.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/IAgreementClient.java @@ -1,13 +1,17 @@ package it.pagopa.interop.agreement.service; import it.pagopa.interop.authorization.service.utils.SettableBearerToken; -import it.pagopa.interop.generated.openapi.clients.bff.model.*; +import it.pagopa.interop.generated.openapi.clients.bff.model.Agreement; +import it.pagopa.interop.generated.openapi.clients.bff.model.AgreementPayload; +import it.pagopa.interop.generated.openapi.clients.bff.model.AgreementRejectionPayload; +import it.pagopa.interop.generated.openapi.clients.bff.model.AgreementSubmissionPayload; +import it.pagopa.interop.generated.openapi.clients.bff.model.CreatedResource; import java.io.File; import java.util.UUID; public interface IAgreementClient extends SettableBearerToken { - CreatedResource createAgreement(String xCorrelationId, AgreementPayload agreementPayload); + CreatedResource createAgreement(AgreementPayload agreementPayload); Agreement getAgreementById(String xCorrelationId, UUID agreementId); Agreement activateAgreement(String xCorrelationId, UUID agreementId); Agreement submitAgreement(String xCorrelationId, UUID agreementId, AgreementSubmissionPayload agreementSubmissionPayload); diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/AgreementClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/AgreementClientImpl.java index 1fa1836f8..43841a6d8 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/AgreementClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/agreement/service/impl/AgreementClientImpl.java @@ -38,8 +38,8 @@ private ApiClient createApiClient(String bearerToken) { } @Override - public CreatedResource createAgreement(String xCorrelationId, AgreementPayload agreementPayload) { - return agreementsApi.createAgreement(xCorrelationId, agreementPayload); + public CreatedResource createAgreement(AgreementPayload agreementPayload) { + return agreementsApi.createAgreement(agreementPayload); } @Override diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/ProducerDelegationsApiClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/ProducerDelegationsApiClientImpl.java index d5c958fa6..afb231ea6 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/ProducerDelegationsApiClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/delegate/service/impl/ProducerDelegationsApiClientImpl.java @@ -41,12 +41,12 @@ public CreatedResource createProducerDelegation(String xCorrelationId, Delegatio @Override public void approveDelegation(String xCorrelationId, UUID delegationId) { - producerDelegationsApi.approveDelegation(xCorrelationId, delegationId); + producerDelegationsApi.approveProducerDelegation(xCorrelationId, delegationId); } @Override public void rejectDelegation(String xCorrelationId, UUID delegationId, RejectDelegationPayload rejectDelegationPayload) { - producerDelegationsApi.rejectDelegation(xCorrelationId, delegationId, rejectDelegationPayload); + producerDelegationsApi.rejectProducerDelegation(xCorrelationId, delegationId, rejectDelegationPayload); } @Override diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/tenant/service/ITenantsApi.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tenant/service/ITenantsApi.java index 481318b06..918c10437 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/tenant/service/ITenantsApi.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tenant/service/ITenantsApi.java @@ -1,7 +1,11 @@ package it.pagopa.interop.tenant.service; import it.pagopa.interop.authorization.service.utils.SettableBearerToken; -import it.pagopa.interop.generated.openapi.clients.bff.model.*; +import it.pagopa.interop.generated.openapi.clients.bff.model.CertifiedAttributesResponse; +import it.pagopa.interop.generated.openapi.clients.bff.model.CertifiedTenantAttributeSeed; +import it.pagopa.interop.generated.openapi.clients.bff.model.DeclaredAttributesResponse; +import it.pagopa.interop.generated.openapi.clients.bff.model.DeclaredTenantAttributeSeed; +import it.pagopa.interop.generated.openapi.clients.bff.model.Tenant; import java.util.UUID; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/IInteropTracingClient.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/IInteropTracingClient.java index 13d621380..2e0f0a4da 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/IInteropTracingClient.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/IInteropTracingClient.java @@ -1,12 +1,12 @@ package it.pagopa.interop.tracing.service; import it.pagopa.interop.authorization.service.utils.SettableBearerToken; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingErrorsResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.RecoverTracingResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.ReplaceTracingResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.SubmitTracingResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.TracingState; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.GetTracingErrorsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.GetTracingsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.RecoverTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.ReplaceTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.SubmitTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.TracingState; import org.springframework.web.client.RestClientException; import java.util.List; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/TracingRetriever.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/TracingRetriever.java index 71f148c8a..7c4fcd084 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/TracingRetriever.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/TracingRetriever.java @@ -1,7 +1,7 @@ package it.pagopa.interop.tracing.service; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.TracingState; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.GetTracingsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.TracingState; import java.util.List; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/InteropTracingClientImpl.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/InteropTracingClientImpl.java index fe5f840e1..77dccad54 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/InteropTracingClientImpl.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/InteropTracingClientImpl.java @@ -1,14 +1,14 @@ package it.pagopa.interop.tracing.service.impl; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.ApiClient; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api.HealthApi; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api.TracingsApi; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingErrorsResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.RecoverTracingResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.ReplaceTracingResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.SubmitTracingResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.TracingState; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.ApiClient; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.api.HealthApi; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.api.TracingsApi; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.GetTracingErrorsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.GetTracingsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.RecoverTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.ReplaceTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.SubmitTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.TracingState; import it.pagopa.interop.tracing.config.TracingClientConfigs; import it.pagopa.interop.tracing.service.IInteropTracingClient; import org.springframework.beans.factory.config.ConfigurableBeanFactory; diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/DataPreparationService.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/DataPreparationService.java index 78b54f6c7..fe199a275 100644 --- a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/DataPreparationService.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/DataPreparationService.java @@ -227,7 +227,7 @@ public UUID createAgreementWithGivenState(AgreementState agreementState, UUID eS } public UUID createAgreement(UUID eServiceID, UUID descriptorId) { - httpCallExecutor.performCall(() -> agreementClient.createAgreement(sharedStepsContext.getXCorrelationId(), new AgreementPayload().eserviceId(eServiceID).descriptorId(descriptorId))); + httpCallExecutor.performCall(() -> agreementClient.createAgreement(new AgreementPayload().eserviceId(eServiceID).descriptorId(descriptorId))); assertValidResponse(); UUID agreementId = ((CreatedResource) httpCallExecutor.getResponse()).getId(); pollingService.makePolling( diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java index 43025f8f2..de3b70487 100644 --- a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java @@ -6,12 +6,12 @@ import io.cucumber.java.en.When; import it.pagopa.interop.authorization.service.utils.PollingService; import it.pagopa.interop.authorization.service.utils.SettableBearerToken; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingErrorsResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingErrorsResponseResults; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.GetTracingsResponseResults; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.SubmitTracingResponse; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model.TracingState; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.GetTracingErrorsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.GetTracingErrorsResponseResults; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.GetTracingsResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.GetTracingsResponseResults; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.SubmitTracingResponse; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.model.TracingState; import it.pagopa.interop.tracing.service.IInteropTracingClient; import it.pagopa.interop.tracing.service.TracingRetriever; import it.pagopa.pn.interop.cucumber.utility.TracingFileUtils; diff --git a/pom.xml b/pom.xml index ceeb11c0f..cf5836732 100644 --- a/pom.xml +++ b/pom.xml @@ -1942,40 +1942,6 @@ - - generate-external-interop-client - - generate - - process-resources - - - OffsetDateTime=java.lang.String - - https://raw.githubusercontent.com/pagopa/interop-tracing-core/refs/heads/develop/packages/api/open-api/api-external-interop-v1.yaml - java - resttemplate - false - false - true - - it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api - it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model - java8 - none - source - false - true - false - - @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL) - - - it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api - it.pagopa.interop.client.b2b.generated.openapi.clients.interop.model - - - generate-external-templates-engine-client From c2fd8fdbb9688ba5bb9a68f1b20b56a61ffd613e Mon Sep 17 00:00:00 2001 From: Matteo Mancini Date: Fri, 14 Feb 2025 14:31:47 +0100 Subject: [PATCH 8/9] QA-5872: updated imports package --- .../tracing/service/impl/DevAbstractInteropTracingClient.java | 4 ++-- .../tracing/service/impl/QAAbstractInteropTracingClient.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/DevAbstractInteropTracingClient.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/DevAbstractInteropTracingClient.java index 0b6f8392c..96a8f5556 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/DevAbstractInteropTracingClient.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/DevAbstractInteropTracingClient.java @@ -1,8 +1,8 @@ package it.pagopa.interop.tracing.service.impl; import it.pagopa.interop.authorization.service.utils.IdentityService; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api.HealthApi; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api.TracingsApi; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.api.HealthApi; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.api.TracingsApi; import it.pagopa.interop.tracing.config.TracingClientConfigs; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.config.ConfigurableBeanFactory; diff --git a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/QAAbstractInteropTracingClient.java b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/QAAbstractInteropTracingClient.java index f304eb85e..f4b9c55a7 100644 --- a/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/QAAbstractInteropTracingClient.java +++ b/interop-qa-tests/src/main/java/it/pagopa/interop/tracing/service/impl/QAAbstractInteropTracingClient.java @@ -1,8 +1,8 @@ package it.pagopa.interop.tracing.service.impl; import it.pagopa.interop.authorization.service.utils.IdentityService; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api.HealthApi; -import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.api.TracingsApi; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.api.HealthApi; +import it.pagopa.interop.client.b2b.generated.openapi.clients.interop.tracing.api.TracingsApi; import it.pagopa.interop.tracing.config.TracingClientConfigs; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.config.ConfigurableBeanFactory; From 61e1021732219fcb642ac2313921b5c72677aa8b Mon Sep 17 00:00:00 2001 From: Matteo Mancini Date: Mon, 17 Feb 2025 10:01:13 +0100 Subject: [PATCH 9/9] QA-5723: removed commented lines and unused imports --- .../pn/interop/cucumber/AuthorizationTest.java | 12 ++++++++++-- .../cucumber/steps/tracing/TracingSteps.java | 15 --------------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/AuthorizationTest.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/AuthorizationTest.java index 8c4528579..47691a4e1 100644 --- a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/AuthorizationTest.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/AuthorizationTest.java @@ -1,8 +1,16 @@ package it.pagopa.pn.interop.cucumber; -import org.junit.platform.suite.api.*; +import org.junit.platform.suite.api.ConfigurationParameter; +import org.junit.platform.suite.api.ConfigurationParameters; +import org.junit.platform.suite.api.ExcludeTags; +import org.junit.platform.suite.api.IncludeEngines; +import org.junit.platform.suite.api.IncludeTags; +import org.junit.platform.suite.api.SelectClasspathResource; +import org.junit.platform.suite.api.Suite; -import static io.cucumber.junit.platform.engine.Constants.*; +import static io.cucumber.junit.platform.engine.Constants.EXECUTION_MODE_FEATURE_PROPERTY_NAME; +import static io.cucumber.junit.platform.engine.Constants.GLUE_PROPERTY_NAME; +import static io.cucumber.junit.platform.engine.Constants.PLUGIN_PROPERTY_NAME; @Suite @IncludeEngines("cucumber") diff --git a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java index 53252d4ef..32d554ef2 100644 --- a/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java +++ b/interop-qa-tests/src/test/java/it/pagopa/pn/interop/cucumber/steps/tracing/TracingSteps.java @@ -21,7 +21,6 @@ import org.springframework.web.client.HttpStatusCodeException; import java.time.LocalDate; -import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.UUID; @@ -233,24 +232,10 @@ public void waitForStatus(String state) { .anyMatch(tracingState -> tracingState.equals(state)), "" ); -// -// -// -// -// -// PnPollingInteropTracing interopTracing = (PnPollingInteropTracing) pnPollingFactory.getPollingService(PnPollingStrategy.INTEROP_TRACING); -// PnTracingResponse pnTracingResponse = interopTracing.waitForEvent(null, -// PnPollingParameter.builder() -// .value(PnPollingStrategy.INTEROP_TRACING) -// .pollingType(PnPollingParameter.PollingType.RAPID) -// .pnPollingInterop(new PnPollingInterop(submitTracingResponse.getTracingId().toString(), TracingState.fromValue(status))) -// .build()); -// Assertions.assertTrue(pnTracingResponse.getResult()); } @Then("viene recuperato il file di tracing appena caricato e si verifica che lo stato sia {string}") public void retrieveTracingAndVerifyStatus(String status) { - List results = new ArrayList<>(); GetTracingsResponseResults result; int attempt = 0; int totalPages;