diff --git a/pom.xml b/pom.xml
index 5f7d8661..c932bb04 100644
--- a/pom.xml
+++ b/pom.xml
@@ -144,6 +144,16 @@
felles
${kontrakt.version}
+
+ no.nav.familie.kontrakter
+ kontantstotte
+ ${kontrakt.version}
+
+
+ no.nav.familie.kontrakter
+ barnetrygd
+ ${kontrakt.version}
+
diff --git "a/src/main/java/no/nav/familie/integrasjoner/baks/s\303\270knad/BaksVersjonertS\303\270knadService.kt" "b/src/main/java/no/nav/familie/integrasjoner/baks/s\303\270knad/BaksVersjonertS\303\270knadService.kt"
new file mode 100644
index 00000000..234a00e4
--- /dev/null
+++ "b/src/main/java/no/nav/familie/integrasjoner/baks/s\303\270knad/BaksVersjonertS\303\270knadService.kt"
@@ -0,0 +1,43 @@
+package no.nav.familie.integrasjoner.baks.søknad
+
+import com.fasterxml.jackson.module.kotlin.readValue
+import no.nav.familie.integrasjoner.client.rest.SafHentDokumentRestClient
+import no.nav.familie.kontrakter.ba.søknad.VersjonertBarnetrygdSøknad
+import no.nav.familie.kontrakter.felles.Tema
+import no.nav.familie.kontrakter.felles.journalpost.Dokumentvariantformat
+import no.nav.familie.kontrakter.felles.journalpost.Journalpost
+import no.nav.familie.kontrakter.felles.objectMapper
+import no.nav.familie.kontrakter.felles.søknad.BaksSøknadBase
+import no.nav.familie.kontrakter.ks.søknad.VersjonertKontantstøtteSøknad
+import org.springframework.stereotype.Service
+
+@Service
+class BaksVersjonertSøknadService(
+ private val safHentDokumentRestClient: SafHentDokumentRestClient,
+) {
+ fun hentBaksSøknadBase(
+ journalpost: Journalpost,
+ tema: Tema,
+ ): BaksSøknadBase =
+ when (tema) {
+ Tema.KON -> hentVersjonertKontantstøtteSøknad(journalpost).baksSøknadBase
+ Tema.BAR -> hentVersjonertBarnetrygdSøknad(journalpost).baksSøknadBase
+ else -> throw IllegalArgumentException("Støtter ikke deserialisering av søknad for tema $tema")
+ }
+
+ fun hentVersjonertBarnetrygdSøknad(
+ journalpost: Journalpost,
+ ): VersjonertBarnetrygdSøknad = objectMapper.readValue(hentSøknadJson(journalpost, Tema.BAR))
+
+ fun hentVersjonertKontantstøtteSøknad(
+ journalpost: Journalpost,
+ ): VersjonertKontantstøtteSøknad = objectMapper.readValue(hentSøknadJson(journalpost, Tema.KON))
+
+ private fun hentSøknadJson(
+ journalpost: Journalpost,
+ tema: Tema,
+ ): String {
+ val dokumentInfoId = journalpost.dokumenter!!.single { it.erDigitalSøknad(tema) }.dokumentInfoId
+ return safHentDokumentRestClient.hentDokument(journalpostId = journalpost.journalpostId, dokumentInfoId = dokumentInfoId, variantFormat = Dokumentvariantformat.ORIGINAL.name).decodeToString()
+ }
+}
diff --git a/src/main/java/no/nav/familie/integrasjoner/dokarkiv/metadata/Dokumentmetadata.kt b/src/main/java/no/nav/familie/integrasjoner/dokarkiv/metadata/Dokumentmetadata.kt
index 93dc1d37..fcf9d2ac 100644
--- a/src/main/java/no/nav/familie/integrasjoner/dokarkiv/metadata/Dokumentmetadata.kt
+++ b/src/main/java/no/nav/familie/integrasjoner/dokarkiv/metadata/Dokumentmetadata.kt
@@ -145,4 +145,5 @@ fun Dokumenttype.tilMetadata(): Dokumentmetadata =
Dokumenttype.VEDTAKSBREV_BARNETILSYN -> BarnetilsynVedtaksbrevMetadata
Dokumenttype.VEDTAKSBREV_OVERGANGSSTØNAD -> OvergangsstønadVedtaksbrevMetadata
Dokumenttype.VEDTAKSBREV_SKOLEPENGER -> SkolepengerVedtaksbrevMetadata
+ Dokumenttype.KONTANTSTØTTE_VEDTAK_ENDRET -> KontantstøtteVedtakMetadata
}
diff --git a/src/main/java/no/nav/familie/integrasjoner/journalpost/BaksTilgangsstyrtJournalpostService.kt b/src/main/java/no/nav/familie/integrasjoner/journalpost/BaksTilgangsstyrtJournalpostService.kt
new file mode 100644
index 00000000..0beed49c
--- /dev/null
+++ b/src/main/java/no/nav/familie/integrasjoner/journalpost/BaksTilgangsstyrtJournalpostService.kt
@@ -0,0 +1,61 @@
+package no.nav.familie.integrasjoner.journalpost
+
+import no.nav.familie.integrasjoner.baks.søknad.BaksVersjonertSøknadService
+import no.nav.familie.integrasjoner.tilgangskontroll.TilgangskontrollService
+import no.nav.familie.kontrakter.felles.Tema
+import no.nav.familie.kontrakter.felles.journalpost.Journalpost
+import no.nav.familie.kontrakter.felles.journalpost.TilgangsstyrtJournalpost
+import no.nav.familie.kontrakter.felles.søknad.MissingVersionException
+import no.nav.familie.kontrakter.felles.søknad.UnsupportedVersionException
+import org.slf4j.LoggerFactory
+import org.springframework.stereotype.Service
+
+@Service
+class BaksTilgangsstyrtJournalpostService(
+ private val baksVersjonertSøknadService: BaksVersjonertSøknadService,
+ private val tilgangskontrollService: TilgangskontrollService,
+) {
+ fun mapTilTilgangsstyrteJournalposter(journalposter: List): List =
+ journalposter.map { journalpost ->
+ TilgangsstyrtJournalpost(
+ journalpost = journalpost,
+ harTilgang = harTilgangTilJournalpost(journalpost = journalpost),
+ )
+ }
+
+ private fun harTilgangTilJournalpost(journalpost: Journalpost): Boolean {
+ val tema = journalpost.tema?.let { tema -> Tema.valueOf(tema) }
+ if (tema == null) {
+ return true
+ }
+ return if (journalpost.harDigitalSøknad(tema)) {
+ try {
+ val baksSøknadBase = baksVersjonertSøknadService.hentBaksSøknadBase(journalpost, tema)
+ tilgangskontrollService
+ .sjekkTilgangTilBrukere(
+ personIdenter = baksSøknadBase.personerISøknad(),
+ tema = tema,
+ ).all { tilgang -> tilgang.harTilgang }
+ } catch (e: MissingVersionException) {
+ logger.warn("Får ikke sjekket tilgang til digital søknad tilknyttet journalpost ${journalpost.journalpostId}.")
+ secureLogger.warn("Feil ved deserialisering av digital søknad.", e)
+ // For gamle søknader, før 'kontraktVersjon' ble innført, har vi ingen måte å bestemme konkret klasse å deserialisere til.
+ // Gir tilgang basert på antagelsen om at fagsak relatert til gamle søknader allerede er satt til Vikafossen dersom det finnes kode 6, 7 eller 19 personer i søknad.
+ true
+ } catch (e: UnsupportedVersionException) {
+ logger.error("Får ikke sjekket tilgang til digital søknad tilknyttet journalpost ${journalpost.journalpostId}, da vi mangler støtte for kontraktversjon.")
+ secureLogger.error("Feil ved deserialisering av digital søknad.", e)
+ // Hindrer tilgang og logger Error da vi burde kunne deserialisere alle baks-søknader med feltet `kontraktVersjon`.
+ false
+ }
+ } else {
+ // Vi har kun mulighet til å sjekke tilganger for digitale søknader, da innholdet i papirsøknader er ukjent.
+ true
+ }
+ }
+
+ companion object {
+ private val logger = LoggerFactory.getLogger(BaksTilgangsstyrtJournalpostService::class.java)
+ private val secureLogger = LoggerFactory.getLogger("secureLogger")
+ }
+}
diff --git a/src/main/java/no/nav/familie/integrasjoner/journalpost/HentJournalpostController.kt b/src/main/java/no/nav/familie/integrasjoner/journalpost/HentJournalpostController.kt
index a1092e2e..aef74a0b 100644
--- a/src/main/java/no/nav/familie/integrasjoner/journalpost/HentJournalpostController.kt
+++ b/src/main/java/no/nav/familie/integrasjoner/journalpost/HentJournalpostController.kt
@@ -6,6 +6,7 @@ import no.nav.familie.kontrakter.felles.Ressurs.Companion.failure
import no.nav.familie.kontrakter.felles.Ressurs.Companion.success
import no.nav.familie.kontrakter.felles.journalpost.Journalpost
import no.nav.familie.kontrakter.felles.journalpost.JournalposterForBrukerRequest
+import no.nav.familie.kontrakter.felles.journalpost.TilgangsstyrtJournalpost
import no.nav.security.token.support.core.api.ProtectedWithClaims
import org.slf4j.LoggerFactory
import org.springframework.http.HttpStatus
@@ -82,6 +83,11 @@ class HentJournalpostController(
@RequestBody journalposterForBrukerRequest: JournalposterForBrukerRequest,
): ResponseEntity>> = ResponseEntity.ok(success(journalpostService.finnJournalposter(journalposterForBrukerRequest), "OK"))
+ @PostMapping("tilgangsstyrt/baks")
+ fun hentTilgangsstyrteJournalposterForBruker(
+ @RequestBody journalposterForBrukerRequest: JournalposterForBrukerRequest,
+ ): ResponseEntity>> = ResponseEntity.ok(success(journalpostService.finnTilgangsstyrteBaksJournalposter(journalposterForBrukerRequest), "OK"))
+
@PostMapping("temaer")
fun hentJournalpostForBrukerOgTema(
@RequestBody journalposterForVedleggRequest: JournalposterForVedleggRequest,
diff --git a/src/main/java/no/nav/familie/integrasjoner/journalpost/JournalpostService.kt b/src/main/java/no/nav/familie/integrasjoner/journalpost/JournalpostService.kt
index 97abbf50..dc3f929e 100644
--- a/src/main/java/no/nav/familie/integrasjoner/journalpost/JournalpostService.kt
+++ b/src/main/java/no/nav/familie/integrasjoner/journalpost/JournalpostService.kt
@@ -5,6 +5,7 @@ import no.nav.familie.integrasjoner.client.rest.SafRestClient
import no.nav.familie.integrasjoner.journalpost.internal.JournalposterForVedleggRequest
import no.nav.familie.kontrakter.felles.journalpost.Journalpost
import no.nav.familie.kontrakter.felles.journalpost.JournalposterForBrukerRequest
+import no.nav.familie.kontrakter.felles.journalpost.TilgangsstyrtJournalpost
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
@@ -14,11 +15,17 @@ class JournalpostService
constructor(
private val safRestClient: SafRestClient,
private val safHentDokumentRestClient: SafHentDokumentRestClient,
+ private val baksTilgangsstyrtJournalpostService: BaksTilgangsstyrtJournalpostService,
) {
fun hentJournalpost(journalpostId: String): Journalpost = safRestClient.hentJournalpost(journalpostId)
fun finnJournalposter(journalposterForBrukerRequest: JournalposterForBrukerRequest): List = safRestClient.finnJournalposter(journalposterForBrukerRequest)
+ fun finnTilgangsstyrteBaksJournalposter(journalposterForBrukerRequest: JournalposterForBrukerRequest): List {
+ val journalposter = safRestClient.finnJournalposter(journalposterForBrukerRequest)
+ return baksTilgangsstyrtJournalpostService.mapTilTilgangsstyrteJournalposter(journalposter)
+ }
+
fun finnJournalposter(journalposterForVedleggRequest: JournalposterForVedleggRequest): List = safRestClient.finnJournalposter(journalposterForVedleggRequest)
fun hentDokument(
diff --git a/src/main/resources/application-preprod.yaml b/src/main/resources/application-preprod.yaml
index 23fe633d..77fcce04 100755
--- a/src/main/resources/application-preprod.yaml
+++ b/src/main/resources/application-preprod.yaml
@@ -192,4 +192,4 @@ SKYGGE_SAK_URL: https://sak-q2.dev.intern.nav.no
NORG2_URL: https://norg2.dev.adeo.no/norg2/
REGOPPSLAG_URL: https://regoppslag.dev.intern.nav.no
SFTP_HOST: b27apvl00364.preprod.local
-AXSYS_URL: https://axsys.dev.intern.nav.no/api
+AXSYS_URL: https://axsys.dev.intern.nav.no/api
\ No newline at end of file
diff --git a/src/main/resources/application-prod.yaml b/src/main/resources/application-prod.yaml
index f3cd3949..3bfa9d1e 100755
--- a/src/main/resources/application-prod.yaml
+++ b/src/main/resources/application-prod.yaml
@@ -184,4 +184,4 @@ OPPGAVE_URL: https://oppgave.nais.adeo.no
NORG2_URL: https://norg2.nais.adeo.no/norg2/
REGOPPSLAG_URL: https://regoppslag.intern.nav.no
SFTP_HOST: a01drvl099.adeo.no
-AXSYS_URL: https://axsys.intern.nav.no/api
+AXSYS_URL: https://axsys.intern.nav.no/api
\ No newline at end of file
diff --git "a/src/test/java/no/nav/familie/integrasjoner/baks/s\303\270knad/BaksS\303\270knad.kt" "b/src/test/java/no/nav/familie/integrasjoner/baks/s\303\270knad/BaksS\303\270knad.kt"
new file mode 100644
index 00000000..380bfb1b
--- /dev/null
+++ "b/src/test/java/no/nav/familie/integrasjoner/baks/s\303\270knad/BaksS\303\270knad.kt"
@@ -0,0 +1,182 @@
+package no.nav.familie.integrasjoner.baks.søknad
+
+import no.nav.familie.kontrakter.ba.søknad.v4.Søknadstype
+import no.nav.familie.kontrakter.ba.søknad.v9.BarnetrygdSøknad
+import no.nav.familie.kontrakter.felles.søknad.Søknadsfelt
+import no.nav.familie.kontrakter.ks.søknad.v1.RegistrertBostedType
+import no.nav.familie.kontrakter.ks.søknad.v1.SIVILSTANDTYPE
+import no.nav.familie.kontrakter.ks.søknad.v1.SøknadAdresse
+import no.nav.familie.kontrakter.ks.søknad.v5.KontantstøtteSøknad
+import no.nav.familie.kontrakter.ba.søknad.v8.Barn as BarnetrygdBarn
+import no.nav.familie.kontrakter.ba.søknad.v8.Søker as BarnetrygdSøker
+import no.nav.familie.kontrakter.ks.søknad.v4.Barn as KontantstøtteBarn
+import no.nav.familie.kontrakter.ks.søknad.v4.Søker as KontantstøtteSøker
+
+fun lagKontantstøtteSøknad(
+ søkerFnr: String,
+ barnFnr: String,
+): KontantstøtteSøknad =
+ KontantstøtteSøknad(
+ kontraktVersjon = 5,
+ søker = lagKontantstøtteSøker(søkerFnr),
+ barn = listOf(lagKontantstøtteBarn(barnFnr)),
+ antallEøsSteg = 0,
+ dokumentasjon = emptyList(),
+ teksterTilPdf = emptyMap(),
+ originalSpråk = "NB",
+ finnesPersonMedAdressebeskyttelse = false,
+ erNoenAvBarnaFosterbarn = lagStringSøknadsfelt("Nei"),
+ søktAsylForBarn = lagStringSøknadsfelt("Nei"),
+ oppholderBarnSegIInstitusjon = lagStringSøknadsfelt("Nei"),
+ barnOppholdtSegTolvMndSammenhengendeINorge = lagStringSøknadsfelt("Ja"),
+ erBarnAdoptert = lagStringSøknadsfelt("Nei"),
+ mottarKontantstøtteForBarnFraAnnetEøsland = lagStringSøknadsfelt("Nei"),
+ harEllerTildeltBarnehageplass = lagStringSøknadsfelt("Nei"),
+ erAvdødPartnerForelder = null,
+ )
+
+fun lagStringSøknadsfelt(verdi: T): Søknadsfelt =
+ Søknadsfelt(
+ label = mapOf("no" to ""),
+ verdi = mapOf("no" to verdi),
+ )
+
+fun lagKontantstøtteSøker(fnr: String): KontantstøtteSøker =
+ KontantstøtteSøker(
+ harEøsSteg = false,
+ ident = lagStringSøknadsfelt(fnr),
+ navn = lagStringSøknadsfelt("Navn"),
+ statsborgerskap = lagStringSøknadsfelt(listOf("Norge")),
+ adresse =
+ lagStringSøknadsfelt(
+ SøknadAdresse(
+ adressenavn = "Gate",
+ postnummer = null,
+ husbokstav = null,
+ bruksenhetsnummer = null,
+ husnummer = null,
+ poststed = null,
+ ),
+ ),
+ adressebeskyttelse = false,
+ sivilstand = lagStringSøknadsfelt(SIVILSTANDTYPE.UOPPGITT),
+ borPåRegistrertAdresse = null,
+ værtINorgeITolvMåneder = lagStringSøknadsfelt("Ja"),
+ planleggerÅBoINorgeTolvMnd = lagStringSøknadsfelt("Ja"),
+ yrkesaktivFemÅr = lagStringSøknadsfelt("Ja"),
+ erAsylsøker = lagStringSøknadsfelt("Nei"),
+ utenlandsoppholdUtenArbeid = lagStringSøknadsfelt("Nei"),
+ utenlandsperioder = emptyList(),
+ arbeidIUtlandet = lagStringSøknadsfelt("Nei"),
+ arbeidsperioderUtland = emptyList(),
+ mottarUtenlandspensjon = lagStringSøknadsfelt("Nei"),
+ pensjonsperioderUtland = emptyList(),
+ arbeidINorge = lagStringSøknadsfelt("Nei"),
+ arbeidsperioderNorge = emptyList(),
+ pensjonNorge = lagStringSøknadsfelt("Nei"),
+ pensjonsperioderNorge = emptyList(),
+ andreUtbetalingsperioder = emptyList(),
+ idNummer = emptyList(),
+ andreUtbetalinger = null,
+ adresseISøkeperiode = null,
+ )
+
+fun lagKontantstøtteBarn(fnr: String): KontantstøtteBarn =
+ KontantstøtteBarn(
+ harEøsSteg = false,
+ ident = lagStringSøknadsfelt(fnr),
+ navn = lagStringSøknadsfelt(""),
+ registrertBostedType = lagStringSøknadsfelt(RegistrertBostedType.REGISTRERT_SOKERS_ADRESSE),
+ alder = null,
+ teksterTilPdf = emptyMap(),
+ erFosterbarn = lagStringSøknadsfelt("Nei"),
+ oppholderSegIInstitusjon = lagStringSøknadsfelt("Nei"),
+ erAdoptert = lagStringSøknadsfelt("Nei"),
+ erAsylsøker = lagStringSøknadsfelt("Nei"),
+ boddMindreEnn12MndINorge = lagStringSøknadsfelt("Nei"),
+ kontantstøtteFraAnnetEøsland = lagStringSøknadsfelt("Nei"),
+ harBarnehageplass = lagStringSøknadsfelt("Nei"),
+ andreForelderErDød = null,
+ utbetaltForeldrepengerEllerEngangsstønad = null,
+ mottarEllerMottokEøsKontantstøtte = null,
+ pågåendeSøknadFraAnnetEøsLand = null,
+ pågåendeSøknadHvilketLand = null,
+ planleggerÅBoINorge12Mnd = null,
+ eøsKontantstøttePerioder = emptyList(),
+ barnehageplassPerioder = emptyList(),
+ borFastMedSøker = lagStringSøknadsfelt("Ja"),
+ foreldreBorSammen = null,
+ søkerDeltKontantstøtte = null,
+ andreForelder = null,
+ utenlandsperioder = emptyList(),
+ søkersSlektsforhold = null,
+ søkersSlektsforholdSpesifisering = null,
+ borMedAndreForelder = null,
+ borMedOmsorgsperson = null,
+ adresse = null,
+ omsorgsperson = null,
+ idNummer = emptyList(),
+ )
+
+fun lagBarnetrygdSøknad(
+ søkerFnr: String,
+ barnFnr: String,
+): BarnetrygdSøknad =
+ BarnetrygdSøknad(
+ kontraktVersjon = 9,
+ søker = lagBarnetrygdSøker(søkerFnr),
+ barn = listOf(lagBarnetrygdBarn(barnFnr)),
+ antallEøsSteg = 0,
+ dokumentasjon = emptyList(),
+ originalSpråk = "NB",
+ finnesPersonMedAdressebeskyttelse = false,
+ søknadstype = Søknadstype.ORDINÆR,
+ spørsmål = emptyMap(),
+ teksterUtenomSpørsmål = emptyMap(),
+ )
+
+fun lagBarnetrygdSøker(fnr: String): BarnetrygdSøker =
+ BarnetrygdSøker(
+ harEøsSteg = false,
+ ident = lagStringSøknadsfelt(fnr),
+ navn = lagStringSøknadsfelt("Navn"),
+ statsborgerskap = lagStringSøknadsfelt(listOf("Norge")),
+ adresse =
+ lagStringSøknadsfelt(
+ no.nav.familie.kontrakter.ba.søknad.v1.SøknadAdresse(
+ adressenavn = "Gate",
+ postnummer = null,
+ husbokstav = null,
+ bruksenhetsnummer = null,
+ husnummer = null,
+ poststed = null,
+ ),
+ ),
+ adressebeskyttelse = false,
+ sivilstand = lagStringSøknadsfelt(no.nav.familie.kontrakter.ba.søknad.v1.SIVILSTANDTYPE.UOPPGITT),
+ utenlandsperioder = emptyList(),
+ arbeidsperioderUtland = emptyList(),
+ pensjonsperioderUtland = emptyList(),
+ arbeidsperioderNorge = emptyList(),
+ pensjonsperioderNorge = emptyList(),
+ andreUtbetalingsperioder = emptyList(),
+ idNummer = emptyList(),
+ spørsmål = emptyMap(),
+ nåværendeSamboer = null,
+ tidligereSamboere = emptyList(),
+ )
+
+fun lagBarnetrygdBarn(fnr: String): BarnetrygdBarn =
+ BarnetrygdBarn(
+ harEøsSteg = false,
+ ident = lagStringSøknadsfelt(fnr),
+ navn = lagStringSøknadsfelt(""),
+ registrertBostedType = lagStringSøknadsfelt(no.nav.familie.kontrakter.ba.søknad.v5.RegistrertBostedType.REGISTRERT_SOKERS_ADRESSE),
+ alder = null,
+ andreForelder = null,
+ utenlandsperioder = emptyList(),
+ omsorgsperson = null,
+ idNummer = emptyList(),
+ spørsmål = emptyMap(),
+ eøsBarnetrygdsperioder = emptyList(),
+ )
diff --git "a/src/test/java/no/nav/familie/integrasjoner/baks/s\303\270knad/BaksVersjonertS\303\270knadServiceTest.kt" "b/src/test/java/no/nav/familie/integrasjoner/baks/s\303\270knad/BaksVersjonertS\303\270knadServiceTest.kt"
new file mode 100644
index 00000000..88a0bd7b
--- /dev/null
+++ "b/src/test/java/no/nav/familie/integrasjoner/baks/s\303\270knad/BaksVersjonertS\303\270knadServiceTest.kt"
@@ -0,0 +1,86 @@
+package no.nav.familie.integrasjoner.baks.søknad
+
+import io.mockk.every
+import io.mockk.mockk
+import no.nav.familie.integrasjoner.client.rest.SafHentDokumentRestClient
+import no.nav.familie.kontrakter.felles.Tema
+import no.nav.familie.kontrakter.felles.journalpost.DokumentInfo
+import no.nav.familie.kontrakter.felles.journalpost.Dokumentvariantformat
+import no.nav.familie.kontrakter.felles.journalpost.Journalpost
+import no.nav.familie.kontrakter.felles.objectMapper
+import org.assertj.core.api.Assertions.assertThat
+import org.junit.jupiter.api.Nested
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.assertThrows
+
+class BaksVersjonertSøknadServiceTest {
+ private val safHentDokumentRestClient: SafHentDokumentRestClient = mockk()
+ private val baksVersjonertSøknadService: BaksVersjonertSøknadService =
+ BaksVersjonertSøknadService(
+ safHentDokumentRestClient = safHentDokumentRestClient,
+ )
+
+ @Nested
+ inner class HentBaksSøknadBase {
+ @Test
+ fun `skal hente journalpost og deserialisere tilknyttet KontantstøtteSøknad når tema er KON`() {
+ // Arrange
+ val journalpost = mockk()
+ val dokumentInfo = mockk()
+
+ every { journalpost.journalpostId } returns "1"
+ every { journalpost.dokumenter } returns listOf(dokumentInfo)
+ every { dokumentInfo.dokumentInfoId } returns "1"
+ every { dokumentInfo.erDigitalSøknad(any()) } returns true
+
+ val søkerFnr = "12345678910"
+ val barnFnr = "12345678911"
+
+ val kontantstøtteSøknad = lagKontantstøtteSøknad(søkerFnr = søkerFnr, barnFnr = barnFnr)
+
+ every { safHentDokumentRestClient.hentDokument("1", "1", Dokumentvariantformat.ORIGINAL.name) } returns objectMapper.writeValueAsBytes(kontantstøtteSøknad)
+
+ // Act
+ val baksSøknadBase = baksVersjonertSøknadService.hentBaksSøknadBase(journalpost, Tema.KON)
+
+ // Assert
+ assertThat(baksSøknadBase).isNotNull
+ assertThat(baksSøknadBase.kontraktVersjon).isEqualTo(5)
+ assertThat(baksSøknadBase.personerISøknad()).isEqualTo(listOf(søkerFnr, barnFnr))
+ }
+
+ @Test
+ fun `skal hente journalpost og deserialisere tilknyttet BarnetrygdSøknad når tema er BAR`() {
+ // Arrange
+ val journalpost = mockk()
+ val dokumentInfo = mockk()
+
+ every { journalpost.journalpostId } returns "1"
+ every { journalpost.dokumenter } returns listOf(dokumentInfo)
+ every { dokumentInfo.dokumentInfoId } returns "1"
+ every { dokumentInfo.erDigitalSøknad(any()) } returns true
+
+ val søkerFnr = "12345678910"
+ val barnFnr = "12345678911"
+
+ val barnetrygdSøknad = lagBarnetrygdSøknad(søkerFnr = søkerFnr, barnFnr = barnFnr)
+
+ every { safHentDokumentRestClient.hentDokument("1", "1", Dokumentvariantformat.ORIGINAL.name) } returns objectMapper.writeValueAsBytes(barnetrygdSøknad)
+
+ // Act
+ val baksSøknadBase = baksVersjonertSøknadService.hentBaksSøknadBase(journalpost, Tema.BAR)
+
+ // Assert
+ assertThat(baksSøknadBase).isNotNull
+ assertThat(baksSøknadBase.kontraktVersjon).isEqualTo(9)
+ assertThat(baksSøknadBase.personerISøknad()).isEqualTo(listOf(søkerFnr, barnFnr))
+ }
+
+ @Test
+ fun`skal kaste feil dersom tema ikke er BAR eller KON`() {
+ // Act & Assert
+ val exception = assertThrows { baksVersjonertSøknadService.hentBaksSøknadBase(mockk(), Tema.ENF) }
+ assertThat(exception.message).isEqualTo("Støtter ikke deserialisering av søknad for tema ${Tema.ENF.name}")
+ }
+ }
+}
diff --git a/src/test/java/no/nav/familie/integrasjoner/egenansatt/EgenAnsattTestConfig.kt b/src/test/java/no/nav/familie/integrasjoner/egenansatt/EgenAnsattTestConfig.kt
index 6e9eafc2..d20ebbcb 100755
--- a/src/test/java/no/nav/familie/integrasjoner/egenansatt/EgenAnsattTestConfig.kt
+++ b/src/test/java/no/nav/familie/integrasjoner/egenansatt/EgenAnsattTestConfig.kt
@@ -18,4 +18,13 @@ class EgenAnsattTestConfig {
every { egenAnsattClient.erEgenAnsatt(any()) } returns true
return egenAnsattClient
}
+
+ @Bean
+ @Profile("mock-egenansatt-false")
+ @Primary
+ fun egenAnssattClientMockDefaultFalse(): EgenAnsattRestClient {
+ val egenAnsattClient: EgenAnsattRestClient = mockk(relaxed = true)
+ every { egenAnsattClient.erEgenAnsatt(any()) } returns false
+ return egenAnsattClient
+ }
}
diff --git a/src/test/java/no/nav/familie/integrasjoner/journalpost/BaksTilgangsstyrtJournalpostServiceTest.kt b/src/test/java/no/nav/familie/integrasjoner/journalpost/BaksTilgangsstyrtJournalpostServiceTest.kt
new file mode 100644
index 00000000..f584170d
--- /dev/null
+++ b/src/test/java/no/nav/familie/integrasjoner/journalpost/BaksTilgangsstyrtJournalpostServiceTest.kt
@@ -0,0 +1,163 @@
+package no.nav.familie.integrasjoner.journalpost
+
+import io.mockk.every
+import io.mockk.mockk
+import no.nav.familie.integrasjoner.baks.søknad.BaksVersjonertSøknadService
+import no.nav.familie.integrasjoner.baks.søknad.lagKontantstøtteSøknad
+import no.nav.familie.integrasjoner.tilgangskontroll.TilgangskontrollService
+import no.nav.familie.kontrakter.felles.Tema
+import no.nav.familie.kontrakter.felles.journalpost.DokumentInfo
+import no.nav.familie.kontrakter.felles.journalpost.Journalpost
+import no.nav.familie.kontrakter.felles.søknad.MissingVersionException
+import no.nav.familie.kontrakter.felles.søknad.UnsupportedVersionException
+import no.nav.familie.kontrakter.felles.tilgangskontroll.Tilgang
+import org.assertj.core.api.Assertions.assertThat
+import org.junit.jupiter.api.Test
+
+class BaksTilgangsstyrtJournalpostServiceTest {
+ private val baksVersjonertSøknadService: BaksVersjonertSøknadService = mockk()
+ private val tilgangskontrollService: TilgangskontrollService = mockk()
+
+ private val baksTilgangsstyrtJournalpostService: BaksTilgangsstyrtJournalpostService =
+ BaksTilgangsstyrtJournalpostService(
+ baksVersjonertSøknadService = baksVersjonertSøknadService,
+ tilgangskontrollService = tilgangskontrollService,
+ )
+
+ @Test
+ fun `skal mappe om liste av Journalpost til liste av TilgangsstyrtJournalpost med harTilgang satt til true dersom digital søknad og saksbehandler har tilgang til personer i søknad`() {
+ // Arrange
+ val journalpost1 = mockk()
+ val dokumentInfo = mockk()
+
+ every { journalpost1.journalpostId } returns "1"
+ every { journalpost1.tema } returns Tema.KON.name
+ every { journalpost1.harDigitalSøknad(any()) } returns true
+ every { journalpost1.dokumenter } returns listOf(dokumentInfo)
+ every { dokumentInfo.dokumentInfoId } returns "1"
+ every { dokumentInfo.erDigitalSøknad(any()) } returns true
+
+ val søkerFnr = "12345678910"
+ val barnFnr = "12345678911"
+
+ val kontantstøtteSøknad = lagKontantstøtteSøknad(søkerFnr, barnFnr)
+
+ every { baksVersjonertSøknadService.hentBaksSøknadBase(any(), any()) } returns kontantstøtteSøknad
+ every { tilgangskontrollService.sjekkTilgangTilBrukere(any(), any()) } returns listOf(Tilgang(søkerFnr, true), Tilgang(barnFnr, true))
+
+ // Act
+ val tilgangsstyrteJournalposter = baksTilgangsstyrtJournalpostService.mapTilTilgangsstyrteJournalposter(listOf(journalpost1))
+
+ // Assert
+ assertThat(tilgangsstyrteJournalposter).hasSize(1)
+ val tilgangsstyrtJournalpost = tilgangsstyrteJournalposter.find { it.journalpost.journalpostId == journalpost1.journalpostId && it.harTilgang }
+ assertThat(tilgangsstyrtJournalpost).isNotNull
+ }
+
+ @Test
+ fun `skal mappe om liste av Journalpost til liste av TilgangsstyrtJournalpost med harTilgang satt til false dersom digital søknad og saksbehandler ikke har tilgang til personer i søknad`() {
+ // Arrange
+ val journalpost1 = mockk()
+ val dokumentInfo = mockk()
+
+ every { journalpost1.journalpostId } returns "1"
+ every { journalpost1.tema } returns Tema.KON.name
+ every { journalpost1.harDigitalSøknad(any()) } returns true
+ every { journalpost1.dokumenter } returns listOf(dokumentInfo)
+ every { dokumentInfo.dokumentInfoId } returns "1"
+ every { dokumentInfo.erDigitalSøknad(any()) } returns true
+
+ val søkerFnr = "12345678910"
+ val barnFnr = "12345678911"
+
+ val kontantstøtteSøknad = lagKontantstøtteSøknad(søkerFnr, barnFnr)
+
+ every { baksVersjonertSøknadService.hentBaksSøknadBase(any(), any()) } returns kontantstøtteSøknad
+ every { tilgangskontrollService.sjekkTilgangTilBrukere(any(), any()) } returns listOf(Tilgang(søkerFnr, false), Tilgang(barnFnr, false))
+
+ // Act
+ val tilgangsstyrteJournalposter = baksTilgangsstyrtJournalpostService.mapTilTilgangsstyrteJournalposter(listOf(journalpost1))
+
+ // Assert
+ assertThat(tilgangsstyrteJournalposter).hasSize(1)
+ val tilgangsstyrtJournalpost = tilgangsstyrteJournalposter.find { it.journalpost.journalpostId == journalpost1.journalpostId && !it.harTilgang }
+ assertThat(tilgangsstyrtJournalpost).isNotNull
+ }
+
+ @Test
+ fun `skal mappe om liste av Journalpost til liste av TilgangsstyrtJournalpost med harTilgang satt til true dersom ikke digital søknad`() {
+ // Arrange
+ val journalpost = mockk()
+
+ every { journalpost.journalpostId } returns "1"
+ every { journalpost.tema } returns Tema.BAR.name
+ every { journalpost.harDigitalSøknad(any()) } returns false
+
+ // Act
+ val tilgangsstyrteJournalposter = baksTilgangsstyrtJournalpostService.mapTilTilgangsstyrteJournalposter(listOf(journalpost))
+
+ // Assert
+ assertThat(tilgangsstyrteJournalposter).hasSize(1)
+ val tilgangsstyrtJournalpost = tilgangsstyrteJournalposter.find { it.journalpost.journalpostId == journalpost.journalpostId && it.harTilgang }
+ assertThat(tilgangsstyrtJournalpost).isNotNull
+ }
+
+ @Test
+ fun `skal mappe om liste av Journalpost til liste av TilgangsstyrtJournalpost med harTilgang satt til true dersom tema ikke er satt`() {
+ // Arrange
+ val journalpost = mockk()
+
+ every { journalpost.journalpostId } returns "1"
+ every { journalpost.tema } returns null
+
+ // Act
+ val tilgangsstyrteJournalposter = baksTilgangsstyrtJournalpostService.mapTilTilgangsstyrteJournalposter(listOf(journalpost))
+
+ // Assert
+ assertThat(tilgangsstyrteJournalposter).hasSize(1)
+ val tilgangsstyrtJournalpost = tilgangsstyrteJournalposter.find { it.journalpost.journalpostId == journalpost.journalpostId && it.harTilgang }
+ assertThat(tilgangsstyrtJournalpost).isNotNull
+ }
+
+ @Test
+ fun `skal mappe om liste av Journalpost til liste av TilgangsstyrtJournalpost med harTilgang satt til true dersom digital søknad og feilen UnsupportedVersionException kastes ved deserialisering`() {
+ // Arrange
+ val journalpost = mockk()
+ val dokumentInfo = mockk()
+
+ every { journalpost.journalpostId } returns "1"
+ every { journalpost.tema } returns Tema.KON.name
+ every { journalpost.harDigitalSøknad(any()) } returns true
+ every { journalpost.dokumenter } returns listOf(dokumentInfo)
+
+ every { baksVersjonertSøknadService.hentBaksSøknadBase(any(), any()) } throws MissingVersionException("JSON-String inneholder ikke feltet 'kontraktVersjon'")
+ // Act
+ val tilgangsstyrteJournalposter = baksTilgangsstyrtJournalpostService.mapTilTilgangsstyrteJournalposter(listOf(journalpost))
+
+ // Assert
+ assertThat(tilgangsstyrteJournalposter).hasSize(1)
+ val tilgangsstyrtJournalpost = tilgangsstyrteJournalposter.find { it.journalpost.journalpostId == journalpost.journalpostId && it.harTilgang }
+ assertThat(tilgangsstyrtJournalpost).isNotNull
+ }
+
+ @Test
+ fun `skal mappe om liste av Journalpost til liste av TilgangsstyrtJournalpost med harTilgang satt til false dersom digital søknad og feilen MissingVersionImplementationException kastes ved deserialisering`() {
+ // Arrange
+ val journalpost = mockk()
+ val dokumentInfo = mockk()
+
+ every { journalpost.journalpostId } returns "1"
+ every { journalpost.tema } returns Tema.KON.name
+ every { journalpost.harDigitalSøknad(any()) } returns true
+ every { journalpost.dokumenter } returns listOf(dokumentInfo)
+
+ every { baksVersjonertSøknadService.hentBaksSøknadBase(any(), any()) } throws UnsupportedVersionException("Har ikke implementert støtte for deserialisering av søknadsversjonen")
+ // Act
+ val tilgangsstyrteJournalposter = baksTilgangsstyrtJournalpostService.mapTilTilgangsstyrteJournalposter(listOf(journalpost))
+
+ // Assert
+ assertThat(tilgangsstyrteJournalposter).hasSize(1)
+ val tilgangsstyrtJournalpost = tilgangsstyrteJournalposter.find { it.journalpost.journalpostId == journalpost.journalpostId && !it.harTilgang }
+ assertThat(tilgangsstyrtJournalpost).isNotNull
+ }
+}
diff --git a/src/test/java/no/nav/familie/integrasjoner/journalpost/HentJournalpostControllerTest.kt b/src/test/java/no/nav/familie/integrasjoner/journalpost/HentJournalpostControllerTest.kt
index fd30b8c5..720c091f 100644
--- a/src/test/java/no/nav/familie/integrasjoner/journalpost/HentJournalpostControllerTest.kt
+++ b/src/test/java/no/nav/familie/integrasjoner/journalpost/HentJournalpostControllerTest.kt
@@ -2,10 +2,13 @@ package no.nav.familie.integrasjoner.journalpost
import ch.qos.logback.classic.Logger
import no.nav.familie.integrasjoner.OppslagSpringRunnerTest
+import no.nav.familie.integrasjoner.baks.søknad.lagBarnetrygdSøknad
import no.nav.familie.integrasjoner.felles.graphqlCompatible
import no.nav.familie.integrasjoner.felles.graphqlQuery
import no.nav.familie.integrasjoner.journalpost.internal.SafJournalpostRequest
import no.nav.familie.integrasjoner.journalpost.internal.SafRequestForBruker
+import no.nav.familie.integrasjoner.personopplysning.internal.PdlPersonRequest
+import no.nav.familie.integrasjoner.personopplysning.internal.PdlPersonRequestVariables
import no.nav.familie.kontrakter.felles.BrukerIdType
import no.nav.familie.kontrakter.felles.Ressurs
import no.nav.familie.kontrakter.felles.Tema
@@ -14,6 +17,7 @@ import no.nav.familie.kontrakter.felles.journalpost.Journalpost
import no.nav.familie.kontrakter.felles.journalpost.JournalposterForBrukerRequest
import no.nav.familie.kontrakter.felles.journalpost.Journalposttype
import no.nav.familie.kontrakter.felles.journalpost.Journalstatus
+import no.nav.familie.kontrakter.felles.journalpost.TilgangsstyrtJournalpost
import no.nav.familie.kontrakter.felles.journalpost.Utsendingsmåte
import no.nav.familie.kontrakter.felles.journalpost.VarselType
import no.nav.familie.kontrakter.felles.objectMapper
@@ -40,7 +44,7 @@ import org.springframework.test.context.ActiveProfiles
import org.springframework.web.util.UriComponentsBuilder
import java.time.LocalDateTime
-@ActiveProfiles("integrasjonstest", "mock-sts", "mock-oauth")
+@ActiveProfiles("integrasjonstest", "mock-sts", "mock-oauth", "mock-egenansatt-false")
@ExtendWith(MockServerExtension::class)
@MockServerSettings(ports = [OppslagSpringRunnerTest.MOCK_SERVER_PORT])
class HentJournalpostControllerTest(
@@ -50,6 +54,7 @@ class HentJournalpostControllerTest(
private lateinit var uriHentSaksnummer: String
private lateinit var uriHentJournalpost: String
+ private lateinit var uriHentTilgangsstyrtJournalpost: String
private lateinit var uriHentDokument: String
@BeforeEach
@@ -67,6 +72,11 @@ class HentJournalpostControllerTest(
.fromHttpUrl(localhost(JOURNALPOST_BASE_URL))
.queryParam("journalpostId", JOURNALPOST_ID)
.toUriString()
+ uriHentTilgangsstyrtJournalpost =
+ UriComponentsBuilder
+ .fromHttpUrl(localhost(JOURNALPOST_BASE_URL) + "/tilgangsstyrt/baks")
+ .queryParam("journalpostId", JOURNALPOST_ID)
+ .toUriString()
uriHentDokument = localhost(JOURNALPOST_BASE_URL) + "/hentdokument/$JOURNALPOST_ID/$DOKUMENTINFO_ID"
}
@@ -81,7 +91,7 @@ class HentJournalpostControllerTest(
.withBody(gyldigJournalPostIdRequest()),
).respond(
response()
- .withBody(json(lesFil("gyldigjournalpostresponse.json")))
+ .withBody(json(lesFil("saf/gyldigjournalpostresponse.json")))
.withHeaders(Header("Content-Type", "application/json")),
)
@@ -108,7 +118,7 @@ class HentJournalpostControllerTest(
.withMethod("POST")
.withPath("/rest/saf/graphql")
.withBody(objectMapper.writeValueAsString(gyldigBrukerRequest())),
- ).respond(response().withBody(json(lesFil("gyldigJournalposterResponse.json"))))
+ ).respond(response().withBody(json(lesFil("saf/gyldigJournalposterResponse.json"))))
val response: ResponseEntity>> =
restTemplate.exchange(
@@ -159,6 +169,84 @@ class HentJournalpostControllerTest(
assertThat(utsendingsinfo.varselSendt.first().type).isEqualTo(VarselType.SMS)
}
+ @Test
+ fun `hentTilgangsstyrteJournalposterForBruker skal returnere tilgangsstyrte journalposter og status ok`() {
+ val barnetrygdSøknad = lagBarnetrygdSøknad("12345678910", "12345678911")
+ client
+ .`when`(
+ HttpRequest
+ .request()
+ .withMethod("POST")
+ .withPath("/rest/saf/graphql")
+ .withBody(objectMapper.writeValueAsString(gyldigBrukerRequest())),
+ ).respond(response().withBody(json(lesFil("saf/gyldigJournalposterResponseBarnetrygd.json"))))
+
+ client
+ .`when`(
+ HttpRequest
+ .request()
+ .withMethod("GET")
+ .withPath("/soknad/hent-personer-i-digital-soknad/BAR/453492634"),
+ ).respond(response().withBody(json(lesFil("mottak/gyldigPersonerIDigitalSøknadResponse.json"))))
+
+ client
+ .`when`(
+ HttpRequest
+ .request()
+ .withMethod("POST")
+ .withPath("/rest/pdl/graphql")
+ .withBody(objectMapper.writeValueAsString(gyldigPdlPersonRequest("12345678910"))),
+ ).respond(response().withBody(json(lesFil("pdl/pdlAdressebeskyttelseResponse.json"))))
+
+ client
+ .`when`(
+ HttpRequest
+ .request()
+ .withMethod("POST")
+ .withPath("/rest/pdl/graphql")
+ .withBody(objectMapper.writeValueAsString(gyldigPdlPersonRequest("12345678911"))),
+ ).respond(response().withBody(json(lesFil("pdl/pdlAdressebeskyttelseResponse.json"))))
+
+ client
+ .`when`(
+ HttpRequest
+ .request()
+ .withMethod("GET")
+ .withPath("/rest/saf/rest/hentdokument/453492634/453871494/ORIGINAL"),
+ ).respond(HttpResponse().withBody(objectMapper.writeValueAsBytes(barnetrygdSøknad)).withHeaders(Header("Content-Type", "application/json")))
+
+ val response: ResponseEntity>> =
+ restTemplate.exchange(
+ uriHentTilgangsstyrtJournalpost,
+ HttpMethod.POST,
+ HttpEntity(
+ JournalposterForBrukerRequest(
+ Bruker("12345678901", BrukerIdType.FNR),
+ 10,
+ listOf(Tema.BAR),
+ listOf(Journalposttype.I),
+ ),
+ headers,
+ ),
+ )
+
+ assertThat(response.statusCode).isEqualTo(HttpStatus.OK)
+ assertThat(response.body?.status).isEqualTo(Ressurs.Status.SUKSESS)
+ assertThat(
+ response.body
+ ?.data
+ ?.first()
+ ?.journalpost
+ ?.journalpostId,
+ ).isEqualTo("453492634")
+ assertThat(
+ response.body
+ ?.data
+ ?.first()
+ ?.harTilgang,
+ ).isEqualTo(true)
+ }
+
@Test
fun `hent dokument skal returnere dokument og status ok`() {
client
@@ -180,10 +268,10 @@ class HentJournalpostControllerTest(
}
private fun gyldigJournalPostIdRequest(): String =
- lesFil("gyldigJournalpostIdRequest.json")
+ lesFil("saf/gyldigJournalpostIdRequest.json")
.replace(
"GRAPHQL-PLACEHOLDER",
- lesFil("journalpostForId.graphql").graphqlCompatible(),
+ lesFil("saf/journalpostForId.graphql").graphqlCompatible(),
)
private fun gyldigBrukerRequest(): SafJournalpostRequest =
@@ -198,7 +286,13 @@ class HentJournalpostControllerTest(
graphqlQuery("/saf/journalposterForBruker.graphql"),
)
- private fun lesFil(filnavn: String): String = ClassPathResource("saf/$filnavn").url.readText()
+ private fun gyldigPdlPersonRequest(ident: String): PdlPersonRequest =
+ PdlPersonRequest(
+ variables = PdlPersonRequestVariables(ident),
+ query = graphqlQuery("/pdl/adressebeskyttelse.graphql"),
+ )
+
+ private fun lesFil(path: String): String = ClassPathResource(path).url.readText()
companion object {
const val JOURNALPOST_ID = "12345678"
diff --git a/src/test/java/no/nav/familie/integrasjoner/journalpost/JournalpostServiceTest.kt b/src/test/java/no/nav/familie/integrasjoner/journalpost/JournalpostServiceTest.kt
new file mode 100644
index 00000000..b3e02438
--- /dev/null
+++ b/src/test/java/no/nav/familie/integrasjoner/journalpost/JournalpostServiceTest.kt
@@ -0,0 +1,49 @@
+package no.nav.familie.integrasjoner.journalpost
+
+import io.mockk.every
+import io.mockk.mockk
+import io.mockk.verify
+import no.nav.familie.integrasjoner.client.rest.SafHentDokumentRestClient
+import no.nav.familie.integrasjoner.client.rest.SafRestClient
+import no.nav.familie.kontrakter.felles.BrukerIdType
+import no.nav.familie.kontrakter.felles.Tema
+import no.nav.familie.kontrakter.felles.journalpost.Bruker
+import no.nav.familie.kontrakter.felles.journalpost.Journalpost
+import no.nav.familie.kontrakter.felles.journalpost.JournalposterForBrukerRequest
+import no.nav.familie.kontrakter.felles.journalpost.TilgangsstyrtJournalpost
+import org.junit.jupiter.api.Nested
+import org.junit.jupiter.api.Test
+
+class JournalpostServiceTest {
+ private val safRestClient: SafRestClient = mockk()
+
+ private val safHentDokumentRestClient: SafHentDokumentRestClient = mockk()
+
+ private val baksTilgangsstyrtJournalpostService: BaksTilgangsstyrtJournalpostService = mockk()
+
+ private val journalpostService =
+ JournalpostService(
+ safRestClient = safRestClient,
+ safHentDokumentRestClient = safHentDokumentRestClient,
+ baksTilgangsstyrtJournalpostService = baksTilgangsstyrtJournalpostService,
+ )
+
+ @Nested
+ inner class FinnTilgangsstyrteJournalposter {
+ @Test
+ fun`skal hente journalposter fra saf og deretter mappe om lista til tilgangsstyrte journalposter`() {
+ // Arrange
+ val journalposterForBrukerRequest = JournalposterForBrukerRequest(brukerId = Bruker("1", BrukerIdType.FNR), antall = 100, tema = listOf(Tema.BAR))
+ val journalposter = listOf(mockk())
+ every { safRestClient.finnJournalposter(journalposterForBrukerRequest) } returns journalposter
+ every { baksTilgangsstyrtJournalpostService.mapTilTilgangsstyrteJournalposter(journalposter) } returns listOf(mockk())
+
+ // Act
+ journalpostService.finnTilgangsstyrteBaksJournalposter(journalposterForBrukerRequest)
+
+ // Assert
+ verify(exactly = 1) { safRestClient.finnJournalposter(journalposterForBrukerRequest) }
+ verify(exactly = 1) { baksTilgangsstyrtJournalpostService.mapTilTilgangsstyrteJournalposter(journalposter) }
+ }
+ }
+}
diff --git "a/src/test/resources/mottak/gyldigPersonerIDigitalS\303\270knadResponse.json" "b/src/test/resources/mottak/gyldigPersonerIDigitalS\303\270knadResponse.json"
new file mode 100644
index 00000000..45446d38
--- /dev/null
+++ "b/src/test/resources/mottak/gyldigPersonerIDigitalS\303\270knadResponse.json"
@@ -0,0 +1,4 @@
+[
+ "12345678910",
+ "12345678911"
+]
\ No newline at end of file
diff --git a/src/test/resources/saf/gyldigJournalposterResponseBarnetrygd.json b/src/test/resources/saf/gyldigJournalposterResponseBarnetrygd.json
new file mode 100644
index 00000000..57c6b8d2
--- /dev/null
+++ b/src/test/resources/saf/gyldigJournalposterResponseBarnetrygd.json
@@ -0,0 +1,43 @@
+{
+ "data": {
+ "dokumentoversiktBruker": {
+ "journalposter": [
+ {
+ "journalpostId": "453492634",
+ "journalposttype": "I",
+ "journalstatus": "JOURNALFOERT",
+ "tema": "BAR",
+ "kanal": "NAV_NO",
+ "dokumenter": [
+ {
+ "dokumentInfoId": "453871494",
+ "tittel": "Søknad om ordinær barnetrygd",
+ "brevkode": "NAV 33-00.07",
+ "dokumentstatus": null,
+ "dokumentvarianter": [
+ {
+ "variantformat": "ARKIV"
+ }
+ ],
+ "logiskeVedlegg": []
+ }
+ ],
+ "relevanteDatoer": [
+ {
+ "dato": "2020-01-31T08:00:17",
+ "datotype": "DATO_DOKUMENT"
+ },
+ {
+ "dato": "2020-03-11T09:09:15",
+ "datotype": "DATO_JOURNALFOERT"
+ },
+ {
+ "dato": "2020-01-31T08:00:17",
+ "datotype": "DATO_REGISTRERT"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}