Skip to content

Commit

Permalink
chore: fixed tests
Browse files Browse the repository at this point in the history
Co-authored-by: Andreas <[email protected]>
  • Loading branch information
jaflaten and andreasDev committed Dec 6, 2024
1 parent 711f832 commit d0d8452
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 69 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import no.nav.syfo.service.toSykmelding
import no.nav.sykdig.LoggingMeta
import no.nav.sykdig.applog
import no.nav.sykdig.digitalisering.felles.AvsenderSystem
import no.nav.sykdig.digitalisering.felles.Behandler
import no.nav.sykdig.digitalisering.felles.KontaktMedPasient
import no.nav.sykdig.digitalisering.felles.Sykmelding
import no.nav.sykdig.digitalisering.ferdigstilling.mapping.extractHelseOpplysningerArbeidsuforhet
Expand All @@ -16,25 +15,29 @@ import no.nav.sykdig.digitalisering.helsenett.SykmelderService
import no.nav.sykdig.digitalisering.papirsykmelding.api.model.Godkjenning
import no.nav.sykdig.digitalisering.papirsykmelding.api.model.SmRegistreringManuell
import no.nav.sykdig.digitalisering.papirsykmelding.api.model.Sykmelder
import no.nav.sykdig.digitalisering.papirsykmelding.api.model.Veileder
import no.nav.sykdig.digitalisering.papirsykmelding.db.model.NasjonalManuellOppgaveDAO
import no.nav.sykdig.digitalisering.pdl.PersonService
import no.nav.sykdig.digitalisering.sykmelding.Merknad
import no.nav.sykdig.digitalisering.sykmelding.ReceivedSykmelding
import no.nav.sykdig.securelog
import no.nav.sykdig.utils.getLocalDateTime
import no.nav.sykdig.utils.mapsmRegistreringManuelltTilFellesformat
import org.springframework.security.core.context.SecurityContextHolder
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken
import org.springframework.stereotype.Service
import java.time.LocalDateTime

@Service
class NasjonalCommon(
class NasjonalCommonService(
private val sykmelderService: SykmelderService,
private val personService: PersonService,
) {

val log = applog()
val securelog = securelog()


suspend fun createReceivedSykmelding(sykmeldingId: String, oppgave: NasjonalManuellOppgaveDAO, loggingMeta: LoggingMeta, smRegistreringManuell: SmRegistreringManuell, callId: String, sykmelder: Sykmelder): ReceivedSykmelding {
log.info("Henter pasient fra PDL {} ", loggingMeta)
val pasient =
Expand Down Expand Up @@ -122,7 +125,15 @@ class NasjonalCommon(
verdi
}
}
fun getNavIdent(): Veileder {
val authentication = SecurityContextHolder.getContext().authentication as JwtAuthenticationToken
return Veileder(authentication.token.claims["NAVident"].toString())
}

fun getNavEmail(): String {
val authentication = SecurityContextHolder.getContext().authentication as JwtAuthenticationToken
return authentication.token.claims["preferred_username"].toString()
}
private fun toSykmelding(sykmeldingId: String, oppgave: NasjonalManuellOppgaveDAO): Sykmelding {
requireNotNull(oppgave.papirSmRegistrering.aktorId) { "PapirSmRegistrering.aktorId er null" }
requireNotNull(oppgave.papirSmRegistrering.medisinskVurdering) { "PapirSmRegistrering.medisinskVurdering er null" }
Expand Down Expand Up @@ -158,4 +169,4 @@ class NasjonalCommon(
navnFastlege = "Fastlege navn", //TODO
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ import java.util.*
class NasjonalOppgaveService(
private val nasjonalOppgaveRepository: NasjonalOppgaveRepository,
private val oppgaveClient: OppgaveClient,
private val oppgaveSecurityService: OppgaveSecurityService,
private val personService: PersonService,
private val ferdigstillingService: FerdigstillingService,
private val smregistreringClient: SmregistreringClient,
private val nasjonalCommonService: NasjonalCommonService,
) {
val log = applog()
val securelog = securelog()
Expand All @@ -57,24 +57,6 @@ class NasjonalOppgaveService(
}

fun oppdaterOppgave(sykmeldingId: String, utfall: String, ferdigstiltAv: String, avvisningsgrunn: String?, smRegistreringManuell: SmRegistreringManuell?): NasjonalManuellOppgaveDAO? {
// val updated = nasjonalOppgaveRepository.findBySykmeldingId(sykmeldingId)?.copy(
// utfall = utfall,
// ferdigstiltAv = ferdigstiltAv,
// avvisningsgrunn = avvisningsgrunn,
// datoFerdigstilt = LocalDateTime.now(),
// ferdigstilt = true,
//
//
// )
// when (updated) {
// null -> log.info("Sykmelding $sykmeldingId not found ")
// else -> {
// securelog.info("Lagret oppgave med sykmeldingId ${updated.sykmeldingId} og med database id ${updated?.id} og som dette objektet: $updated")
// nasjonalOppgaveRepository.save(updated)
// }
// }
// return updated

val existingOppgave = nasjonalOppgaveRepository.findBySykmeldingId(sykmeldingId)

if (existingOppgave == null) {
Expand Down Expand Up @@ -150,7 +132,7 @@ class NasjonalOppgaveService(
}

fun getVeilederIdent(): String {
return oppgaveSecurityService.getNavIdent().veilederIdent
return nasjonalCommonService.getNavIdent().veilederIdent
}

fun getOppgave(oppgaveId: String, authorization: String): NasjonalManuellOppgaveDAO? {
Expand Down Expand Up @@ -192,7 +174,7 @@ class NasjonalOppgaveService(
}

val avvisningsgrunn = mapper.readValue(request, AvvisSykmeldingRequest::class.java).reason
val veilederIdent = oppgaveSecurityService.getNavIdent().veilederIdent
val veilederIdent = nasjonalCommonService.getNavIdent().veilederIdent

ferdigstillNasjonalAvvistOppgave(eksisterendeOppgave, navEnhet, avvisningsgrunn, veilederIdent)
oppdaterOppgave(
Expand Down Expand Up @@ -313,6 +295,7 @@ fun ferdigstillNasjonalAvvistOppgave(
avvisningsgrunn: String?,
veilederIdent: String,
) {

if (oppgave.fnr != null) {
val sykmeldt =
personService.getPerson(
Expand Down Expand Up @@ -347,4 +330,4 @@ private fun getLoggingMeta(sykmeldingId: String, oppgave: NasjonalManuellOppgave
fun isValidOppgaveId(oppgaveId: String): Boolean {
val regex = Regex("^\\d{9}$|^[a-zA-Z0-9]{1,20}$")
return oppgaveId.matches(regex)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import no.nav.sykdig.digitalisering.sykmelding.ReceivedSykmelding
import no.nav.sykdig.digitalisering.sykmelding.Status
import no.nav.sykdig.digitalisering.sykmelding.ValidationResult
import no.nav.sykdig.digitalisering.sykmelding.service.JournalpostService
import no.nav.sykdig.digitalisering.tilgangskontroll.OppgaveSecurityService
import no.nav.sykdig.securelog
import no.nav.sykdig.utils.isWhitelisted
import org.apache.kafka.clients.producer.KafkaProducer
Expand All @@ -42,8 +41,7 @@ class NasjonalSykmeldingService(
private val journalpostService: JournalpostService,
private val sykmeldingOKProducer: KafkaProducer<String, ReceivedSykmelding>,
private val sykmelderService: SykmelderService,
private val oppgaveSecurityService: OppgaveSecurityService,
private val nasjonalCommon: NasjonalCommon,
private val nasjonalCommonService: NasjonalCommonService,
) {
val log = applog()
val securelog = securelog()
Expand All @@ -70,7 +68,7 @@ class NasjonalSykmeldingService(

val loggingMeta = getLoggingMeta(sykmeldingId, oppgave)
val sykmelder = getSykmelder(smRegistreringManuell, loggingMeta, callId)
val receivedSykmelding = nasjonalCommon.createReceivedSykmelding(sykmeldingId, oppgave, loggingMeta, smRegistreringManuell, callId, sykmelder)
val receivedSykmelding = nasjonalCommonService.createReceivedSykmelding(sykmeldingId, oppgave, loggingMeta, smRegistreringManuell, callId, sykmelder)

val validationResult = regelClient.valider(receivedSykmelding, sykmeldingId)
log.info(
Expand All @@ -96,7 +94,7 @@ class NasjonalSykmeldingService(
sykmeldingId = sykmeldingId,
sykmelder = sykmelder,
navEnhet = navEnhet,
veileder = oppgaveSecurityService.getNavIdent(),
veileder = nasjonalCommonService.getNavIdent(),
avvist = false,
oppgave = null,
)
Expand All @@ -117,7 +115,7 @@ class NasjonalSykmeldingService(
smRegistreringManuell: SmRegistreringManuell,
): ResponseEntity<Any> {
if (validationResult.status == Status.OK || validationResult.status == Status.MANUAL_PROCESSING) {
val veileder = oppgaveSecurityService.getNavIdent()
val veileder = nasjonalCommonService.getNavIdent()
if (ferdigstillRegistrering.oppgaveId != null) {
journalpostService.ferdigstillNasjonalJournalpost(
ferdigstillRegistrering = ferdigstillRegistrering,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import no.nav.sykdig.digitalisering.papirsykmelding.NasjonalSykmeldingService
import no.nav.sykdig.digitalisering.papirsykmelding.api.model.PapirManuellOppgave
import no.nav.sykdig.digitalisering.papirsykmelding.api.model.SmRegistreringManuell
import no.nav.sykdig.digitalisering.papirsykmelding.api.model.Sykmelder
import no.nav.sykdig.digitalisering.papirsykmelding.db.model.NasjonalManuellOppgaveDAO
import no.nav.sykdig.digitalisering.papirsykmelding.db.model.Utfall
import no.nav.sykdig.digitalisering.pdl.Navn
import no.nav.sykdig.digitalisering.pdl.PersonService
Expand All @@ -25,7 +24,7 @@ import org.springframework.web.bind.annotation.RequestHeader
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.ResponseBody
import org.springframework.web.bind.annotation.RestController
import java.util.UUID
import java.util.*

@RestController
@RequestMapping("/api/v1/proxy")
Expand All @@ -40,7 +39,7 @@ class NasjonalOppgaveController(
val securelog = securelog()

@PostMapping("/oppgave/{oppgaveId}/avvis")
@PreAuthorize("@oppgaveSecurityService.hasAccessToNasjonalOppgave(#oppgaveId)")
@PreAuthorize("@oppgaveSecurityService.hasAccessToNasjonalOppgave(#oppgaveId, #authorization)")
fun avvisOppgave(
@PathVariable oppgaveId: String,
@RequestHeader("X-Nav-Enhet") navEnhet: String,
Expand All @@ -52,7 +51,7 @@ class NasjonalOppgaveController(
}

@GetMapping("/oppgave/{oppgaveId}")
@PostAuthorize("@oppgaveSecurityService.hasAccessToNasjonalOppgave(#oppgaveId)")
@PostAuthorize("@oppgaveSecurityService.hasAccessToNasjonalOppgave(#oppgaveId, #authorization)")
@ResponseBody
fun getPapirsykmeldingManuellOppgave(
@PathVariable oppgaveId: String,
Expand Down Expand Up @@ -98,7 +97,7 @@ class NasjonalOppgaveController(
}

@PostMapping("/oppgave/{oppgaveId}/send")
@PreAuthorize("@oppgaveSecurityService.hasAccessToNasjonalOppgave(#oppgaveId)")
@PreAuthorize("@oppgaveSecurityService.hasAccessToNasjonalOppgave(#oppgaveId, #authorization)")
@ResponseBody
suspend fun sendOppgave(
@PathVariable oppgaveId: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import no.nav.sykdig.LoggingMeta
import no.nav.sykdig.applog
import no.nav.sykdig.digitalisering.SykDigOppgaveService
import no.nav.sykdig.digitalisering.dokarkiv.DokarkivClient
import no.nav.sykdig.digitalisering.papirsykmelding.NasjonalCommonService
import no.nav.sykdig.digitalisering.papirsykmelding.api.model.FerdigstillRegistrering
import no.nav.sykdig.digitalisering.pdl.PersonService
import no.nav.sykdig.digitalisering.saf.SafJournalpostService
Expand All @@ -14,7 +15,6 @@ import no.nav.sykdig.digitalisering.saf.graphql.TEMA_SYKMELDING
import no.nav.sykdig.digitalisering.saf.graphql.Type
import no.nav.sykdig.digitalisering.sykmelding.ReceivedSykmelding
import no.nav.sykdig.digitalisering.sykmelding.db.JournalpostSykmeldingRepository
import no.nav.sykdig.digitalisering.tilgangskontroll.OppgaveSecurityService
import no.nav.sykdig.generated.types.Document
import no.nav.sykdig.generated.types.Journalpost
import no.nav.sykdig.generated.types.JournalpostResult
Expand All @@ -33,7 +33,7 @@ class JournalpostService(
private val metricRegister: MetricRegister,
private val safJournalpostService: SafJournalpostService,
private val dokarkivClient: DokarkivClient,
private val oppgaveSecurityService: OppgaveSecurityService,
private val nasjonalCommonService: NasjonalCommonService,
) {
companion object {
private val securelog = securelog()
Expand Down Expand Up @@ -76,7 +76,7 @@ class JournalpostService(
)
val fnr = personService.getPerson(fnrEllerAktorId, journalpostId).fnr
val aktorId = personService.getPerson(fnrEllerAktorId, journalpostId).aktorId
val oppgaveId = sykDigOppgaveService.opprettOgLagreOppgave(journalpost, journalpostId, fnr, aktorId, oppgaveSecurityService.getNavEmail())
val oppgaveId = sykDigOppgaveService.opprettOgLagreOppgave(journalpost, journalpostId, fnr, aktorId, nasjonalCommonService.getNavEmail())

securelog.info(
"oppretter sykmelding fra journalpost {} {} {} {}",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package no.nav.sykdig.digitalisering.tilgangskontroll

import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.reactive.awaitSingle
import kotlinx.coroutines.withContext
import no.nav.sykdig.auditLogger.AuditLogger
import no.nav.sykdig.auditlog
import no.nav.sykdig.digitalisering.SykDigOppgaveService
import no.nav.sykdig.digitalisering.papirsykmelding.api.model.Veileder
import no.nav.sykdig.digitalisering.papirsykmelding.db.NasjonalOppgaveRepository
import no.nav.sykdig.digitalisering.papirsykmelding.NasjonalCommonService
import no.nav.sykdig.digitalisering.papirsykmelding.NasjonalOppgaveService
import no.nav.sykdig.digitalisering.pdl.PersonService
import no.nav.sykdig.digitalisering.saf.SafJournalpostGraphQlClient
import no.nav.sykdig.digitalisering.saf.graphql.Type
Expand All @@ -16,9 +13,6 @@ import no.nav.sykdig.generated.types.JournalpostResult
import no.nav.sykdig.generated.types.JournalpostStatus
import no.nav.sykdig.objectMapper
import no.nav.sykdig.securelog
import org.springframework.security.core.context.ReactiveSecurityContextHolder
import org.springframework.security.core.context.SecurityContextHolder
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken
import org.springframework.stereotype.Service

@Service
Expand All @@ -27,7 +21,8 @@ class OppgaveSecurityService(
private val sykDigOppgaveService: SykDigOppgaveService,
private val safGraphQlClient: SafJournalpostGraphQlClient,
private val personService: PersonService,
private val nasjonalOppgaveRepository: NasjonalOppgaveRepository,
private val nasjonalOppgaveService: NasjonalOppgaveService,
private val nasjonalCommonService: NasjonalCommonService,
) {
companion object {
private val securelog = securelog()
Expand All @@ -37,16 +32,16 @@ class OppgaveSecurityService(
fun hasAccessToOppgave(oppgaveId: String): Boolean {
securelog.info("sjekker om bruker har tilgang på oppgave $oppgaveId")
val oppgave = sykDigOppgaveService.getOppgave(oppgaveId)
val navEmail = getNavEmail()
val navEmail = nasjonalCommonService.getNavEmail()
val tilgang = hasAccess(oppgave.fnr, navEmail)
securelog.info("Innlogget bruker: $navEmail har${if (!tilgang) " ikke" else ""} tilgang til oppgave med id $oppgaveId")
return tilgang
}

fun hasAccessToNasjonalOppgave(oppgaveId: String): Boolean {
fun hasAccessToNasjonalOppgave(oppgaveId: String, authorization: String): Boolean {
securelog.info("sjekker om bruker har tilgang på oppgave $oppgaveId")
val oppgave = nasjonalOppgaveRepository.findByOppgaveId(oppgaveId.toInt())
val navEmail = getNavEmail()
val oppgave = nasjonalOppgaveService.getOppgave(oppgaveId, authorization)
val navEmail = nasjonalCommonService.getNavEmail()
val fnr = oppgave?.fnr
if (oppgave != null && fnr != null) {
val tilgang = hasAccess(fnr, navEmail)
Expand All @@ -59,15 +54,15 @@ class OppgaveSecurityService(
fun hasAccessToSykmelding(sykmeldingId: String): Boolean {
securelog.info("sjekker om bruker har tilgang på sykmelding $sykmeldingId")
val oppgave = sykDigOppgaveService.getOppgaveFromSykmeldingId(sykmeldingId)
val navEmail = getNavEmail()
val navEmail = nasjonalCommonService.getNavEmail()
val tilgang = hasAccess(oppgave.fnr, navEmail)
securelog.info("Innlogget bruker: $navEmail har${if (!tilgang) " ikke" else ""} tilgang til oppgave med id $sykmeldingId")
return tilgang
}

fun hasAccessToJournalpost(journalpostResult: JournalpostResult): Boolean {
return when (journalpostResult) {
is Journalpost -> return hasAccess(journalpostResult.fnr, getNavEmail())
is Journalpost -> return hasAccess(journalpostResult.fnr, nasjonalCommonService.getNavEmail())
is JournalpostStatus -> return true
else -> false
}
Expand All @@ -91,7 +86,7 @@ class OppgaveSecurityService(
val fnr = personService.getPerson(id, journalpostId).fnr

securelog.info("Fødselsnummer: $fnr")
val navEmail = getNavEmail()
val navEmail = nasjonalCommonService.getNavEmail()
val tilgang = hasAccess(fnr, journalpostId)
securelog.info("Innlogget bruker: $navEmail har${if (!tilgang) " ikke" else ""} til journalpost med id $journalpostId")
return tilgang
Expand Down Expand Up @@ -119,15 +114,7 @@ class OppgaveSecurityService(
return tilgang
}

fun getNavIdent(): Veileder {
val authentication = SecurityContextHolder.getContext().authentication as JwtAuthenticationToken
return Veileder(authentication.token.claims["NAVident"].toString())
}

fun getNavEmail(): String {
val authentication = SecurityContextHolder.getContext().authentication as JwtAuthenticationToken
return authentication.token.claims["preferred_username"].toString()
}
}


Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import no.nav.sykdig.digitalisering.pdl.Person
import no.nav.sykdig.digitalisering.pdl.PersonService
import no.nav.sykdig.digitalisering.saf.SafJournalpostGraphQlClient
import no.nav.sykdig.digitalisering.saf.graphql.SafQueryJournalpost
import no.nav.sykdig.digitalisering.tilgangskontroll.OppgaveSecurityService
import no.nav.sykdig.model.OppgaveDbModel
import okhttp3.internal.EMPTY_BYTE_ARRAY
import org.junit.jupiter.api.Assertions.assertEquals
Expand Down Expand Up @@ -63,9 +62,6 @@ class NasjonalOppgaveServiceTest : IntegrationTest() {
@MockBean
lateinit var sykdigOppgaveService: SykDigOppgaveService

@MockBean
lateinit var oppgaveSecurityService: OppgaveSecurityService

@MockBean
lateinit var personService: PersonService

Expand All @@ -84,6 +80,9 @@ class NasjonalOppgaveServiceTest : IntegrationTest() {
@MockBean
lateinit var documentService: DocumentService

@MockBean
lateinit var nasjonaCommonService: NasjonalCommonService

@Autowired
@Qualifier("smregisteringRestTemplate")
private lateinit var restTemplate: RestTemplate
Expand All @@ -108,8 +107,10 @@ class NasjonalOppgaveServiceTest : IntegrationTest() {
val originalOppgave = nasjonalOppgaveService.lagreOppgave(testDataPapirManuellOppgave())

Mockito.`when`(sykdigOppgaveService.getOppgave(anyString())).thenReturn(testDataOppgaveDbModel(oppgaveId))
Mockito.`when`(oppgaveSecurityService.getNavIdent()).thenReturn(Veileder("veilederIdent"))
Mockito.`when`(oppgaveSecurityService.getNavEmail()).thenReturn("NavEmail")

Mockito.`when`(nasjonaCommonService.getNavEmail()).thenReturn("navEmail")
Mockito.`when`(nasjonaCommonService.getNavIdent()).thenReturn(Veileder("navIdent"))

Mockito.`when`(personService.getPerson(anyString(), anyString())).thenReturn(testDataPerson())
Mockito.`when`(safJournalpostGraphQlClient.getJournalpost(anyString())).thenReturn(SafQueryJournalpost(null))

Expand Down

0 comments on commit d0d8452

Please sign in to comment.