From 8eb688727ae30c1c22ceed1131394431b77b7808 Mon Sep 17 00:00:00 2001 From: andreaV95 <157486351+Vitolo-Andrea@users.noreply.github.com> Date: Fri, 31 Jan 2025 11:25:49 +0100 Subject: [PATCH] fix: Delete api for test (#21) --- .../citizen/controller/CitizenController.java | 3 ++ .../controller/CitizenControllerImpl.java | 6 ++++ .../citizen/service/CitizenService.java | 1 + .../citizen/service/CitizenServiceImpl.java | 11 +++++++ .../controller/CitizenControllerTest.java | 15 ++++++++++ .../citizen/service/CitizenServiceTest.java | 30 +++++++++++++++++++ 6 files changed, 66 insertions(+) diff --git a/src/main/java/it/gov/pagopa/onboarding/citizen/controller/CitizenController.java b/src/main/java/it/gov/pagopa/onboarding/citizen/controller/CitizenController.java index e4f3067..5d007e8 100644 --- a/src/main/java/it/gov/pagopa/onboarding/citizen/controller/CitizenController.java +++ b/src/main/java/it/gov/pagopa/onboarding/citizen/controller/CitizenController.java @@ -58,4 +58,7 @@ Mono> getCitizenConsentStatus(@PathVariable @P @GetMapping("/{tppId}") Mono>> getCitizenEnabled(@PathVariable @Pattern(regexp = TPP_STRUCTURE_REGEX, message = "Invalid fiscal code format") String fiscalCode); + @DeleteMapping("/test/{fiscalCode}") + Mono> deleteCitizenConsent(@PathVariable @Pattern(regexp = FISCAL_CODE_STRUCTURE_REGEX, message = "Invalid fiscal code format") String fiscalCode); + } diff --git a/src/main/java/it/gov/pagopa/onboarding/citizen/controller/CitizenControllerImpl.java b/src/main/java/it/gov/pagopa/onboarding/citizen/controller/CitizenControllerImpl.java index 6c9eca2..0bfa443 100644 --- a/src/main/java/it/gov/pagopa/onboarding/citizen/controller/CitizenControllerImpl.java +++ b/src/main/java/it/gov/pagopa/onboarding/citizen/controller/CitizenControllerImpl.java @@ -64,6 +64,12 @@ public Mono>> getCitizenEnabled(String tp .map(ResponseEntity::ok); } + @Override + public Mono> deleteCitizenConsent(String fiscalCode) { + return citizenService.deleteCitizenConsent(fiscalCode) + .map(ResponseEntity::ok); + } + @Override public Mono> bloomFilterSearch(String fiscalCode) { return Mono.fromCallable(() -> diff --git a/src/main/java/it/gov/pagopa/onboarding/citizen/service/CitizenService.java b/src/main/java/it/gov/pagopa/onboarding/citizen/service/CitizenService.java index af088dc..f9dc8cd 100644 --- a/src/main/java/it/gov/pagopa/onboarding/citizen/service/CitizenService.java +++ b/src/main/java/it/gov/pagopa/onboarding/citizen/service/CitizenService.java @@ -14,4 +14,5 @@ public interface CitizenService { Mono getCitizenConsentsList(String fiscalCode); Mono getCitizenConsentsListEnabled(String fiscalCode); Mono> getCitizenEnabled(String tppId); + Mono deleteCitizenConsent(String fiscalCode); } diff --git a/src/main/java/it/gov/pagopa/onboarding/citizen/service/CitizenServiceImpl.java b/src/main/java/it/gov/pagopa/onboarding/citizen/service/CitizenServiceImpl.java index f67cda4..aebd6ed 100644 --- a/src/main/java/it/gov/pagopa/onboarding/citizen/service/CitizenServiceImpl.java +++ b/src/main/java/it/gov/pagopa/onboarding/citizen/service/CitizenServiceImpl.java @@ -190,4 +190,15 @@ public Mono> getCitizenEnabled(String tppId) { .map(mapperToDTO::map) .collectList(); } + + @Override + public Mono deleteCitizenConsent(String fiscalCode) { + return citizenRepository.findByFiscalCode(fiscalCode) + .switchIfEmpty(Mono.error(exceptionMap.throwException + (ExceptionName.CITIZEN_NOT_ONBOARDED, "Citizen consent not founded during delete process "))) + .flatMap(citizenConsent -> + citizenRepository.deleteById(citizenConsent.getId()) + .then(Mono.just(mapperToDTO.map(citizenConsent))) + ); + } } diff --git a/src/test/java/it/gov/pagopa/onboarding/citizen/controller/CitizenControllerTest.java b/src/test/java/it/gov/pagopa/onboarding/citizen/controller/CitizenControllerTest.java index 26b00c3..d4c01af 100644 --- a/src/test/java/it/gov/pagopa/onboarding/citizen/controller/CitizenControllerTest.java +++ b/src/test/java/it/gov/pagopa/onboarding/citizen/controller/CitizenControllerTest.java @@ -205,4 +205,19 @@ void getCitizenEnabled_ShouldReturnListOfCitizens() { } + @Test + void deleteCitizenConsent_OK() { + CitizenConsentDTO mockConsent = CitizenConsentDTOFaker.mockInstance(true); + Mockito.when(citizenService.deleteCitizenConsent(FISCAL_CODE)) + .thenReturn(Mono.just(mockConsent)); + webClient.delete() + .uri("/emd/citizen/test/{fiscalCode}", FISCAL_CODE) + .accept(MediaType.APPLICATION_JSON) + .exchange() + .expectStatus().isOk() + .expectBodyList(CitizenConsentDTO.class) + .value(response -> Assertions.assertEquals(1, response.size())); + } + + } diff --git a/src/test/java/it/gov/pagopa/onboarding/citizen/service/CitizenServiceTest.java b/src/test/java/it/gov/pagopa/onboarding/citizen/service/CitizenServiceTest.java index 3407cd1..75a8ab3 100644 --- a/src/test/java/it/gov/pagopa/onboarding/citizen/service/CitizenServiceTest.java +++ b/src/test/java/it/gov/pagopa/onboarding/citizen/service/CitizenServiceTest.java @@ -337,5 +337,35 @@ void getCitizenEnabled_Empty() { }) .verifyComplete(); } + + + @Test + void deleteCitizenConsent_OK() { + CitizenConsent citizenConsent = CitizenConsent.builder() + .id(FISCAL_CODE) + .fiscalCode(FISCAL_CODE) + .consents(new HashMap<>()) + .build(); + + when(citizenRepository.findByFiscalCode(FISCAL_CODE)).thenReturn(Mono.just(citizenConsent)); + when(citizenRepository.deleteById(FISCAL_CODE)).thenReturn(Mono.empty()); + StepVerifier.create(citizenService.deleteCitizenConsent(FISCAL_CODE)) + .assertNext(response -> { + assertNotNull(response); + assertEquals(0, response.getConsents().size()); + }) + .verifyComplete(); + } + + + @Test + void deleteCitizenConsent_NotOnboarded() { + when(citizenRepository.findByFiscalCode(FISCAL_CODE)).thenReturn(Mono.empty()); + + StepVerifier.create(citizenService.deleteCitizenConsent(FISCAL_CODE)) + .expectErrorMatches(throwable -> throwable instanceof ClientExceptionWithBody && + "Citizen consent not founded during delete process ".equals(throwable.getMessage())) + .verify(); + } }