diff --git a/apps/etterlatte-api/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/VedtaksvurderingKlient.kt b/apps/etterlatte-api/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/VedtaksvurderingKlient.kt index 1a65352b8da..a68916a00c1 100644 --- a/apps/etterlatte-api/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/VedtaksvurderingKlient.kt +++ b/apps/etterlatte-api/src/main/kotlin/no/nav/etterlatte/samordning/vedtak/VedtaksvurderingKlient.kt @@ -7,6 +7,8 @@ import io.ktor.client.plugins.ClientRequestException import io.ktor.client.request.get import io.ktor.client.request.header import io.ktor.client.request.parameter +import io.ktor.client.request.post +import io.ktor.client.request.setBody import io.ktor.client.request.url import io.ktor.http.HttpStatusCode import no.nav.etterlatte.libs.common.behandling.SakType @@ -14,6 +16,7 @@ import no.nav.etterlatte.libs.common.feilhaandtering.IkkeFunnetException import no.nav.etterlatte.libs.common.feilhaandtering.IkkeTillattException import no.nav.etterlatte.libs.common.feilhaandtering.UgyldigForespoerselException import no.nav.etterlatte.libs.common.vedtak.VedtakSamordningDto +import no.nav.etterlatte.libs.ktor.route.FoedselsnummerDTO import org.slf4j.LoggerFactory import java.time.LocalDate @@ -60,13 +63,13 @@ class VedtaksvurderingKlient( return try { httpClient - .get(vedtaksvurderingUrl) { + .post(vedtaksvurderingUrl) { parameter("sakstype", sakType) parameter("fomDato", fomDato) - header("fnr", fnr) // TODO: må fjernes if (callerContext is MaskinportenTpContext) { header("orgnr", callerContext.organisasjonsnr) } + setBody(FoedselsnummerDTO(fnr)) }.body() } catch (e: ClientRequestException) { logger.error("Det oppstod feil i kall til vedtaksliste API", e) diff --git a/apps/etterlatte-api/src/test/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakRouteTest.kt b/apps/etterlatte-api/src/test/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakRouteTest.kt index 2e7c0be9384..5601393aed0 100644 --- a/apps/etterlatte-api/src/test/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakRouteTest.kt +++ b/apps/etterlatte-api/src/test/kotlin/no/nav/etterlatte/samordning/vedtak/SamordningVedtakRouteTest.kt @@ -45,6 +45,7 @@ class SamordningVedtakRouteTest { mockOAuth2Server.startRandomPort() } + // TODO: alle tester her skal oppdateres med fnr i body 1.mars 2025 @Nested inner class MaskinportenApi { @BeforeEach diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRoute.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRoute.kt index 16c024719ee..28db1a7036d 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRoute.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtaksvurderingRoute.kt @@ -23,6 +23,7 @@ import no.nav.etterlatte.libs.common.vedtak.TilbakekrevingVedtakDto import no.nav.etterlatte.libs.common.vedtak.VedtakKafkaHendelseHendelseType import no.nav.etterlatte.libs.common.vedtak.VedtakSammendragDto import no.nav.etterlatte.libs.ktor.route.BEHANDLINGID_CALL_PARAMETER +import no.nav.etterlatte.libs.ktor.route.FoedselsnummerDTO import no.nav.etterlatte.libs.ktor.route.SAKID_CALL_PARAMETER import no.nav.etterlatte.libs.ktor.route.behandlingId import no.nav.etterlatte.libs.ktor.route.withBehandlingId @@ -270,16 +271,14 @@ fun Route.vedtaksvurderingRoute( fun Route.samordningSystembrukerVedtakRoute(vedtakSamordningService: VedtakSamordningService) { route("/api/samordning/vedtak") { - get { + post { val sakstype = call.parameters["sakstype"]?.let { runCatching { SakType.valueOf(it) }.getOrNull() } - ?: return@get call.respond(HttpStatusCode.BadRequest, "sakstype ikke angitt") + ?: return@post call.respond(HttpStatusCode.BadRequest, "sakstype ikke angitt") val fomDato = call.parameters["fomDato"]?.let { runCatching { LocalDate.parse(it) }.getOrNull() } - ?: return@get call.respond(HttpStatusCode.BadRequest, "fomDato ikke angitt") - val fnr = - call.request.headers["fnr"]?.let { Folkeregisteridentifikator.of(it) } - ?: return@get call.respond(HttpStatusCode.BadRequest, "fnr ikke angitt") + ?: return@post call.respond(HttpStatusCode.BadRequest, "fomDato ikke angitt") + val fnr = call.receive().foedselsnummer.let { Folkeregisteridentifikator.of(it) } val vedtaksliste = vedtakSamordningService.hentVedtaksliste( diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/SamordningsKlient.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/SamordningsKlient.kt index e3106501ff0..551da95d094 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/SamordningsKlient.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/klienter/SamordningsKlient.kt @@ -88,7 +88,7 @@ class SamordningsKlientImpl( try { val response = httpClient.get("$resourceUrl/api/vedtak") { - header("pid", vedtak.soeker.value) + header("pid", vedtak.soeker.value) // TODO: må endres til body når samhandlingsløsningen støtter dette parameter("fagomrade", "EYO") // parameter("sakId", "${vedtak.sakId}") // FIXME retting i SAM ble prodsatt 29.05.2024. 6 ukers svarfrist... if (!alleVedtak) { diff --git a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/SamordningsvedtakRouteTest.kt b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/SamordningsvedtakRouteTest.kt index b845cb1c2c0..c5a404718d5 100644 --- a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/SamordningsvedtakRouteTest.kt +++ b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/SamordningsvedtakRouteTest.kt @@ -3,6 +3,8 @@ package no.nav.etterlatte.vedtaksvurdering import io.kotest.matchers.shouldBe import io.ktor.client.request.get import io.ktor.client.request.header +import io.ktor.client.request.post +import io.ktor.client.request.setBody import io.ktor.http.ContentType import io.ktor.http.HttpHeaders import io.ktor.http.HttpStatusCode @@ -17,6 +19,7 @@ import no.nav.etterlatte.ktor.startRandomPort import no.nav.etterlatte.ktor.token.issueSystembrukerToken import no.nav.etterlatte.libs.common.behandling.BehandlingType import no.nav.etterlatte.libs.common.behandling.SakType +import no.nav.etterlatte.libs.common.person.Folkeregisteridentifikator import no.nav.etterlatte.libs.common.sak.VedtakSak import no.nav.etterlatte.libs.common.tidspunkt.Tidspunkt import no.nav.etterlatte.libs.common.vedtak.Attestasjon @@ -25,12 +28,14 @@ import no.nav.etterlatte.libs.common.vedtak.VedtakFattet import no.nav.etterlatte.libs.common.vedtak.VedtakSamordningDto import no.nav.etterlatte.libs.common.vedtak.VedtakStatus import no.nav.etterlatte.libs.common.vedtak.VedtakType +import no.nav.etterlatte.libs.ktor.route.FoedselsnummerDTO import no.nav.security.mock.oauth2.MockOAuth2Server import org.junit.jupiter.api.AfterAll import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.Test import org.junit.jupiter.api.TestInstance +import java.time.LocalDate import java.time.Month import java.time.YearMonth import java.time.temporal.ChronoUnit @@ -62,9 +67,10 @@ class SamordningsvedtakRouteTest { samordningVedtak() testApplication { - runServer(mockOAuth2Server) { - samordningSystembrukerVedtakRoute(vedtakSamordningService) - } + val client = + runServer(mockOAuth2Server) { + samordningSystembrukerVedtakRoute(vedtakSamordningService) + } val response = client.get("/api/samordning/vedtak/1234") { @@ -77,6 +83,30 @@ class SamordningsvedtakRouteTest { } } + @Test + fun `Kan returnere vedtaksliste for fnr i body`() { + val fomDate = LocalDate.now() + val fnr = Folkeregisteridentifikator.of(FNR_2) + coEvery { vedtakSamordningService.hentVedtaksliste(sakType = SakType.OMSTILLINGSSTOENAD, fomDato = fomDate, fnr = fnr) } returns + listOf(samordningVedtak()) + testApplication { + val client = + runServer(mockOAuth2Server) { + samordningSystembrukerVedtakRoute(vedtakSamordningService) + } + + val response = + client.post("/api/samordning/vedtak?sakstype=${SakType.OMSTILLINGSSTOENAD}&fomDato=$fomDate") { + header(HttpHeaders.ContentType, ContentType.Application.Json.toString()) + header(HttpHeaders.Authorization, "Bearer ${token(listOf("dummy", "samordning-read"))}") + setBody(FoedselsnummerDTO(fnr.value)) + } + + response.status shouldBe HttpStatusCode.OK + coVerify { vedtakSamordningService.hentVedtaksliste(sakType = SakType.OMSTILLINGSSTOENAD, fomDato = fomDate, fnr = fnr) } + } + } + private fun token(roles: List): String = mockOAuth2Server.issueSystembrukerToken(mittsystem = "pensjon-pen", roles = roles) }