From 069b95ab3a3d07e34338d0cf36840e3e4fa4a7ff Mon Sep 17 00:00:00 2001 From: mariampervez Date: Fri, 29 Sep 2023 13:23:40 +0200 Subject: [PATCH] =?UTF-8?q?F!-=20hentHovedpersonEktefelle=20h=C3=A5ndterer?= =?UTF-8?q?=20n=C3=A5=20NPID=20p=C3=A5=20lik=20linje=20med=20NorskIdent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Daniel.skarpas@nav.no --- .../pensjon/prefill/PersonDataService.kt | 5 +- .../sed/PrefillErrorIntegrationTest.kt | 6 +- .../sed/PrefillUfoereIntegrationTest.kt | 131 +++++++++++------- .../pensjon/prefill/PersonDataServiceTest.kt | 29 ++++ 4 files changed, 114 insertions(+), 57 deletions(-) diff --git a/src/main/kotlin/no/nav/eessi/pensjon/prefill/PersonDataService.kt b/src/main/kotlin/no/nav/eessi/pensjon/prefill/PersonDataService.kt index 8c4a7186..e0d8bfdc 100644 --- a/src/main/kotlin/no/nav/eessi/pensjon/prefill/PersonDataService.kt +++ b/src/main/kotlin/no/nav/eessi/pensjon/prefill/PersonDataService.kt @@ -9,6 +9,7 @@ import no.nav.eessi.pensjon.metrics.MetricsHelper import no.nav.eessi.pensjon.personoppslag.pdl.PersonService import no.nav.eessi.pensjon.personoppslag.pdl.PersonoppslagException import no.nav.eessi.pensjon.personoppslag.pdl.model.* +import no.nav.eessi.pensjon.personoppslag.pdl.model.Ident.Companion.bestemIdent import no.nav.eessi.pensjon.prefill.models.PersonDataCollection import no.nav.eessi.pensjon.shared.api.PrefillDataModel import no.nav.eessi.pensjon.shared.person.Fodselsnummer @@ -67,7 +68,7 @@ class PersonDataService(private val personService: PersonService, private fun hentPersoner(prefillData: PrefillDataModel, fyllUtBarnListe: Boolean = false): PersonDataCollection { return HentPerson.measure { logger.info("Henter hovedperson/forsikret/gjenlevende") - val forsikretPerson = personServiceHentPerson(Npid(prefillData.bruker.norskIdent)) + val forsikretPerson = personServiceHentPerson(bestemIdent(prefillData.bruker.norskIdent)) val gjenlevendeEllerAvdod = if (prefillData.avdod != null) { logger.info("Henter avød person") @@ -94,7 +95,7 @@ class PersonDataService(private val personService: PersonService, return try { logger.info("Henter ektefelle/partner (ekteType: ${sivilstand?.type})") - val ektefelleBruker = sivilstand?.relatertVedSivilstand?.let { personService.hentPerson(NorskIdent(it)) } + val ektefelleBruker = sivilstand?.relatertVedSivilstand?.let { personService.hentPerson(bestemIdent(it)) } ektefelleBruker?.takeUnless { it.erDoed() } } catch (ex: Exception) { logger.warn(ex.message) diff --git a/src/test/kotlin/no/nav/eessi/pensjon/integrationtest/sed/PrefillErrorIntegrationTest.kt b/src/test/kotlin/no/nav/eessi/pensjon/integrationtest/sed/PrefillErrorIntegrationTest.kt index 9b801437..c97d9e2d 100644 --- a/src/test/kotlin/no/nav/eessi/pensjon/integrationtest/sed/PrefillErrorIntegrationTest.kt +++ b/src/test/kotlin/no/nav/eessi/pensjon/integrationtest/sed/PrefillErrorIntegrationTest.kt @@ -59,12 +59,12 @@ class PrefillErrorIntegrationTest { private companion object { const val FNR_VOKSEN = "11067122781" // KRAFTIG VEGGPRYD - const val NPID_VOKSEN = "01220049651" // KRAFTIG VEGGPRYD + const val NPID_VOKSEN = "01220049651" const val AKTOER_ID = "0123456789000" } @Test - fun `prefill sed P2200 med vedtak, F_BH_BO_UTL og F_BH_MED_UTL mangler samt vedtak isBoddArbeidetUtland er false skal Exception`() { + fun `prefill sed P2200 som har vedtak, F_BH_BO_UTL men mangler F_BH_MED_UTL i tillegg til at isBoddArbeidetUtland er false så skal det kastes en Exception`() { every { kodeverkClient.finnLandkode(eq("NOR"))} returns "NO" every { personService.hentIdent(FOLKEREGISTERIDENT, AktoerId(AKTOER_ID)) } returns NorskIdent(FNR_VOKSEN) @@ -101,7 +101,7 @@ class PrefillErrorIntegrationTest { } @Test - fun `Prefill P2200 for bruker med npid som har vedtak med F_BH_BO_UTL men F_BH_MED_UTL mangler i tillegg til at vedtak isBoddArbeidetUtland er false så skal det kastes en Exception`() { + fun `Prefill P2200 som har vedtak med F_BH_BO_UTL men F_BH_MED_UTL mangler i tillegg til at vedtak isBoddArbeidetUtland er false så skal det kastes en Exception`() { every { kodeverkClient.finnLandkode(eq("NOR"))} returns "NO" every { personService.hentIdent(FOLKEREGISTERIDENT, AktoerId(AKTOER_ID)) } returns Npid(NPID_VOKSEN) diff --git a/src/test/kotlin/no/nav/eessi/pensjon/integrationtest/sed/PrefillUfoereIntegrationTest.kt b/src/test/kotlin/no/nav/eessi/pensjon/integrationtest/sed/PrefillUfoereIntegrationTest.kt index 794bd70a..cf1ea099 100644 --- a/src/test/kotlin/no/nav/eessi/pensjon/integrationtest/sed/PrefillUfoereIntegrationTest.kt +++ b/src/test/kotlin/no/nav/eessi/pensjon/integrationtest/sed/PrefillUfoereIntegrationTest.kt @@ -11,11 +11,8 @@ import no.nav.eessi.pensjon.eux.model.sed.SED import no.nav.eessi.pensjon.integrationtest.IntegrasjonsTestConfig import no.nav.eessi.pensjon.kodeverk.KodeverkClient import no.nav.eessi.pensjon.personoppslag.pdl.PersonService -import no.nav.eessi.pensjon.personoppslag.pdl.model.AktoerId -import no.nav.eessi.pensjon.personoppslag.pdl.model.IdentGruppe +import no.nav.eessi.pensjon.personoppslag.pdl.model.* import no.nav.eessi.pensjon.personoppslag.pdl.model.IdentGruppe.* -import no.nav.eessi.pensjon.personoppslag.pdl.model.KjoennType -import no.nav.eessi.pensjon.personoppslag.pdl.model.NorskIdent import no.nav.eessi.pensjon.prefill.PersonPDLMock import no.nav.eessi.pensjon.prefill.PersonPDLMock.medBarn import no.nav.eessi.pensjon.prefill.PersonPDLMock.medFodsel @@ -44,6 +41,9 @@ import org.springframework.test.web.servlet.result.MockMvcResultMatchers.content import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status import org.springframework.web.client.RestTemplate +private const val NPID_VOKSEN = "01220049651" +private const val RINA_SAK = "22874955" + @SpringBootTest(classes = [IntegrasjonsTestConfig::class, UnsecuredWebMvcTestLauncher::class, PrefillUfoereIntegrationTest.TestConfig::class], webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @ActiveProfiles("unsecured-webmvctest", "excludeKodeverk") @AutoConfigureMockMvc @@ -64,7 +64,7 @@ class PrefillUfoereIntegrationTest { private companion object { const val FNR_VOKSEN = "11067122781" // KRAFTIG VEGGPRYD - const val FNR_VOKSEN_2 = "12312312312" // + const val FNR_VOKSEN_2 = "12312312312" const val AKTOER_ID = "0123456789000" } @@ -188,18 +188,14 @@ class PrefillUfoereIntegrationTest { //mock hent av aktoer/fnr for innkommende hovedperson every { personService.hentIdent(FOLKEREGISTERIDENT, AktoerId(aktoerHovedperson)) } returns NorskIdent(pinHovedperson) - every { personService.hentPerson(NorskIdent(pinHovedperson)) } returns hovedPersonMedbarn //ektefelle every { personService.hentPerson(NorskIdent(pinEktefelledperson)) } returns ektefellePerson //barn every { personService.hentPerson(NorskIdent(pinBarn1)) } returns barn1 - every { personService.hentPerson(NorskIdent(pinBarn2)) } returns barn2 - //every { personService.hentPerson(NorskIdent(pinBarn3)) } returns barn3 - //pensjoninformasjon avsl. every { pensjonsinformasjonOidcRestTemplate.exchange(any(), any(), any>(), eq(String::class.java))} returns PrefillTestHelper.readXMLresponse("/pensjonsinformasjon/krav/P2200-AVSL.xml") @@ -414,7 +410,7 @@ class PrefillUfoereIntegrationTest { every { kodeverkClient.finnLandkode(any()) } returns "QX" - val apijson = dummyApijson(sakid = "22874955", aktoerId = AKTOER_ID, vedtakid = "5134513451345", sed = P2200.name) + val apijson = dummyApijson(sakid = RINA_SAK, aktoerId = AKTOER_ID, vedtakid = "5134513451345", sed = P2200.name) val result = mockMvc.perform(post("/sed/prefill") .contentType(MediaType.APPLICATION_JSON) @@ -425,54 +421,85 @@ class PrefillUfoereIntegrationTest { val response = result.response.getContentAsString(charset("UTF-8")) - val validResponse = """ - { - "sed" : "P2200", - "sedGVer" : "4", - "sedVer" : "2", - "nav" : { - "eessisak" : [ { - "institusjonsid" : "NO:noinst002", - "institusjonsnavn" : "NOINST002, NO INST002, NO", - "saksnummer" : "22874955", - "land" : "NO" - } ], - "bruker" : { - "person" : { - "pin" : [ { - "institusjonsnavn" : "NOINST002, NO INST002, NO", + val validResponse = validResponse(FNR_VOKSEN_2) + JSONAssert.assertEquals(response, validResponse, true) + } + + @Test + fun `Gitt en SED med bruker som har NPID, kravtype førstegangsbehandling Norge og vedtak bosatt utland så skal SEDen preutfylles`() { + + every { personService.hentIdent(FOLKEREGISTERIDENT, AktoerId(AKTOER_ID)) } returns Npid(NPID_VOKSEN) + every { personService.hentPerson(Npid(NPID_VOKSEN)) } returns PersonPDLMock.createWith(true, "Lever", "Gjenlev", NPID_VOKSEN) + + every { pensjonsinformasjonOidcRestTemplate.exchange(any(), any(), any>(), eq(String::class.java))} returns + PrefillTestHelper.readXMLresponse("/pensjonsinformasjon/krav/P2200-UP-INNV.xml") + + every { pensjonsinformasjonOidcRestTemplate.exchange(eq("/vedtak/5134513451345"), any(), any>(), eq(String::class.java)) } returns + PrefillTestHelper.readXMLresponse("/pensjonsinformasjon/vedtak/P6000-APUtland-301.xml") + + every { kodeverkClient.finnLandkode(any()) } returns "QX" + + val apijson = dummyApijson(sakid = RINA_SAK, aktoerId = AKTOER_ID, vedtakid = "5134513451345", sed = P2200.name) + + val result = mockMvc.perform(post("/sed/prefill") + .contentType(MediaType.APPLICATION_JSON) + .content(apijson)) + .andExpect(status().isOk) + .andExpect(content().contentType(MediaType.APPLICATION_JSON_VALUE)) + .andReturn() + + val response = result.response.getContentAsString(charset("UTF-8")) + + val validResponse = validResponse(NPID_VOKSEN) + JSONAssert.assertEquals(response, validResponse, true) + } + + private fun validResponse(ident: String) = """ + { + "sed" : "P2200", + "sedGVer" : "4", + "sedVer" : "2", + "nav" : { + "eessisak" : [ { "institusjonsid" : "NO:noinst002", - "identifikator" : "$FNR_VOKSEN_2", + "institusjonsnavn" : "NOINST002, NO INST002, NO", + "saksnummer" : "22874955", "land" : "NO" } ], - "statsborgerskap" : [ { - "land" : "QX" - } ], - "etternavn" : "Gjenlev", - "fornavn" : "Lever", - "kjoenn" : "M", - "foedselsdato" : "1988-07-12" + "bruker" : { + "person" : { + "pin" : [ { + "institusjonsnavn" : "NOINST002, NO INST002, NO", + "institusjonsid" : "NO:noinst002", + "identifikator" : "$ident", + "land" : "NO" + } ], + "statsborgerskap" : [ { + "land" : "QX" + } ], + "etternavn" : "Gjenlev", + "fornavn" : "Lever", + "kjoenn" : "M", + "foedselsdato" : "1988-07-12" + }, + "adresse" : { + "gate" : "Oppoverbakken 66", + "by" : "SØRUMSAND", + "postnummer" : "1920", + "land" : "NO" + } + }, + "krav" : { + "dato" : "2019-07-15" + } }, - "adresse" : { - "gate" : "Oppoverbakken 66", - "by" : "SØRUMSAND", - "postnummer" : "1920", - "land" : "NO" + "pensjon" : { + "kravDato" : { + "dato" : "2019-07-15" + } } - }, - "krav" : { - "dato" : "2019-07-15" - } - }, - "pensjon" : { - "kravDato" : { - "dato" : "2019-07-15" } - } - } - """.trimIndent() - JSONAssert.assertEquals(response, validResponse, true) - } + """.trimIndent() private fun dummyApijson(sakid: String, vedtakid: String? = "", aktoerId: String, sed: String? = P2200.name, buc: String? = P_BUC_06.name, subject: String? = null, refperson: String? = null): String { diff --git a/src/test/kotlin/no/nav/eessi/pensjon/prefill/PersonDataServiceTest.kt b/src/test/kotlin/no/nav/eessi/pensjon/prefill/PersonDataServiceTest.kt index 722444b8..b0589e82 100644 --- a/src/test/kotlin/no/nav/eessi/pensjon/prefill/PersonDataServiceTest.kt +++ b/src/test/kotlin/no/nav/eessi/pensjon/prefill/PersonDataServiceTest.kt @@ -23,6 +23,8 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows import org.springframework.web.server.ResponseStatusException +private const val NPID_VOKSEN = "01220049651" + internal class PersonDataServiceTest { companion object { @@ -162,6 +164,33 @@ internal class PersonDataServiceTest { } + @Test + fun `Innhenting av forsikret person med barn under 18 aar returnerer persondatacollection`() { + val barn1fnr = FodselsnummerGenerator.generateFnrForTest(12) + val barn2fnr = FodselsnummerGenerator.generateFnrForTest(19) + + val forelder = lagPerson(NPID_VOKSEN, "Christopher", "Robin").medBarn(barn1fnr).medBarn(barn2fnr) + val barn1 = lagPerson(barn2fnr, "Ole", "Brum").medForeldre(forelder) + val barn2 = lagPerson(barn1fnr, "Nasse", "Nøff").medForeldre(forelder) + + every { personService.hentPerson(Npid(NPID_VOKSEN)) } returns forelder + every { personService.hentPerson(NorskIdent(barn1fnr)) } returns barn1 + every { personService.hentPerson(NorskIdent(barn2fnr)) } returns barn2 + + val data = PrefillDataModelMother.initialPrefillDataModel(SedType.P2000, NPID_VOKSEN, SAK_ID, euxCaseId = EUX_RINA) + + val result = persondataService.hentPersonData(data) + + assertNull(result.ektefellePerson) + assertNull(result.sivilstandstype) + assertEquals(barn1, result.barnPersonList.firstOrNull()) + assertEquals(1, result.barnPersonList.size) + assertEquals(forelder, result.gjenlevendeEllerAvdod) + assertEquals(forelder, result.forsikretPerson) + + verify ( exactly = 2 ) { personService.hentPerson(any()) } + + } @Test fun `test henting av forsikretperson med avdod ektefelle for persondatacollection`() {