Skip to content

Commit

Permalink
Merge branch 'main' into dependabot/maven/kotlin.version-1.9.22
Browse files Browse the repository at this point in the history
  • Loading branch information
stigebil authored Jan 2, 2024
2 parents b0fa14b + 641c456 commit 19302bc
Show file tree
Hide file tree
Showing 7 changed files with 196 additions and 53 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build-and-deploy-preprod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Deploy til dev-gcp team namespace
if: (github.triggering_actor != 'dependabot[bot]' || github.event_name != 'merge_group')
if: (github.triggering_actor != 'dependabot[bot]' && github.event_name != 'merge_group')
uses: nais/deploy/actions/deploy@v2
env:
APIKEY: ${{ secrets.NAIS_DEPLOY_APIKEY }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,8 @@ data class RestMinimalFagsak(
class RestVisningBehandling(
val behandlingId: Long,
val opprettetTidspunkt: LocalDateTime,
val kategori: BehandlingKategori,
val underkategori: BehandlingUnderkategori?,
val aktiv: Boolean,
val årsak: String? = null,
val type: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,10 @@ class KsSakClient
)
}

fun hentRestFagsak(fagsakId: Long): RestFagsak {
val uri = URI.create("$ksSakServiceUri/fagsaker/$fagsakId")
fun hentMinimalRestFagsak(fagsakId: Long): RestMinimalFagsak {
val uri = URI.create("$ksSakServiceUri/fagsaker/minimal/$fagsakId")
return runCatching {
getForEntity<Ressurs<RestFagsak>>(uri)
getForEntity<Ressurs<RestMinimalFagsak>>(uri)
}.fold(
onSuccess = { it.data ?: throw IntegrasjonException(it.melding, null, uri) },
onFailure = { throw IntegrasjonException("Feil ved henting av RestFagsak fra ks-sak.", it, uri) },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ import no.nav.familie.baks.mottak.integrasjoner.OppgaveClient
import no.nav.familie.baks.mottak.integrasjoner.OppgaveVurderLivshendelseDto
import no.nav.familie.baks.mottak.integrasjoner.PdlClient
import no.nav.familie.baks.mottak.integrasjoner.PdlPersonData
import no.nav.familie.baks.mottak.integrasjoner.RestFagsak
import no.nav.familie.baks.mottak.integrasjoner.RestFagsakIdOgTilknyttetAktørId
import no.nav.familie.baks.mottak.integrasjoner.RestUtvidetBehandling
import no.nav.familie.baks.mottak.integrasjoner.RestMinimalFagsak
import no.nav.familie.baks.mottak.integrasjoner.RestVisningBehandling
import no.nav.familie.baks.mottak.integrasjoner.Sivilstand
import no.nav.familie.kontrakter.felles.Behandlingstema
import no.nav.familie.kontrakter.felles.Tema
Expand Down Expand Up @@ -230,7 +230,7 @@ class VurderLivshendelseService(

private fun hentBehandlingstema(
tema: Tema,
restBehandling: RestUtvidetBehandling,
restBehandling: RestVisningBehandling,
) = when (tema) {
Tema.BAR -> tilBarnetrygdBehandlingstema(restBehandling)
Tema.KON -> tilKontanstøtteBehandlingstema(restBehandling)
Expand Down Expand Up @@ -287,23 +287,23 @@ class VurderLivshendelseService(
private fun hentRestFagsak(
fagsakId: Long,
tema: Tema,
): RestFagsak {
): RestMinimalFagsak {
return when (tema) {
Tema.BAR -> baSakClient.hentRestFagsak(fagsakId)
Tema.KON -> ksSakClient.hentRestFagsak(fagsakId)
Tema.BAR -> baSakClient.hentMinimalRestFagsak(fagsakId)
Tema.KON -> ksSakClient.hentMinimalRestFagsak(fagsakId)
Tema.ENF, Tema.OPP -> throw RuntimeException("Tema $tema er ikke støttet")
}.also {
secureLog.info("Hentet rest fagsak: $it, tema: $tema")
}
}

private fun hentSisteBehandlingSomErIverksatt(restFagsak: RestFagsak): RestUtvidetBehandling? {
private fun hentSisteBehandlingSomErIverksatt(restFagsak: RestMinimalFagsak): RestVisningBehandling? {
return restFagsak.behandlinger
.filter { it.steg == STEG_TYPE_BEHANDLING_AVSLUTTET }
.filter { it.status == STATUS_AVSLUTTET }
.maxByOrNull { it.opprettetTidspunkt }
}

private fun hentAktivBehandling(restFagsak: RestFagsak): RestUtvidetBehandling {
private fun hentAktivBehandling(restFagsak: RestMinimalFagsak): RestVisningBehandling {
return restFagsak.behandlinger.firstOrNull { it.aktiv }
?: error("Fagsak ${restFagsak.id} mangler aktiv behandling. Får ikke opprettet VurderLivshendelseOppgave")
}
Expand Down Expand Up @@ -353,32 +353,32 @@ class VurderLivshendelseService(
return listeMedFagsakIdOgTilknyttetAktør
}

private fun tilBarnetrygdBehandlingstema(restUtvidetBehandling: RestUtvidetBehandling?): Behandlingstema {
private fun tilBarnetrygdBehandlingstema(restBehandling: RestVisningBehandling?): Behandlingstema {
return when {
restUtvidetBehandling == null -> Behandlingstema.Barnetrygd
restUtvidetBehandling.kategori == BehandlingKategori.EØS -> Behandlingstema.BarnetrygdEØS
restUtvidetBehandling.kategori == BehandlingKategori.NASJONAL && restUtvidetBehandling.underkategori == BehandlingUnderkategori.ORDINÆR -> Behandlingstema.OrdinærBarnetrygd
restUtvidetBehandling.kategori == BehandlingKategori.NASJONAL && restUtvidetBehandling.underkategori == BehandlingUnderkategori.UTVIDET -> Behandlingstema.UtvidetBarnetrygd
restBehandling == null -> Behandlingstema.Barnetrygd
restBehandling.kategori == BehandlingKategori.EØS -> Behandlingstema.BarnetrygdEØS
restBehandling.kategori == BehandlingKategori.NASJONAL && restBehandling.underkategori == BehandlingUnderkategori.ORDINÆR -> Behandlingstema.OrdinærBarnetrygd
restBehandling.kategori == BehandlingKategori.NASJONAL && restBehandling.underkategori == BehandlingUnderkategori.UTVIDET -> Behandlingstema.UtvidetBarnetrygd
else -> Behandlingstema.Barnetrygd
}
}

private fun tilKontanstøtteBehandlingstema(restUtvidetBehandling: RestUtvidetBehandling?): Behandlingstema =
private fun tilKontanstøtteBehandlingstema(restBehandling: RestVisningBehandling?): Behandlingstema =
when {
restUtvidetBehandling == null -> Behandlingstema.Kontantstøtte
restUtvidetBehandling.kategori == BehandlingKategori.EØS -> Behandlingstema.KontantstøtteEØS
restBehandling == null -> Behandlingstema.Kontantstøtte
restBehandling.kategori == BehandlingKategori.EØS -> Behandlingstema.KontantstøtteEØS
else -> Behandlingstema.Kontantstøtte
}

private fun sjekkOmDatoErEtterEldsteVedtaksdato(
dato: LocalDate,
aktivFaksak: RestFagsak,
aktivFaksak: RestMinimalFagsak,
personIdent: String,
tema: Tema,
): Boolean {
val tidligsteVedtakIBaSak =
aktivFaksak.behandlinger
.filter { it.resultat == RESULTAT_INNVILGET && it.steg == STEG_TYPE_BEHANDLING_AVSLUTTET }
.filter { it.resultat == RESULTAT_INNVILGET && it.status == STATUS_AVSLUTTET }
.minByOrNull { it.opprettetTidspunkt } ?: return false

if (dato.isAfter(tidligsteVedtakIBaSak.opprettetTidspunkt.toLocalDate())) {
Expand Down Expand Up @@ -469,7 +469,7 @@ class VurderLivshendelseService(
"${VurderLivshendelseType.SIVILSTAND.beskrivelse}: ${if (personErBruker) "bruker" else "barn $personIdent"} er registrert som gift fra $formatertDato"

companion object {
const val STEG_TYPE_BEHANDLING_AVSLUTTET = "BEHANDLING_AVSLUTTET"
const val STATUS_AVSLUTTET = "AVSLUTTET"
const val RESULTAT_INNVILGET = "INNVILGET"
const val BEHANDLING_TYPE_MIGRERING = "MIGRERING_FRA_INFOTRYGD"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@ package no.nav.familie.baks.mottak.integrasjoner

import com.github.tomakehurst.wiremock.client.WireMock.aResponse
import com.github.tomakehurst.wiremock.client.WireMock.equalToJson
import com.github.tomakehurst.wiremock.client.WireMock.get
import com.github.tomakehurst.wiremock.client.WireMock.post
import com.github.tomakehurst.wiremock.client.WireMock.stubFor
import com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo
import no.nav.familie.baks.mottak.DevLauncher
import org.assertj.core.api.Assertions
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.TestInstance
Expand All @@ -15,6 +16,7 @@ import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock
import org.springframework.test.context.ActiveProfiles
import java.io.IOException
import java.time.LocalDate

@SpringBootTest(classes = [DevLauncher::class], properties = ["FAMILIE_BA_SAK_API_URL=http://localhost:28085/api"])
@ActiveProfiles("dev", "mock-oauth")
Expand All @@ -38,7 +40,34 @@ class BaSakClientTest {
)

val response = baSakClient.hentSaksnummer(personIdent)
Assertions.assertThat(response).isEqualTo(fagsakId.toString())
assertThat(response).isEqualTo(fagsakId.toString())
}

@Test
@Tag("integration")
fun `skal hente minimal fagsak og mappe til RestMinimalFagsak`() {
stubFor(
get(urlEqualTo("/api/fagsaker/minimal/1"))
.willReturn(
aResponse()
.withHeader("Content-Type", "application/json")
.withBody(gyldigResponseMinimalSak()),
),
)

val response = baSakClient.hentMinimalRestFagsak(fagsakId)
assertThat(response.id).isEqualTo(fagsakId)
assertThat(response.behandlinger).hasSize(1)
assertThat(response.behandlinger.first().aktiv).isTrue()
assertThat(response.behandlinger.first().behandlingId).isEqualTo(1000)
assertThat(response.behandlinger.first().kategori).isEqualTo(BehandlingKategori.NASJONAL)
assertThat(response.behandlinger.first().underkategori).isEqualTo(BehandlingUnderkategori.ORDINÆR)
assertThat(response.behandlinger.first().opprettetTidspunkt).isEqualTo(LocalDate.of(2023, 4, 2).atStartOfDay())
assertThat(response.behandlinger.first().status).isEqualTo("AVSLUTTET")
assertThat(response.behandlinger.first().type).isEqualTo("FØRSTEGANGSBEHANDLING")
assertThat(response.behandlinger.first().vedtaksdato).isEqualTo(LocalDate.of(2023, 4, 3).atStartOfDay())
assertThat(response.behandlinger.first().årsak).isEqualTo("SØKNAD")
assertThat(response.behandlinger.first().resultat).isEqualTo("INNVILGET")
}

@Throws(IOException::class)
Expand All @@ -57,6 +86,42 @@ class BaSakClientTest {
"}"
}

@Throws(IOException::class)
private fun gyldigResponseMinimalSak(): String {
return """
{
"data": {
"opprettetTidspunkt": "2023-04-01T00:00:00.00",
"id": $fagsakId,
"søkerFødselsnummer": "42104200000",
"status": "LØPENDE",
"underBehandling": false,
"løpendeKategori": "NASJONAL",
"behandlinger": [
{
"behandlingId": 1000,
"opprettetTidspunkt": "2023-04-02T00:00:00.00",
"kategori": "NASJONAL",
"underkategori": "ORDINÆR",
"aktiv": true,
"årsak": "SØKNAD",
"type": "FØRSTEGANGSBEHANDLING",
"status": "AVSLUTTET",
"resultat": "INNVILGET",
"vedtaksdato": "2023-04-03T00:00:00.00"
}
],
"tilbakekrevingsbehandlinger": [],
"gjeldendeUtbetalingsperioder": []
},
"status": "SUKSESS",
"melding": "Innhenting av data var vellykket",
"frontendFeilmelding": null,
"stacktrace": null
}
""".trimIndent()
}

companion object {
private val personIdent = "12345678910"
private val fagsakId = 1L
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@ package no.nav.familie.baks.mottak.integrasjoner

import com.github.tomakehurst.wiremock.client.WireMock.aResponse
import com.github.tomakehurst.wiremock.client.WireMock.equalToJson
import com.github.tomakehurst.wiremock.client.WireMock.get
import com.github.tomakehurst.wiremock.client.WireMock.post
import com.github.tomakehurst.wiremock.client.WireMock.stubFor
import com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo
import no.nav.familie.baks.mottak.DevLauncher
import org.assertj.core.api.Assertions
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.TestInstance
Expand All @@ -15,6 +16,7 @@ import org.springframework.boot.test.context.SpringBootTest
import org.springframework.cloud.contract.wiremock.AutoConfigureWireMock
import org.springframework.test.context.ActiveProfiles
import java.io.IOException
import java.time.LocalDate

@SpringBootTest(classes = [DevLauncher::class], properties = ["FAMILIE_KS_SAK_API_URL=http://localhost:28085/api"])
@ActiveProfiles("dev", "mock-oauth")
Expand All @@ -38,7 +40,34 @@ class KsSakClientTest {
)

val response = ksSakClient.hentSaksnummer(personIdent)
Assertions.assertThat(response).isEqualTo(fagsakId.toString())
assertThat(response).isEqualTo(fagsakId.toString())
}

@Test
@Tag("integration")
fun `skal hente minimal fagsak og mappe til RestMinimalFagsak`() {
stubFor(
get(urlEqualTo("/api/fagsaker/minimal/1"))
.willReturn(
aResponse()
.withHeader("Content-Type", "application/json")
.withBody(gyldigResponseMinimalSak()),
),
)

val response = ksSakClient.hentMinimalRestFagsak(fagsakId)
assertThat(response.id).isEqualTo(fagsakId)
assertThat(response.behandlinger).hasSize(1)
assertThat(response.behandlinger.first().aktiv).isTrue()
assertThat(response.behandlinger.first().behandlingId).isEqualTo(1000)
assertThat(response.behandlinger.first().kategori).isEqualTo(BehandlingKategori.NASJONAL)
assertThat(response.behandlinger.first().underkategori).isNull()
assertThat(response.behandlinger.first().opprettetTidspunkt).isEqualTo(LocalDate.of(2023, 4, 2).atStartOfDay())
assertThat(response.behandlinger.first().status).isEqualTo("AVSLUTTET")
assertThat(response.behandlinger.first().type).isEqualTo("FØRSTEGANGSBEHANDLING")
assertThat(response.behandlinger.first().vedtaksdato).isEqualTo(LocalDate.of(2023, 4, 3).atStartOfDay())
assertThat(response.behandlinger.first().årsak).isEqualTo("SØKNAD")
assertThat(response.behandlinger.first().resultat).isEqualTo("INNVILGET")
}

@Throws(IOException::class)
Expand All @@ -57,6 +86,41 @@ class KsSakClientTest {
"}"
}

@Throws(IOException::class)
private fun gyldigResponseMinimalSak(): String {
return """
{
"data": {
"opprettetTidspunkt": "2023-04-01T00:00:00.00",
"id": $fagsakId,
"søkerFødselsnummer": "42104200000",
"status": "LØPENDE",
"underBehandling": false,
"løpendeKategori": "NASJONAL",
"behandlinger": [
{
"behandlingId": 1000,
"opprettetTidspunkt": "2023-04-02T00:00:00.00",
"kategori": "NASJONAL",
"aktiv": true,
"årsak": "SØKNAD",
"type": "FØRSTEGANGSBEHANDLING",
"status": "AVSLUTTET",
"resultat": "INNVILGET",
"vedtaksdato": "2023-04-03T00:00:00.00"
}
],
"tilbakekrevingsbehandlinger": [],
"gjeldendeUtbetalingsperioder": []
},
"status": "SUKSESS",
"melding": "Innhenting av data var vellykket",
"frontendFeilmelding": null,
"stacktrace": null
}
""".trimIndent()
}

companion object {
private val personIdent = "12345678910"
private val fagsakId = 1L
Expand Down
Loading

0 comments on commit 19302bc

Please sign in to comment.