Skip to content

Commit

Permalink
P4ADEV-1352 completed junit test
Browse files Browse the repository at this point in the history
  • Loading branch information
RiccardoGiuliani committed Dec 11, 2024
1 parent f1cb25f commit 994353a
Show file tree
Hide file tree
Showing 2 changed files with 236 additions and 0 deletions.
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());
}
}
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));
}
}

0 comments on commit 994353a

Please sign in to comment.