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

Bug/fixed pdf service test #1162

Closed
wants to merge 9 commits into from
Closed
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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,6 @@ ktlint

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

#Spire
/spireTestPdfer/*.pdf
1 change: 1 addition & 0 deletions spireTestPdfer/test.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Denne filen er her for å commite mappen til git
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package no.nav.familie.ef.mottak.api

import no.nav.familie.ef.mottak.service.PdfService
import no.nav.security.token.support.core.api.Unprotected
import org.springframework.http.MediaType
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
@RequestMapping(path = ["/api/spireTest"], produces = [MediaType.APPLICATION_JSON_VALUE])
class SpireTestController(
private val pdfService: PdfService,
) {
@GetMapping("skrivSistePdfTilFil")
@Unprotected
fun skrivSistePdfTilFil(): String = pdfService.skrivSistePdfTilFil()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package no.nav.familie.ef.mottak.integration

import no.nav.familie.ef.mottak.util.medContentTypeJsonUTF8
import no.nav.familie.http.client.AbstractRestClient
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.http.HttpHeaders
import org.springframework.stereotype.Service
import org.springframework.web.client.RestOperations
import org.springframework.web.util.DefaultUriBuilderFactory

@Service
class SpirePdfClient(
@Qualifier("restTemplateUnsecured") operations: RestOperations,
) : AbstractRestClient(operations, "pdf") {
fun lagFeltMapPdf(feltMap: Map<String, Any>): ByteArray {
val sendInnUri = DefaultUriBuilderFactory().uriString("http://localhost:8083").path("api/generate-pdf").build()
return postForEntity(sendInnUri, feltMap, HttpHeaders().medContentTypeJsonUTF8())
}
}
17 changes: 16 additions & 1 deletion src/main/kotlin/no/nav/familie/ef/mottak/service/PdfService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import no.nav.familie.ef.mottak.config.DOKUMENTTYPE_OVERGANGSSTØNAD
import no.nav.familie.ef.mottak.config.DOKUMENTTYPE_SKJEMA_ARBEIDSSØKER
import no.nav.familie.ef.mottak.config.DOKUMENTTYPE_SKOLEPENGER
import no.nav.familie.ef.mottak.integration.PdfClient
import no.nav.familie.ef.mottak.integration.SpirePdfClient
import no.nav.familie.ef.mottak.mapper.SøknadMapper
import no.nav.familie.ef.mottak.repository.EttersendingRepository
import no.nav.familie.ef.mottak.repository.SøknadRepository
Expand All @@ -18,23 +19,33 @@ import no.nav.familie.kontrakter.ef.søknad.SøknadOvergangsstønad
import no.nav.familie.kontrakter.ef.søknad.SøknadSkolepenger
import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service
import java.io.File
import java.time.LocalDateTime

@Service
class PdfService(
private val søknadRepository: SøknadRepository,
private val ettersendingRepository: EttersendingRepository,
private val vedleggRepository: VedleggRepository,
private val pdfClient: PdfClient,
private val spirePdfClient: SpirePdfClient,
) {
fun lagPdf(id: String) {
val innsending = søknadRepository.findByIdOrNull(id) ?: error("Kunne ikke finne søknad ($id) i database")
val vedleggTitler = vedleggRepository.finnTitlerForSøknadId(id).sorted()
val feltMap = lagFeltMap(innsending, vedleggTitler)
val søknadPdf = pdfClient.lagPdf(feltMap)
val søknadPdf = spirePdfClient.lagFeltMapPdf(feltMap)
val oppdatertSoknad = innsending.copy(søknadPdf = EncryptedFile(søknadPdf))
søknadRepository.update(oppdatertSoknad)
}

fun skrivSistePdfTilFil(): String {
søknadRepository.finnSisteLagredeSøknad().søknadPdf?.bytes?.let {
File("spireTestPdfer/søknad${LocalDateTime.now()}.pdf").writeBytes(it)
} ?: "Fant ingen pdf å skrive til fil"
return "Ok"
}

private fun lagFeltMap(
innsending: Søknad,
vedleggTitler: List<String>,
Expand All @@ -44,18 +55,22 @@ class PdfService(
val dto = SøknadMapper.toDto<SøknadOvergangsstønad>(innsending)
SøknadTreeWalker.mapOvergangsstønad(dto, vedleggTitler)
}

DOKUMENTTYPE_BARNETILSYN -> {
val dto = SøknadMapper.toDto<SøknadBarnetilsyn>(innsending)
SøknadTreeWalker.mapBarnetilsyn(dto, vedleggTitler)
}

DOKUMENTTYPE_SKJEMA_ARBEIDSSØKER -> {
val dto = SøknadMapper.toDto<SkjemaForArbeidssøker>(innsending)
SøknadTreeWalker.mapSkjemafelter(dto)
}

DOKUMENTTYPE_SKOLEPENGER -> {
val dto = SøknadMapper.toDto<SøknadSkolepenger>(innsending)
SøknadTreeWalker.mapSkolepenger(dto, vedleggTitler)
}

else -> {
error("Ukjent eller manglende dokumenttype id: ${innsending.id}")
}
Expand Down
254 changes: 254 additions & 0 deletions src/test/endepunkter.http
Original file line number Diff line number Diff line change
@@ -0,0 +1,254 @@
@søknad-frontend=http://localhost:3000
@familie-mottak=http://localhost:8092

#### Skriv pdf til fil
GET {{familie-mottak}}/api/spireTest/skrivSistePdfTilFil

#### Create fake request
POST {{søknad-frontend}}/familie/alene-med-barn/soknad/api/api/soknad
Content-Type: application/json

{
"person": {
"søker": {
"fnr": "31458931375",
"alder": 35,
"forkortetNavn": "Fornavn mellomnavn Etternavn",
"adresse": {
"adresse": "Charlies vei 13 b",
"postnummer": "0575",
"poststed": "Oslo"
},
"egenansatt": false,
"sivilstand": "SKILT",
"statsborgerskap": "Norge, Norge",
"erStrengtFortrolig": false
},
"barn": [
{
"id": "ab4f96f1-de64-45e7-9a8b-24ab450b2c90",
"født": {
"label": "Født",
"verdi": true
},
"navn": {
"label": "Navn",
"verdi": "Hei På Deg"
},
"alder": {
"label": "Alder",
"verdi": 0
},
"fødselsdato": {
"label": "Fødselsdato",
"verdi": "2024-03-24"
},
"harSammeAdresse": {
"label": "Har barnet samme adresse som deg?",
"verdi": true
},
"medforelder": {
"label": "Annen forelder",
"verdi": {
"navn": "Bjørn Borg Borgersen",
"harAdressesperre": false,
"død": false,
"ident": "21079940337",
"alder": 25
}
},
"harAdressesperre": false,
"ident": {
"label": "Fødselsnummer eller d-nummer",
"verdi": "28021078036"
},
"forelder": {
"navn": {
"label": "Navn",
"verdi": "Bjørn Borg Borgersen"
},
"ident": {
"label": "Fødselsnummer eller d-nummer",
"verdi": "21079940337"
},
"alder": {
"label": "Alder",
"verdi": 25
},
"død": false,
"id": "342a6b1f-903d-4e6c-9b20-5bc49dd0de08",
"fraFolkeregister": true,
"kanIkkeOppgiAnnenForelderFar": {
"label": "Jeg kan ikke oppgi den andre forelderen",
"verdi": false
},
"borINorge": {
"spørsmålid": "borINorge",
"svarid": "JA",
"label": "Bor Hei På Degs andre forelder i Norge?",
"verdi": true
},
"avtaleOmDeltBosted": {
"spørsmålid": "avtaleOmDeltBosted",
"svarid": "NEI",
"label": "Har du og den andre forelderen skriftlig avtale om delt fast bosted for Hei På Deg?",
"verdi": false
},
"harAnnenForelderSamværMedBarn": {
"spørsmålid": "harAnnenForelderSamværMedBarn",
"svarid": "nei",
"label": "Har den andre forelderen samvær med Hei På Deg?",
"verdi": "Nei, den andre forelderen har ikke samvær med barnet"
},
"borAnnenForelderISammeHus": {
"spørsmålid": "borAnnenForelderISammeHus",
"svarid": "vetikke",
"label": "Bor du og den andre forelderen til Hei På Deg i samme hus, blokk, gårdstun, kvartal eller vei/gate?",
"verdi": "Jeg vet ikke hvor den andre forelderen bor"
},
"boddSammenFør": {
"spørsmålid": "boddSammenFør",
"svarid": "JA",
"label": "Har du bodd sammen med den andre forelderen til Hei På Deg før?",
"verdi": true
},
"flyttetFra": {
"label": "Når flyttet dere fra hverandre?",
"verdi": "2024-09-02"
},
"hvorMyeSammen": {
"spørsmålid": "hvorMyeSammen",
"svarid": "møtesIkke",
"label": "Hvor mye er du sammen med den andre forelderen til Hei På Deg?",
"verdi": "Vi møtes ikke"
}
}
}
],
"hash": "-1439071744"
},
"sivilstatus": {
"erUformeltGift": {
"spørsmålid": "erUformeltGift",
"svarid": "NEI",
"label": "Er du gift uten at det er registrert i folkeregisteret i Norge?",
"verdi": false
},
"erUformeltSeparertEllerSkilt": {
"spørsmålid": "erUformeltSeparertEllerSkilt",
"svarid": "NEI",
"label": "Er du separert eller skilt uten at dette er registrert i folkeregisteret i Norge?",
"verdi": false
},
"årsakEnslig": {
"spørsmålid": "årsakEnslig",
"svarid": "samlivsbruddForeldre",
"label": "Hvorfor er du alene med barn?",
"verdi": "Samlivsbrudd med den andre forelderen"
},
"datoForSamlivsbrudd": {
"label": "Dato for samlivsbrudd",
"verdi": "2024-09-02"
}
},
"medlemskap": {
"søkerOppholderSegINorge": {
"label": "Oppholder du og barnet/barna dere i Norge?",
"verdi": true
},
"søkerBosattINorgeSisteTreÅr": {
"label": "Har du oppholdt deg i Norge de siste 5 årene?",
"verdi": true
}
},
"bosituasjon": {
"delerBoligMedAndreVoksne": {
"spørsmålid": "delerBoligMedAndreVoksne",
"svarid": "borAleneMedBarnEllerGravid",
"label": "Deler du bolig med andre voksne?",
"verdi": "Nei, jeg bor alene med barn eller jeg er gravid og bor alene"
},
"skalGifteSegEllerBliSamboer": {
"spørsmålid": "skalGifteSegEllerBliSamboer",
"svarid": "NEI",
"label": "Har du konkrete planer om å gifte deg eller bli samboer?",
"verdi": false
}
},
"aktivitet": {
"hvaErDinArbeidssituasjon": {
"spørsmålid": "hvaErDinArbeidssituasjon",
"svarid": [
"erArbeidstakerOgEllerLønnsmottakerFrilanser"
],
"label": "Hvordan er situasjonen din?",
"verdi": [
"Jeg er arbeidstaker (og/eller lønnsmottaker som frilanser)"
]
},
"arbeidsforhold": [
{
"id": "e0eb55fb-cca8-4401-bef0-c29255081e2e",
"navn": {
"label": "Navn på arbeidssted",
"verdi": "Tull as"
},
"arbeidsmengde": {
"label": "Hvor mye jobber du?",
"verdi": "90"
},
"ansettelsesforhold": {
"spørsmålid": "ansettelsesforhold",
"svarid": "fast",
"label": "Hva slags ansettelsesforhold har du?",
"verdi": "Fast stilling"
}
}
]
},
"merOmDinSituasjon": {
"gjelderDetteDeg": {
"spørsmålid": "gjelderDetteDeg",
"svarid": [
"nei"
],
"label": "Gjelder noe av dette deg?",
"verdi": [
"Nei"
],
"alternativer": [
"Jeg er syk",
"Barnet mitt er sykt",
"Jeg har søkt om barnepass, men ikke fått plass enda",
"Jeg har barn som trenger særlig tilsyn på grunn av fysiske, psykiske eller store sosiale problemer",
"Nei"
]
},
"søkerFraBestemtMåned": {
"spørsmålid": "søkerFraBestemtMåned",
"svarid": "neiNavKanVurdere",
"label": "Søker du overgangsstønad fra en bestemt måned?",
"verdi": false
}
},
"dokumentasjonsbehov": [
{
"id": "SAMLIVSBRUDD",
"spørsmålid": "årsakEnslig",
"svarid": "samlivsbruddForeldre",
"label": "Bekreftelse på samlivsbrudd med den andre forelderen",
"tittel": "dokumentasjon.begrunnelse.tittel",
"beskrivelse": "dokumentasjon.begrunnelse.beskrivelse",
"harSendtInn": false
}
],
"harBekreftet": true,
"datoPåbegyntSøknad": "2024-09-24",
"søkerBorPåRegistrertAdresse": {
"spørsmålid": "søkerBorPåRegistrertAdresse",
"svarid": "JA",
"label": "Bor du på denne adressen?",
"verdi": true
},
"locale": "nb"
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import no.nav.familie.ef.mottak.config.DOKUMENTTYPE_OVERGANGSSTØNAD
import no.nav.familie.ef.mottak.config.DOKUMENTTYPE_SKOLEPENGER
import no.nav.familie.ef.mottak.encryption.EncryptedString
import no.nav.familie.ef.mottak.integration.PdfClient
import no.nav.familie.ef.mottak.integration.SpirePdfClient
import no.nav.familie.ef.mottak.repository.EttersendingRepository
import no.nav.familie.ef.mottak.repository.SøknadRepository
import no.nav.familie.ef.mottak.repository.VedleggRepository
Expand All @@ -27,7 +28,8 @@ internal class PdfServiceTest {
private val vedleggRepository: VedleggRepository = mockk()
private val ettersendingRepository: EttersendingRepository = mockk()
private val pdfClient: PdfClient = mockk()
private val pdfService: PdfService = PdfService(søknadRepository, ettersendingRepository, vedleggRepository, pdfClient)
private val spirePdfClient: SpirePdfClient = mockk()
private val pdfService: PdfService = PdfService(søknadRepository, ettersendingRepository, vedleggRepository, pdfClient, spirePdfClient)

private val pdf = EncryptedFile("321".toByteArray())
private val søknadOvergangsstønadId = "søknadOvergangsstønadId"
Expand Down Expand Up @@ -73,6 +75,7 @@ internal class PdfServiceTest {
vedleggRepository.finnTitlerForSøknadId(any())
} returns vedlegg.map { it.tittel }
pdfClientVilReturnere(pdf)
every { spirePdfClient.lagFeltMapPdf(any()) } answers { byteArrayOf(51,50,49) }
}

@Test
Expand Down
Loading