Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/bestem ident #45

Merged
merged 3 commits into from
Oct 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ dependencies {
exclude module: 'ep-metrics'
exclude module: 'ep-logging'
}
implementation("no.nav.eessi.pensjon:ep-personoppslag:13.1.14"){
implementation("no.nav.eessi.pensjon:ep-personoppslag:13.1.16"){
exclude module: 'ep-eux'
exclude module: 'ep-metrics'
exclude module: 'ep-logging'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package no.nav.eessi.pensjon.prefill

import jakarta.annotation.PostConstruct
import no.nav.eessi.pensjon.eux.model.SedType.P2000
import no.nav.eessi.pensjon.eux.model.SedType.P2100
import no.nav.eessi.pensjon.eux.model.SedType.P2200
import no.nav.eessi.pensjon.eux.model.SedType.P6000
import no.nav.eessi.pensjon.eux.model.SedType.*
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
Expand All @@ -18,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired
import org.springframework.http.HttpStatus
import org.springframework.stereotype.Service
import org.springframework.web.server.ResponseStatusException

@Suppress("SpringJavaInjectionPointsAutowiringInspection")
@Service
class PersonDataService(private val personService: PersonService,
Expand Down Expand Up @@ -45,7 +44,7 @@ class PersonDataService(private val personService: PersonService,
}
}

private fun personServiceHentPerson(ident: NorskIdent): Person? {
private fun personServiceHentPerson(ident: Ident): Person? {
return try {
personService.hentPerson(ident) ?: throw NullPointerException()
} catch (np: NullPointerException) {
Expand All @@ -67,11 +66,11 @@ 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(NorskIdent(prefillData.bruker.norskIdent))
val forsikretPerson = personServiceHentPerson(bestemIdent(prefillData.bruker.norskIdent))

val gjenlevendeEllerAvdod = if (prefillData.avdod != null) {
logger.info("Henter avød person")
personService.hentPerson(Ident.bestemIdent(prefillData.avdod.norskIdent))
personService.hentPerson(bestemIdent(prefillData.avdod.norskIdent))
} else {
logger.info("Ingen avdød så settes til forsikretPerson")
forsikretPerson
Expand All @@ -94,7 +93,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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,8 @@ import no.nav.eessi.pensjon.kodeverk.KodeverkClient
import no.nav.eessi.pensjon.kodeverk.PostnummerService
import no.nav.eessi.pensjon.metrics.MetricsHelper
import no.nav.eessi.pensjon.personoppslag.pdl.PersonService
import no.nav.eessi.pensjon.personoppslag.pdl.model.AdressebeskyttelseGradering
import no.nav.eessi.pensjon.personoppslag.pdl.model.NorskIdent
import no.nav.eessi.pensjon.personoppslag.pdl.model.PostadresseIFrittFormat
import no.nav.eessi.pensjon.personoppslag.pdl.model.UtenlandskAdresse
import no.nav.eessi.pensjon.personoppslag.pdl.model.UtenlandskAdresseIFrittFormat
import no.nav.eessi.pensjon.personoppslag.pdl.model.Vegadresse
import no.nav.eessi.pensjon.personoppslag.pdl.model.*
import no.nav.eessi.pensjon.personoppslag.pdl.model.Ident.Companion.bestemIdent
import no.nav.eessi.pensjon.utils.toJson
import org.slf4j.Logger
import org.slf4j.LoggerFactory
Expand Down Expand Up @@ -114,7 +110,7 @@ class PrefillPDLAdresse (private val postnummerService: PostnummerService,
kontaktinformasjonForDoedsbo,
landKode2Tegn
) { idenfikasjonsnummer: String ->
personService.hentPersonnavn(NorskIdent(idenfikasjonsnummer))
personService.hentPersonnavn(bestemIdent(idenfikasjonsnummer))
?: throw NullPointerException("Uventet nullverdi etter oppslag mot PDL på personnavn for $idenfikasjonsnummer")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ 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.FOLKEREGISTERIDENT
import no.nav.eessi.pensjon.personoppslag.pdl.model.NorskIdent
import no.nav.eessi.pensjon.personoppslag.pdl.model.Npid
import no.nav.eessi.pensjon.prefill.PensjonsinformasjonService
import no.nav.eessi.pensjon.prefill.PersonPDLMock
import no.nav.pensjon.v1.kravhistorikk.V1KravHistorikk
Expand Down Expand Up @@ -58,11 +59,12 @@ class PrefillErrorIntegrationTest {

private companion object {
const val FNR_VOKSEN = "11067122781" // 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 skal det kastes en Exception`() {

every { kodeverkClient.finnLandkode(eq("NOR"))} returns "NO"
every { personService.hentIdent(FOLKEREGISTERIDENT, AktoerId(AKTOER_ID)) } returns NorskIdent(FNR_VOKSEN)
Expand Down Expand Up @@ -98,6 +100,43 @@ class PrefillErrorIntegrationTest {

}

@Test
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)
every { personService.hentPerson(Npid(NPID_VOKSEN)) } returns PersonPDLMock.createWith()

val sak = V1Sak()
sak.sakType = UFOREP.toString()
sak.sakId = 100
sak.kravHistorikkListe = V1KravHistorikkListe()
val krav = V1KravHistorikk()
krav.kravType = "REVURD"
krav.kravId = "1"
krav.status = "INNV"
sak.kravHistorikkListe.kravHistorikkListe.add(krav)

every { pensjoninformasjonservice.hentRelevantPensjonSak(any(), any()) } returns sak

val vedtak = V1Vedtak()
vedtak.isBoddArbeidetUtland = false
vedtak.kravGjelder = "REVURD"

every { pensjoninformasjonservice.hentRelevantVedtakHvisFunnet("231231231") } returns vedtak

val apijson = dummyApijson(sakid = "1232123123", aktoerId = AKTOER_ID, vedtakid = "231231231", sed = P2200.name, buc = P_BUC_03.name)
val expectedError = """Du kan ikke opprette krav-SED P2200 hvis ikke "bodd/arbeidet i utlandet" er krysset av""".trimIndent()

mockMvc.perform(
MockMvcRequestBuilders.post("/sed/prefill")
.contentType(MediaType.APPLICATION_JSON)
.content(apijson))
.andExpect(MockMvcResultMatchers.status().isBadRequest)
.andExpect(MockMvcResultMatchers.status().reason(Matchers.containsString(expectedError)))

}

private fun dummyApijson(sakid: String, vedtakid: String? = "", aktoerId: String, sed: String? = P2000.name, buc: String? = P_BUC_06.name, subject: String? = null, refperson: String? = null): String {
return """
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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"
}

Expand Down Expand Up @@ -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<String>(), any(), any<HttpEntity<Unit>>(), eq(String::class.java))} returns PrefillTestHelper.readXMLresponse("/pensjonsinformasjon/krav/P2200-AVSL.xml")

Expand Down Expand Up @@ -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)
Expand All @@ -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<String>(), any(), any<HttpEntity<Unit>>(), eq(String::class.java))} returns
PrefillTestHelper.readXMLresponse("/pensjonsinformasjon/krav/P2200-UP-INNV.xml")

every { pensjonsinformasjonOidcRestTemplate.exchange(eq("/vedtak/5134513451345"), any(), any<HttpEntity<Unit>>(), 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 {
Expand Down
Loading