generated from pagopa/template-payments-java-repository
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f1cb25f
commit 994353a
Showing
2 changed files
with
236 additions
and
0 deletions.
There are no files selected for viewing
54 changes: 54 additions & 0 deletions
54
src/test/java/it/gov/pagopa/payhub/pdnd/anpr/controller/PdndServiceControllerTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
package it.gov.pagopa.payhub.pdnd.anpr.controller; | ||
|
||
import it.gov.pagopa.payhub.model.generated.Address; | ||
import it.gov.pagopa.payhub.model.generated.Citizen; | ||
import it.gov.pagopa.payhub.pdnd.anpr.service.PdndService; | ||
import org.junit.jupiter.api.Test; | ||
import org.mockito.Mockito; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; | ||
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; | ||
import org.springframework.boot.test.mock.mockito.MockBean; | ||
import org.springframework.test.context.ContextConfiguration; | ||
import org.springframework.test.web.servlet.MockMvc; | ||
|
||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; | ||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; | ||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; | ||
|
||
@WebMvcTest(value = PdndServiceController.class, excludeAutoConfiguration = SecurityAutoConfiguration.class) | ||
@ContextConfiguration(classes = {PdndServiceController.class}) | ||
class PdndServiceControllerTest { | ||
|
||
@Autowired | ||
private MockMvc mockMvc; | ||
|
||
@MockBean | ||
private PdndService pdndService; | ||
|
||
@Test | ||
void testAnprServiceE002CitizenGet_Success() throws Exception { | ||
String fiscalCode = "DNTCRL65S67M126K"; | ||
Citizen citizen = Citizen.builder() | ||
.firstName("Julieta") | ||
.lastName("Lindgren") | ||
.dateOfBirth("2024-12-11") | ||
.address(Address.builder() | ||
.street("106 Hansen Mountains") | ||
.city("West Aurelio") | ||
.postalCode("36495-0217") | ||
.country("Heard Island and McDonald Islands") | ||
.build()) | ||
.build(); | ||
|
||
Mockito.when(pdndService.getCitizenData(fiscalCode)).thenReturn(citizen); | ||
|
||
mockMvc.perform(get("/p4papdnd/anpr-service-e002/citizen") | ||
.param("fiscalCode", fiscalCode)) | ||
.andExpect(status().isOk()) | ||
.andExpect(jsonPath("$.firstName").value("Julieta")) | ||
.andExpect(jsonPath("$.lastName").value("Lindgren")); | ||
|
||
Mockito.verify(pdndService, Mockito.times(1)).getCitizenData(Mockito.any()); | ||
} | ||
} |
182 changes: 182 additions & 0 deletions
182
src/test/java/it/gov/pagopa/payhub/pdnd/anpr/service/PdndServiceImplTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,182 @@ | ||
package it.gov.pagopa.payhub.pdnd.anpr.service; | ||
|
||
import it.gov.pagopa.payhub.anpr.C003.model.generated.TipoInfoSoggettoEnte; | ||
import it.gov.pagopa.payhub.anpr.C003.model.generated.TipoInfoValore; | ||
import it.gov.pagopa.payhub.anpr.C030.model.generated.RispostaE002OK; | ||
import it.gov.pagopa.payhub.anpr.C030.model.generated.TipoDatiSoggettiEnte; | ||
import it.gov.pagopa.payhub.anpr.C030.model.generated.TipoIdentificativi; | ||
import it.gov.pagopa.payhub.anpr.C030.model.generated.TipoListaSoggetti; | ||
import it.gov.pagopa.payhub.model.generated.Citizen; | ||
import it.gov.pagopa.payhub.pdnd.anpr.c003.service.AnprC003Service; | ||
import it.gov.pagopa.payhub.pdnd.anpr.c030.service.AnprC030Service; | ||
import org.junit.jupiter.api.Test; | ||
import org.junit.jupiter.api.extension.ExtendWith; | ||
import org.mockito.InjectMocks; | ||
import org.mockito.Mock; | ||
import org.mockito.Mockito; | ||
import org.mockito.junit.jupiter.MockitoExtension; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
import static org.junit.jupiter.api.Assertions.*; | ||
|
||
@ExtendWith(MockitoExtension.class) | ||
class PdndServiceImplTest { | ||
|
||
@Mock | ||
private AnprC003Service anprC003Service; | ||
|
||
@Mock | ||
private AnprC030Service anprC030Service; | ||
|
||
@InjectMocks | ||
private PdndServiceImpl pdndService; | ||
|
||
@Test | ||
void testGetCitizenData_Success() { | ||
String fiscalCode = "DNTCRL65S67M126K"; | ||
String idAnpr = "d20fcd8e-f228-323c-8924-6405b44879bf"; | ||
|
||
TipoIdentificativi idTypes = TipoIdentificativi.builder() | ||
.idANPR(idAnpr) | ||
.build(); | ||
|
||
TipoDatiSoggettiEnte subDataTypes = TipoDatiSoggettiEnte.builder() | ||
.identificativi(idTypes) | ||
.build(); | ||
|
||
RispostaE002OK anprC030Response = new RispostaE002OK(); | ||
anprC030Response.setListaSoggetti(new TipoListaSoggetti(List.of(subDataTypes))); | ||
|
||
it.gov.pagopa.payhub.anpr.C003.model.generated.RispostaE002OK anprC003Response = new it.gov.pagopa.payhub.anpr.C003.model.generated.RispostaE002OK(); | ||
TipoInfoSoggettoEnte subTypeInfo = TipoInfoSoggettoEnte.builder() | ||
.id("firstName") | ||
.chiave("Julieta") | ||
.valore(TipoInfoValore.S) | ||
.valoreTesto("First name of the subject") | ||
.valoreData("2024-11-02") | ||
.dettaglio("") | ||
.build(); | ||
|
||
anprC003Response.setListaSoggetti(new it.gov.pagopa.payhub.anpr.C003.model.generated.TipoListaSoggetti(List.of( | ||
new it.gov.pagopa.payhub.anpr.C003.model.generated.TipoDatiSoggettiEnte(List.of(subTypeInfo)) | ||
))); | ||
|
||
Mockito.when(anprC030Service.getIdAnprFromFc(fiscalCode)).thenReturn(anprC030Response); | ||
Mockito.when(anprC003Service.getUserData(idAnpr, fiscalCode)).thenReturn(anprC003Response); | ||
|
||
Citizen result = pdndService.getCitizenData(fiscalCode); | ||
|
||
assertNotNull(result); | ||
assertEquals("Julieta", result.getFirstName()); | ||
} | ||
|
||
@Test | ||
void testGetCitizenData_InvalidListaSoggetti() { | ||
String fiscalCode = "DNTCRL65S67M126K"; | ||
String idAnpr = "d20fcd8e-f228-323c-8924-6405b44879bf"; | ||
|
||
TipoIdentificativi idTypes = TipoIdentificativi.builder() | ||
.idANPR(idAnpr) | ||
.build(); | ||
|
||
TipoDatiSoggettiEnte subDataTypes = TipoDatiSoggettiEnte.builder() | ||
.identificativi(idTypes) | ||
.build(); | ||
|
||
RispostaE002OK anprC030Response = new RispostaE002OK(); | ||
anprC030Response.setListaSoggetti(new TipoListaSoggetti(List.of(subDataTypes))); | ||
|
||
it.gov.pagopa.payhub.anpr.C003.model.generated.RispostaE002OK anprC003Response = new it.gov.pagopa.payhub.anpr.C003.model.generated.RispostaE002OK(); | ||
anprC003Response.setListaSoggetti(null); | ||
|
||
Mockito.when(anprC030Service.getIdAnprFromFc(fiscalCode)).thenReturn(anprC030Response); | ||
Mockito.when(anprC003Service.getUserData(idAnpr, fiscalCode)).thenReturn(anprC003Response); | ||
|
||
assertThrows(IllegalArgumentException.class, () -> pdndService.getCitizenData(fiscalCode)); | ||
} | ||
|
||
@Test | ||
void testGetCitizenData_InvalidC003Response() { | ||
String fiscalCode = "DNTCRL65S67M126K"; | ||
String idAnpr = "d20fcd8e-f228-323c-8924-6405b44879bf"; | ||
|
||
TipoIdentificativi idTypes = TipoIdentificativi.builder() | ||
.idANPR(idAnpr) | ||
.build(); | ||
|
||
TipoDatiSoggettiEnte subDataTypes = TipoDatiSoggettiEnte.builder() | ||
.identificativi(idTypes) | ||
.build(); | ||
|
||
RispostaE002OK anprC030Response = new RispostaE002OK(); | ||
anprC030Response.setListaSoggetti(new TipoListaSoggetti(List.of(subDataTypes))); | ||
|
||
Mockito.when(anprC030Service.getIdAnprFromFc(fiscalCode)).thenReturn(anprC030Response); | ||
Mockito.when(anprC003Service.getUserData(idAnpr, fiscalCode)).thenReturn(null); | ||
|
||
assertThrows(IllegalArgumentException.class, () -> pdndService.getCitizenData(fiscalCode)); | ||
} | ||
|
||
@Test | ||
void testGetCitizenData_InvalidSubDataType() { | ||
String fiscalCode = "DNTCRL65S67M126K"; | ||
String idAnpr = "d20fcd8e-f228-323c-8924-6405b44879bf"; | ||
|
||
TipoIdentificativi idTypes = TipoIdentificativi.builder() | ||
.idANPR(idAnpr) | ||
.build(); | ||
|
||
TipoDatiSoggettiEnte subDataTypes = TipoDatiSoggettiEnte.builder() | ||
.identificativi(idTypes) | ||
.build(); | ||
|
||
RispostaE002OK anprC030Response = new RispostaE002OK(); | ||
anprC030Response.setListaSoggetti(new TipoListaSoggetti(List.of(subDataTypes))); | ||
|
||
it.gov.pagopa.payhub.anpr.C003.model.generated.RispostaE002OK anprC003Response = new it.gov.pagopa.payhub.anpr.C003.model.generated.RispostaE002OK(); | ||
|
||
anprC003Response.setListaSoggetti(new it.gov.pagopa.payhub.anpr.C003.model.generated.TipoListaSoggetti(null)); | ||
|
||
Mockito.when(anprC030Service.getIdAnprFromFc(fiscalCode)).thenReturn(anprC030Response); | ||
Mockito.when(anprC003Service.getUserData(idAnpr, fiscalCode)).thenReturn(anprC003Response); | ||
|
||
assertThrows(IllegalArgumentException.class, () -> pdndService.getCitizenData(fiscalCode)); | ||
} | ||
|
||
@Test | ||
void testGetCitizenData_EmptySubDataType() { | ||
String fiscalCode = "DNTCRL65S67M126K"; | ||
String idAnpr = "d20fcd8e-f228-323c-8924-6405b44879bf"; | ||
|
||
TipoIdentificativi idTypes = TipoIdentificativi.builder() | ||
.idANPR(idAnpr) | ||
.build(); | ||
|
||
TipoDatiSoggettiEnte subDataTypes = TipoDatiSoggettiEnte.builder() | ||
.identificativi(idTypes) | ||
.build(); | ||
|
||
RispostaE002OK anprC030Response = new RispostaE002OK(); | ||
anprC030Response.setListaSoggetti(new TipoListaSoggetti(List.of(subDataTypes))); | ||
|
||
it.gov.pagopa.payhub.anpr.C003.model.generated.RispostaE002OK anprC003Response = new it.gov.pagopa.payhub.anpr.C003.model.generated.RispostaE002OK(); | ||
|
||
anprC003Response.setListaSoggetti(new it.gov.pagopa.payhub.anpr.C003.model.generated.TipoListaSoggetti(new ArrayList<>())); | ||
|
||
Mockito.when(anprC030Service.getIdAnprFromFc(fiscalCode)).thenReturn(anprC030Response); | ||
Mockito.when(anprC003Service.getUserData(idAnpr, fiscalCode)).thenReturn(anprC003Response); | ||
|
||
assertThrows(IllegalArgumentException.class, () -> pdndService.getCitizenData(fiscalCode)); | ||
} | ||
|
||
@Test | ||
void testGetCitizenData_InvalidResponse_ThrowsException() { | ||
String fiscalCode = "DNTCRL65S67M126K"; | ||
|
||
Mockito.when(anprC030Service.getIdAnprFromFc(fiscalCode)).thenThrow(new RuntimeException("Service unavailable")); | ||
|
||
assertThrows(RuntimeException.class, () -> pdndService.getCitizenData(fiscalCode)); | ||
} | ||
} |