Skip to content

Commit

Permalink
Oppretter endepunkt for oppslag av jp og fagsakid basert på jp (#4903)
Browse files Browse the repository at this point in the history
Favrokort:
https://favro.com/organization/98c34fb974ce445eac854de0/1844bbac3b6605eacc8f5543?card=NAV-21033

Vi oppretter forvalterendepunkt for oppslag av jp og fagsakid basert på
jp.
Dette erstatter ønsket funksjonalitet fra journalpost tabellen.
  • Loading branch information
UyQuangNguyen authored Nov 20, 2024
1 parent 78c20bb commit e4389cd
Show file tree
Hide file tree
Showing 6 changed files with 296 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ import no.nav.familie.ba.sak.sikkerhet.TilgangService
import no.nav.familie.ba.sak.statistikk.stønadsstatistikk.StønadsstatistikkService
import no.nav.familie.ba.sak.task.GrensesnittavstemMotOppdrag
import no.nav.familie.ba.sak.task.HentAlleIdenterTilPsysTask
import no.nav.familie.ba.sak.task.LogFagsakIdForJournalpostTask
import no.nav.familie.ba.sak.task.LogJournalpostIdForFagsakTask
import no.nav.familie.ba.sak.task.MaskineltUnderkjennVedtakTask
import no.nav.familie.ba.sak.task.OppdaterLøpendeFlagg
import no.nav.familie.ba.sak.task.OpprettTaskService
Expand Down Expand Up @@ -526,4 +528,40 @@ class ForvalterController(

return ResponseEntity.ok(hentAlleIdenterTilPsysTask.hentAlleIdenterMedBarnetrygd(aar.toInt(), UUID.randomUUID()))
}

@PostMapping("/hent-fagsak-id-for-journalpost")
@Operation(
summary = "Henter fagsak id som er koblet til journalposten",
description = "Oppretter task for å logge fagsak id som er koblet til journalpost. Fagsak id'n logges til securelog.",
)
fun hentFagsakIdForJournalpost(
@RequestParam("journalpostId") journalpostId: String,
): ResponseEntity<Long> {
tilgangService.verifiserHarTilgangTilHandling(
minimumBehandlerRolle = BehandlerRolle.FORVALTER,
handling = "hente data til test",
)

val opprettetTask = taskRepository.save(LogFagsakIdForJournalpostTask.opprettTask(journalpostId))

return ResponseEntity.ok(opprettetTask.id)
}

@PostMapping("/hent-journalpost-id-for-fagsak")
@Operation(
summary = "Henter journalpost ider koblet til fagsaken",
description = "Oppretter task for å logge journalpost id som er koblet til en fagsak. Journalpost ider logges til securelog.",
)
fun hentJournalpostIdForFagsak(
@RequestParam("fagsakId") fagsakId: String,
): ResponseEntity<Long> {
tilgangService.verifiserHarTilgangTilHandling(
minimumBehandlerRolle = BehandlerRolle.FORVALTER,
handling = "hente data til test",
)

val opprettetTask = taskRepository.save(LogJournalpostIdForFagsakTask.opprettTask(fagsakId))

return ResponseEntity.ok(opprettetTask.id)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package no.nav.familie.ba.sak.task

import no.nav.familie.ba.sak.common.Feil
import no.nav.familie.ba.sak.common.convertDataClassToJson
import no.nav.familie.ba.sak.integrasjoner.familieintegrasjoner.IntegrasjonClient
import no.nav.familie.ba.sak.task.LogFagsakIdForJournalpostTask.Companion.TASK_STEP_TYPE
import no.nav.familie.prosessering.AsyncTaskStep
import no.nav.familie.prosessering.TaskStepBeskrivelse
import no.nav.familie.prosessering.domene.Task
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Service

@Service
@TaskStepBeskrivelse(
taskStepType = TASK_STEP_TYPE,
beskrivelse = "Logger fagsak id for journalpost i secure logs",
maxAntallFeil = 1,
)
class LogFagsakIdForJournalpostTask(
val integrasjonClient: IntegrasjonClient,
) : AsyncTaskStep {
override fun doTask(task: Task) {
val secureLogger = LoggerFactory.getLogger("secureLogger")

val journalpostId = task.payload

secureLogger.info("Henter journalpost m/ id $journalpostId for oppslag av fagsak id")

val journalpost = integrasjonClient.hentJournalpost(journalpostId)

journalpost.sak?.let { secureLogger.info(it.convertDataClassToJson()) } ?: throw Feil("Fant ikke fagsak informasjon i journalpost $journalpostId")
}

companion object {
const val TASK_STEP_TYPE = "logFagsakIdForJournalpost"

fun opprettTask(
journalpostId: String,
): Task =
Task(
type = TASK_STEP_TYPE,
payload = journalpostId,
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package no.nav.familie.ba.sak.task

import no.nav.familie.ba.sak.common.Feil
import no.nav.familie.ba.sak.integrasjoner.familieintegrasjoner.IntegrasjonClient
import no.nav.familie.ba.sak.kjerne.fagsak.FagsakRepository
import no.nav.familie.ba.sak.task.LogJournalpostIdForFagsakTask.Companion.TASK_STEP_TYPE
import no.nav.familie.kontrakter.felles.BrukerIdType
import no.nav.familie.kontrakter.felles.journalpost.Bruker
import no.nav.familie.kontrakter.felles.journalpost.JournalposterForBrukerRequest
import no.nav.familie.prosessering.AsyncTaskStep
import no.nav.familie.prosessering.TaskStepBeskrivelse
import no.nav.familie.prosessering.domene.Task
import org.slf4j.LoggerFactory
import org.springframework.stereotype.Service

@Service
@TaskStepBeskrivelse(
taskStepType = TASK_STEP_TYPE,
beskrivelse = "Logger journalpost id for fagsak i secure logs",
maxAntallFeil = 1,
)
class LogJournalpostIdForFagsakTask(
val integrasjonClient: IntegrasjonClient,
val fagsakRepository: FagsakRepository,
) : AsyncTaskStep {
override fun doTask(task: Task) {
val secureLogger = LoggerFactory.getLogger("secureLogger")

val fagsakId = task.payload
val fagsak =
fagsakRepository.finnFagsak(fagsakId.toLong())
?: throw Feil("Fagsak med id $fagsakId ikke funnet ved forsøk på oppslag av journalposter")

secureLogger.info(
"Henter journalpost id'er tilhørende fagsak $fagsakId",
)

val request =
JournalposterForBrukerRequest(
brukerId = Bruker(id = fagsak.aktør.aktivFødselsnummer(), type = BrukerIdType.FNR),
antall = 50,
)

val journalpostIder = integrasjonClient.hentJournalposterForBruker(request).map { it.journalpostId }

secureLogger.info(
"Fant følgende journalposter for fagsak $fagsakId $journalpostIder",
)
}

companion object {
const val TASK_STEP_TYPE = "logJournalpostIdForFagsakTask"

fun opprettTask(
fagsakId: String,
): Task =
Task(
type = TASK_STEP_TYPE,
payload = fagsakId,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ fun lagTestJournalpost(
journalpostId: String,
avsenderMottakerIdType: AvsenderMottakerIdType?,
kanal: String,
sak: Sak? = lagSak(),
): Journalpost =
Journalpost(
journalpostId = journalpostId,
Expand Down Expand Up @@ -71,18 +72,20 @@ fun lagTestJournalpost(
logiskeVedlegg = listOf(LogiskVedlegg("123", "Pass")),
),
),
sak =
Sak(
arkivsaksnummer = "",
arkivsaksystem = "GSAK",
sakstype = Sakstype.FAGSAK.name,
fagsakId = "10695768",
fagsaksystem = FAGSYSTEM,
),
sak = sak,
tittel = "Søknad om ordinær barnetrygd",
relevanteDatoer = listOf(RelevantDato(LocalDateTime.now(), "DATO_REGISTRERT")),
)

private fun lagSak() =
Sak(
arkivsaksnummer = "",
arkivsaksystem = "GSAK",
sakstype = Sakstype.FAGSAK.name,
fagsakId = "10695768",
fagsaksystem = FAGSYSTEM,
)

fun lagTilgangsstyrtJournalpost(
personIdent: String,
journalpostId: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package no.nav.familie.ba.sak.task

import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import no.nav.familie.ba.sak.common.Feil
import no.nav.familie.ba.sak.integrasjoner.familieintegrasjoner.IntegrasjonClient
import no.nav.familie.ba.sak.integrasjoner.lagTestJournalpost
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows

internal class LogFagsakIdForJournalpostTaskTest {
val mockIntegrasjonClient = mockk<IntegrasjonClient>()

val logFagsakIdForJournalpostTask = LogFagsakIdForJournalpostTask(mockIntegrasjonClient)

@Test
fun `Skal hente journalpost og logge ut sak data`() {
// Arrange
val task = LogFagsakIdForJournalpostTask.opprettTask("12345")

val journalpost =
lagTestJournalpost(
personIdent = "12345",
journalpostId = "12345",
avsenderMottakerIdType = null,
kanal = "NAV_NO",
)

every { mockIntegrasjonClient.hentJournalpost("12345") } returns journalpost

// Act
logFagsakIdForJournalpostTask.doTask(task)

// Assert
verify(exactly = 1) { mockIntegrasjonClient.hentJournalpost("12345") }
}

@Test
fun `Skal kaste feil dersom journalpost ikke inneholder sak informasjon`() {
// Arrange
val task = LogFagsakIdForJournalpostTask.opprettTask("12345")

val journalpost =
lagTestJournalpost(
personIdent = "12345",
journalpostId = "12345",
avsenderMottakerIdType = null,
kanal = "NAV_NO",
sak = null,
)

every { mockIntegrasjonClient.hentJournalpost("12345") } returns journalpost

// Act && Assert

val feilmelding =
assertThrows<Feil> {
logFagsakIdForJournalpostTask.doTask(task)
}.message

assertThat(feilmelding).contains("Fant ikke fagsak informasjon i journalpost 12345")

// Assert
verify(exactly = 1) { mockIntegrasjonClient.hentJournalpost("12345") }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package no.nav.familie.ba.sak.task

import io.mockk.every
import io.mockk.mockk
import io.mockk.verify
import no.nav.familie.ba.sak.common.Feil
import no.nav.familie.ba.sak.common.lagFagsak
import no.nav.familie.ba.sak.integrasjoner.familieintegrasjoner.IntegrasjonClient
import no.nav.familie.ba.sak.integrasjoner.lagTestJournalpost
import no.nav.familie.ba.sak.kjerne.fagsak.FagsakRepository
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows

internal class LogJournalpostIdForFagsakTaskTest {
val mockIntegrasjonClient = mockk<IntegrasjonClient>()
val mockFagsakRepository = mockk<FagsakRepository>()

val logJournalpostIdForFagsak = LogJournalpostIdForFagsakTask(mockIntegrasjonClient, mockFagsakRepository)

@Test
fun `Skal kaste feil dersom fagsak med id ikke finnes`() {
// Arrange
val fagsak = lagFagsak()
val task = LogJournalpostIdForFagsakTask.opprettTask(fagsak.id.toString())

every { mockFagsakRepository.finnFagsak(fagsak.id) } returns null

every { mockIntegrasjonClient.hentJournalposterForBruker(any()) } returns
listOf(
lagTestJournalpost(
personIdent = "12345",
journalpostId = "12345",
avsenderMottakerIdType = null,
kanal = "NAV_NO",
),
)

// Act && Assert
val feilmelding =
assertThrows<Feil> {
logJournalpostIdForFagsak.doTask(task)
}.message

assertThat(feilmelding).contains("Fagsak med id ${fagsak.id} ikke funnet ved forsøk på oppslag av journalposter")
}

@Test
fun `Skal logge journalpost ider tilhørende fagsak`() {
// Arrange
val fagsak = lagFagsak()
val task = LogJournalpostIdForFagsakTask.opprettTask(fagsak.id.toString())

every { mockFagsakRepository.finnFagsak(fagsak.id) } returns fagsak

every { mockIntegrasjonClient.hentJournalposterForBruker(any()) } returns
listOf(
lagTestJournalpost(
personIdent = "12345",
journalpostId = "12345",
avsenderMottakerIdType = null,
kanal = "NAV_NO",
),
)

// Act
logJournalpostIdForFagsak.doTask(task)

// Assert
verify(exactly = 1) { mockIntegrasjonClient.hentJournalposterForBruker(any()) }
}
}

0 comments on commit e4389cd

Please sign in to comment.