diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt index d06994cf0..186a5de3f 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt @@ -38,6 +38,7 @@ class UnderholdService( private val personRepository: PersonRepository, private val notatService: NotatService, private val dtomapper: Dtomapper, + private val personService: PersonService, ) { fun oppdatereBegrunnelse( behandling: Behandling, @@ -118,7 +119,7 @@ class UnderholdService( behandling: Behandling, gjelderBarn: BarnDto, ): Underholdskostnad { - gjelderBarn.validere(behandling) + gjelderBarn.validere(behandling, personService) return gjelderBarn.personident?.let { personidentBarn -> val rolleSøknadsbarn = behandling.søknadsbarn.find { it.ident == personidentBarn.verdi } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/underhold/Validering.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/underhold/Validering.kt index 53a0d0140..a5a9a0e0d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/underhold/Validering.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/underhold/Validering.kt @@ -12,6 +12,7 @@ import no.nav.bidrag.behandling.dto.v2.underhold.StønadTilBarnetilsynDto import no.nav.bidrag.behandling.dto.v2.underhold.Underholdselement import no.nav.bidrag.behandling.dto.v2.underhold.ValideringsfeilUnderhold import no.nav.bidrag.behandling.ressursIkkeFunnetException +import no.nav.bidrag.behandling.service.PersonService import org.springframework.http.HttpStatus import org.springframework.web.client.HttpClientErrorException @@ -24,7 +25,10 @@ fun OppdatereUnderholdRequest.validere() { } } -fun BarnDto.validere(behandling: Behandling) { +fun BarnDto.validere( + behandling: Behandling, + personService: PersonService, +) { if ((navn.isNullOrBlank() || fødselsdato == null) && (personident == null || personident.verdi.isEmpty())) { throw HttpClientErrorException( HttpStatus.BAD_REQUEST, @@ -57,6 +61,12 @@ fun BarnDto.validere(behandling: Behandling) { "Det finnes allerede underhold for barn med samme navn og fødselsdato i behandling ${behandling.id}.", ) } + + this.personident?.let { + if (personService.hentPerson(it.verdi) == null) { + throw HttpClientErrorException(HttpStatus.BAD_REQUEST, "Fant ikke barn med oppgitt personident.") + } + } } fun SletteUnderholdselement.validere(behandling: Behandling) { diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/CommonVedtakTilBehandlingTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/CommonVedtakTilBehandlingTest.kt index 8229fe1d6..bb382f9bb 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/CommonVedtakTilBehandlingTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/CommonVedtakTilBehandlingTest.kt @@ -99,6 +99,7 @@ abstract class CommonVedtakTilBehandlingTest { personRepository, notatService, dtomapper, + personService, ) val vedtakTilBehandlingMapping = VedtakTilBehandlingMapping(validerBeregning, underholdService = underholdService) beregningService = diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt index 52f208c6b..b508142f9 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt @@ -124,6 +124,7 @@ class UnderholdServiceTest { personRepository, notatService, dtomapper, + personService, ) stubUnderholdskostnadRepository(underholdskostnadRepository) @@ -391,6 +392,31 @@ class UnderholdServiceTest { // så respons.statusCode shouldBe HttpStatus.CONFLICT } + + @Test + open fun `feil dersom barns personident ikke finnes`() { + // gitt + val personidentBarn = "12345678910" + every { personConsumer.hentPerson(personidentBarn) }.throws(HttpClientErrorException(HttpStatus.NOT_FOUND)) + + val behandling = + oppretteTestbehandling( + setteDatabaseider = true, + inkludereBp = true, + behandlingstype = TypeBehandling.BIDRAG, + ) + + val request = BarnDto(personident = Personident(personidentBarn)) + + // hvis + val respons = + assertFailsWith { + underholdService.oppretteUnderholdskostnad(behandling, request) + } + + // så + respons.statusCode shouldBe HttpStatus.BAD_REQUEST + } } @Nested diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceTest.kt index fe32f1b59..b416b5c8f 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceTest.kt @@ -170,6 +170,7 @@ class VedtakserviceTest : TestContainerRunner() { personRepository, notatService, dtomapper, + personService, ) val vedtakTilBehandlingMapping = VedtakTilBehandlingMapping(validerBeregning, underholdService)