From d844ca75ef3d996bf901f48eccb52335624b7ed5 Mon Sep 17 00:00:00 2001 From: Mikael Bjerga <6940327+bjerga@users.noreply.github.com> Date: Wed, 13 Nov 2024 13:10:36 +0100 Subject: [PATCH] Fjern mellomledd for hente ekstern IM (#766) * Fjern mellomledd for hente ekstern IM --- .../inntektsmelding/brospinn/App.kt | 10 -- .../brospinn/HentEksternImRiver.kt | 33 ++--- .../inntektsmelding/brospinn/SpinnService.kt | 131 ------------------ .../brospinn/HentEksternImRiverTest.kt | 71 ++++++---- .../brospinn/SpinnServiceTest.kt | 125 ----------------- .../helsearbeidsgiver/felles/EventTypes.kt | 2 - .../forespoerselbesvart/App.kt | 2 +- .../ForespoerselBesvartRiver.kt | 29 +--- .../ForespoerselBesvartRiverTest.kt | 13 +- .../MarkerForespoerselBesvartRiver.kt | 8 +- .../MarkerForespoerselBesvartRiverTest.kt | 3 - .../inntektservice/InntektService.kt | 4 +- .../EksternInntektsmeldingLagretIT.kt | 78 ----------- .../integrasjonstest/ForespoerselBesvartIT.kt | 41 ++++-- .../integrasjonstest/utils/EndToEndTest.kt | 2 - .../integrasjonstest/utils/MessagesTest.kt | 2 +- .../joark/JournalfoerImRiver.kt | 16 ++- .../TilgangForespoerselService.kt | 4 +- .../tilgangservice/TilgangOrgService.kt | 2 +- 19 files changed, 119 insertions(+), 457 deletions(-) delete mode 100644 bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/SpinnService.kt delete mode 100644 bro-spinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/SpinnServiceTest.kt delete mode 100644 integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/EksternInntektsmeldingLagretIT.kt diff --git a/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/App.kt b/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/App.kt index a0a15f187..85e6d14c7 100644 --- a/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/App.kt +++ b/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/App.kt @@ -2,7 +2,6 @@ package no.nav.helsearbeidsgiver.inntektsmelding.brospinn import com.github.navikt.tbd_libs.rapids_and_rivers_api.RapidsConnection import no.nav.helse.rapids_rivers.RapidApplication -import no.nav.helsearbeidsgiver.felles.rapidsrivers.service.ServiceRiverStateless import no.nav.helsearbeidsgiver.tokenprovider.oauth2ClientCredentialsTokenGetter import no.nav.helsearbeidsgiver.utils.log.logger @@ -16,21 +15,12 @@ fun main() { RapidApplication .create(System.getenv()) - .createSpinnService() .createHentEksternImRiver(spinnKlient) .start() logger.info("Bye bye, baby, bye bye!") } -fun RapidsConnection.createSpinnService(): RapidsConnection = - also { - logger.info("Starter ${SpinnService::class.simpleName}...") - ServiceRiverStateless( - SpinnService(this), - ).connect(this) - } - fun RapidsConnection.createHentEksternImRiver(spinnKlient: SpinnKlient): RapidsConnection = also { logger.info("Starter ${HentEksternImRiver::class.simpleName}...") diff --git a/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/HentEksternImRiver.kt b/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/HentEksternImRiver.kt index 5e941bfb0..9c46530ae 100644 --- a/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/HentEksternImRiver.kt +++ b/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/HentEksternImRiver.kt @@ -1,7 +1,6 @@ package no.nav.helsearbeidsgiver.inntektsmelding.brospinn import kotlinx.serialization.json.JsonElement -import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.domene.EksternInntektsmelding @@ -18,11 +17,12 @@ import no.nav.helsearbeidsgiver.utils.log.logger import no.nav.helsearbeidsgiver.utils.log.sikkerLogger import java.util.UUID +private const val AVSENDER_NAV_NO = "NAV_NO" +private const val AVSENDER_NAV_NO_SELVBESTEMT = "NAV_NO_SELVBESTEMT" + class HentEksternImMelding( val eventName: EventName, - val behovType: BehovType, val transaksjonId: UUID, - val data: Map, val forespoerselId: UUID, val spinnImId: UUID, ) @@ -34,35 +34,37 @@ class HentEksternImRiver( private val sikkerLogger = sikkerLogger() override fun les(json: Map): HentEksternImMelding? = - if (Key.FAIL in json) { + if (setOf(Key.BEHOV, Key.FAIL).any(json::containsKey)) { null } else { val data = json[Key.DATA]?.toMap().orEmpty() HentEksternImMelding( - eventName = Key.EVENT_NAME.les(EventName.serializer(), json), - behovType = Key.BEHOV.krev(BehovType.HENT_EKSTERN_INNTEKTSMELDING, BehovType.serializer(), json), + eventName = Key.EVENT_NAME.krev(EventName.FORESPOERSEL_BESVART, EventName.serializer(), json), transaksjonId = Key.UUID.les(UuidSerializer, json), - data = data, forespoerselId = Key.FORESPOERSEL_ID.les(UuidSerializer, data), spinnImId = Key.SPINN_INNTEKTSMELDING_ID.les(UuidSerializer, data), ) } - override fun HentEksternImMelding.haandter(json: Map): Map { + override fun HentEksternImMelding.haandter(json: Map): Map? { logger.info("Henter ekstern inntektsmelding med ID '$spinnImId' fra Spinn.") val eksternInntektsmelding = spinnKlient.hentEksternInntektsmelding(spinnImId) - return mapOf( - Key.EVENT_NAME to eventName.toJson(), - Key.UUID to transaksjonId.toJson(), - Key.DATA to - data - .plus( + return if (eksternInntektsmelding.avsenderSystemNavn in setOf(AVSENDER_NAV_NO, AVSENDER_NAV_NO_SELVBESTEMT)) { + null + } else { + mapOf( + Key.EVENT_NAME to EventName.EKSTERN_INNTEKTSMELDING_MOTTATT.toJson(), + Key.UUID to transaksjonId.toJson(), + Key.DATA to + mapOf( + Key.FORESPOERSEL_ID to forespoerselId.toJson(), Key.EKSTERN_INNTEKTSMELDING to eksternInntektsmelding.toJson(EksternInntektsmelding.serializer()), ).toJson(), - ) + ) + } } override fun HentEksternImMelding.haandterFeil( @@ -94,7 +96,6 @@ class HentEksternImRiver( mapOf( Log.klasse(this@HentEksternImRiver), Log.event(eventName), - Log.behov(behovType), Log.transaksjonId(transaksjonId), Log.forespoerselId(forespoerselId), ) diff --git a/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/SpinnService.kt b/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/SpinnService.kt deleted file mode 100644 index e0551ed4a..000000000 --- a/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/SpinnService.kt +++ /dev/null @@ -1,131 +0,0 @@ -package no.nav.helsearbeidsgiver.inntektsmelding.brospinn - -import com.github.navikt.tbd_libs.rapids_and_rivers_api.RapidsConnection -import kotlinx.serialization.json.JsonElement -import no.nav.helsearbeidsgiver.felles.BehovType -import no.nav.helsearbeidsgiver.felles.EventName -import no.nav.helsearbeidsgiver.felles.Key -import no.nav.helsearbeidsgiver.felles.domene.EksternInntektsmelding -import no.nav.helsearbeidsgiver.felles.json.les -import no.nav.helsearbeidsgiver.felles.json.toJson -import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail -import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish -import no.nav.helsearbeidsgiver.felles.rapidsrivers.service.ServiceMed1Steg -import no.nav.helsearbeidsgiver.felles.utils.Log -import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer -import no.nav.helsearbeidsgiver.utils.json.toJson -import no.nav.helsearbeidsgiver.utils.json.toPretty -import no.nav.helsearbeidsgiver.utils.log.MdcUtils -import no.nav.helsearbeidsgiver.utils.log.logger -import no.nav.helsearbeidsgiver.utils.log.sikkerLogger -import java.util.UUID - -private const val AVSENDER_NAV_NO = "NAV_NO" -private const val AVSENDER_NAV_NO_SELVBESTEMT = "NAV_NO_SELVBESTEMT" - -data class Steg0( - val transaksjonId: UUID, - val forespoerselId: UUID, - val spinnImId: UUID, -) - -data class Steg1( - val eksternInntektsmelding: EksternInntektsmelding, -) - -class SpinnService( - private val rapid: RapidsConnection, -) : ServiceMed1Steg() { - override val logger = logger() - override val sikkerLogger = sikkerLogger() - - override val eventName = EventName.EKSTERN_INNTEKTSMELDING_REQUESTED - - override fun lesSteg0(melding: Map): Steg0 = - Steg0( - transaksjonId = Key.UUID.les(UuidSerializer, melding), - forespoerselId = Key.FORESPOERSEL_ID.les(UuidSerializer, melding), - spinnImId = Key.SPINN_INNTEKTSMELDING_ID.les(UuidSerializer, melding), - ) - - override fun lesSteg1(melding: Map): Steg1 = - Steg1( - eksternInntektsmelding = Key.EKSTERN_INNTEKTSMELDING.les(EksternInntektsmelding.serializer(), melding), - ) - - override fun utfoerSteg0( - data: Map, - steg0: Steg0, - ) { - val publisert = - rapid.publish( - Key.EVENT_NAME to eventName.toJson(), - Key.BEHOV to BehovType.HENT_EKSTERN_INNTEKTSMELDING.toJson(), - Key.UUID to steg0.transaksjonId.toJson(), - Key.DATA to - data - .plus( - mapOf( - Key.FORESPOERSEL_ID to steg0.forespoerselId.toJson(), - Key.SPINN_INNTEKTSMELDING_ID to steg0.spinnImId.toJson(), - ), - ).toJson(), - ) - - MdcUtils.withLogFields( - Log.behov(BehovType.HENT_EKSTERN_INNTEKTSMELDING), - ) { - logger.info("Publiserte melding om ${BehovType.HENT_EKSTERN_INNTEKTSMELDING}.") - sikkerLogger.info("Publiserte melding:\n${publisert.toPretty()}.") - } - } - - override fun utfoerSteg1( - data: Map, - steg0: Steg0, - steg1: Steg1, - ) { - if (steg1.eksternInntektsmelding.avsenderSystemNavn !in setOf(AVSENDER_NAV_NO, AVSENDER_NAV_NO_SELVBESTEMT)) { - val publisert = - rapid.publish( - Key.EVENT_NAME to EventName.EKSTERN_INNTEKTSMELDING_MOTTATT.toJson(), - Key.UUID to steg0.transaksjonId.toJson(), - Key.DATA to - mapOf( - Key.FORESPOERSEL_ID to steg0.forespoerselId.toJson(), - Key.EKSTERN_INNTEKTSMELDING to steg1.eksternInntektsmelding.toJson(EksternInntektsmelding.serializer()), - ).toJson(), - ) - - MdcUtils.withLogFields( - Log.event(EventName.EKSTERN_INNTEKTSMELDING_MOTTATT), - ) { - logger.info("Publiserte melding om '${EventName.EKSTERN_INNTEKTSMELDING_MOTTATT}'.") - sikkerLogger.info("Publiserte melding:\n${publisert.toPretty()}") - } - } - - sikkerLogger.info("$eventName fullført.") - } - - override fun onError( - melding: Map, - fail: Fail, - ) { - MdcUtils.withLogFields( - Log.klasse(this), - Log.event(eventName), - Log.transaksjonId(fail.transaksjonId), - ) { - sikkerLogger.error("$eventName terminert.") - } - } - - override fun Steg0.loggfelt(): Map = - mapOf( - Log.klasse(this@SpinnService), - Log.event(eventName), - Log.transaksjonId(transaksjonId), - Log.forespoerselId(forespoerselId), - ) -} diff --git a/bro-spinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/HentEksternImRiverTest.kt b/bro-spinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/HentEksternImRiverTest.kt index c9f37ef32..577aaaf1a 100644 --- a/bro-spinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/HentEksternImRiverTest.kt +++ b/bro-spinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/HentEksternImRiverTest.kt @@ -23,7 +23,7 @@ import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.test.mock.mockEksternInntektsmelding import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson -import no.nav.helsearbeidsgiver.inntektsmelding.brospinn.MockHent.toMap +import no.nav.helsearbeidsgiver.inntektsmelding.brospinn.Mock.toMap import no.nav.helsearbeidsgiver.utils.json.toJson import java.util.UUID @@ -41,7 +41,7 @@ class HentEksternImRiverTest : } test("henter ekstern inntektsmelding") { - val innkommendeMelding = MockHent.innkommendeMelding() + val innkommendeMelding = Mock.innkommendeMelding() every { mockSpinnKlient.hentEksternInntektsmelding(any()) } returns mockEksternInntektsmelding() @@ -51,13 +51,13 @@ class HentEksternImRiverTest : testRapid.firstMessage().toMap() shouldContainExactly mapOf( - Key.EVENT_NAME to innkommendeMelding.eventName.toJson(), + Key.EVENT_NAME to EventName.EKSTERN_INNTEKTSMELDING_MOTTATT.toJson(), Key.UUID to innkommendeMelding.transaksjonId.toJson(), Key.DATA to - innkommendeMelding.data - .plus( - Key.EKSTERN_INNTEKTSMELDING to mockEksternInntektsmelding().toJson(EksternInntektsmelding.serializer()), - ).toJson(), + mapOf( + Key.FORESPOERSEL_ID to innkommendeMelding.forespoerselId.toJson(), + Key.EKSTERN_INNTEKTSMELDING to mockEksternInntektsmelding().toJson(EksternInntektsmelding.serializer()), + ).toJson(), ) verifySequence { @@ -65,6 +65,31 @@ class HentEksternImRiverTest : } } + context("publiserer ikke mottatt-event for ...") { + withData( + mapOf( + "forespurt inntektsmelding fra nav.no" to "NAV_NO", + "selvbestemt inntektsmelding fra nav.no" to "NAV_NO_SELVBESTEMT", + ), + ) { avsenderSystemNavn -> + val imFraNavNo = + mockEksternInntektsmelding().copy( + avsenderSystemNavn = avsenderSystemNavn, + ) + val innkommendeMelding = Mock.innkommendeMelding() + + every { mockSpinnKlient.hentEksternInntektsmelding(any()) } returns imFraNavNo + + testRapid.sendJson(innkommendeMelding.toMap()) + + testRapid.inspektør.size shouldBeExactly 0 + + verifySequence { + mockSpinnKlient.hentEksternInntektsmelding(innkommendeMelding.spinnImId) + } + } + } + context("håndterer feil") { withData( mapOf( @@ -80,7 +105,7 @@ class HentEksternImRiverTest : ), ), ) { (error, expectedFeilmelding) -> - val innkommendeMelding = MockHent.innkommendeMelding() + val innkommendeMelding = Mock.innkommendeMelding() val innkommendeJsonMap = innkommendeMelding.toMap() @@ -111,12 +136,11 @@ class HentEksternImRiverTest : withData( mapOf( "melding med uønsket behov" to Pair(Key.BEHOV, BehovType.HENT_VIRKSOMHET_NAVN.toJson()), - "melding med data som flagg" to Pair(Key.DATA, "".toJson()), - "melding med fail" to Pair(Key.FAIL, MockHent.fail.toJson(Fail.serializer())), + "melding med fail" to Pair(Key.FAIL, Mock.fail.toJson(Fail.serializer())), ), ) { uoensketKeyMedVerdi -> testRapid.sendJson( - MockHent + Mock .innkommendeMelding() .toMap() .plus(uoensketKeyMedVerdi), @@ -131,29 +155,18 @@ class HentEksternImRiverTest : } }) -private object MockHent { - fun innkommendeMelding(): HentEksternImMelding { - val forespoerselId = UUID.randomUUID() - val spinnImId = UUID.randomUUID() - - return HentEksternImMelding( - eventName = EventName.EKSTERN_INNTEKTSMELDING_REQUESTED, - behovType = BehovType.HENT_EKSTERN_INNTEKTSMELDING, +private object Mock { + fun innkommendeMelding(): HentEksternImMelding = + HentEksternImMelding( + eventName = EventName.FORESPOERSEL_BESVART, transaksjonId = UUID.randomUUID(), - data = - mapOf( - Key.FORESPOERSEL_ID to forespoerselId.toJson(), - Key.SPINN_INNTEKTSMELDING_ID to spinnImId.toJson(), - ), - forespoerselId = forespoerselId, - spinnImId = spinnImId, + forespoerselId = UUID.randomUUID(), + spinnImId = UUID.randomUUID(), ) - } fun HentEksternImMelding.toMap(): Map = mapOf( Key.EVENT_NAME to eventName.toJson(), - Key.BEHOV to behovType.toJson(), Key.UUID to transaksjonId.toJson(), Key.DATA to mapOf( @@ -165,7 +178,7 @@ private object MockHent { val fail = Fail( feilmelding = "Vi spiller ikke Flo Rida sin versjon.", - event = EventName.EKSTERN_INNTEKTSMELDING_REQUESTED, + event = EventName.FORESPOERSEL_BESVART, transaksjonId = UUID.randomUUID(), forespoerselId = UUID.randomUUID(), utloesendeMelding = JsonNull, diff --git a/bro-spinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/SpinnServiceTest.kt b/bro-spinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/SpinnServiceTest.kt deleted file mode 100644 index 8e262c225..000000000 --- a/bro-spinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/SpinnServiceTest.kt +++ /dev/null @@ -1,125 +0,0 @@ -package no.nav.helsearbeidsgiver.inntektsmelding.brospinn - -import com.github.navikt.tbd_libs.rapids_and_rivers.test_support.TestRapid -import io.kotest.core.spec.style.FunSpec -import io.kotest.datatest.withData -import io.kotest.matchers.ints.shouldBeExactly -import io.kotest.matchers.maps.shouldContainExactly -import io.mockk.clearAllMocks -import kotlinx.serialization.json.JsonElement -import no.nav.helsearbeidsgiver.felles.BehovType -import no.nav.helsearbeidsgiver.felles.EventName -import no.nav.helsearbeidsgiver.felles.Key -import no.nav.helsearbeidsgiver.felles.domene.EksternInntektsmelding -import no.nav.helsearbeidsgiver.felles.json.toJson -import no.nav.helsearbeidsgiver.felles.json.toMap -import no.nav.helsearbeidsgiver.felles.rapidsrivers.service.ServiceRiverStateless -import no.nav.helsearbeidsgiver.felles.test.json.plusData -import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage -import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.message -import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson -import no.nav.helsearbeidsgiver.utils.json.toJson -import java.time.LocalDateTime -import java.util.UUID - -class SpinnServiceTest : - FunSpec({ - val testRapid = TestRapid() - - ServiceRiverStateless( - SpinnService(testRapid), - ).connect(testRapid) - - beforeTest { - testRapid.reset() - clearAllMocks() - } - - test("publiser mottatt-event for inntektsmelding fra LPS/Altinn") { - testRapid.sendJson(Mock.steg0()) - - testRapid.inspektør.size shouldBeExactly 1 - - testRapid.firstMessage().toMap() shouldContainExactly - mapOf( - Key.EVENT_NAME to EventName.EKSTERN_INNTEKTSMELDING_REQUESTED.toJson(), - Key.BEHOV to BehovType.HENT_EKSTERN_INNTEKTSMELDING.toJson(), - Key.UUID to Mock.transaksjonId.toJson(), - Key.DATA to - mapOf( - Key.FORESPOERSEL_ID to Mock.forespoerselId.toJson(), - Key.SPINN_INNTEKTSMELDING_ID to Mock.spinnInntektsmeldingId.toJson(), - ).toJson(), - ) - - testRapid.sendJson(Mock.steg1()) - - testRapid.inspektør.size shouldBeExactly 2 - - testRapid.message(1).toMap() shouldContainExactly - mapOf( - Key.EVENT_NAME to EventName.EKSTERN_INNTEKTSMELDING_MOTTATT.toJson(), - Key.UUID to Mock.transaksjonId.toJson(), - Key.DATA to - mapOf( - Key.FORESPOERSEL_ID to Mock.forespoerselId.toJson(), - Key.EKSTERN_INNTEKTSMELDING to Mock.eksternIm.toJson(EksternInntektsmelding.serializer()), - ).toJson(), - ) - } - - context("publiserer ikke mottatt-event for ...") { - withData( - mapOf( - "forespurt inntektsmelding fra nav.no" to "NAV_NO", - "selvbestemt inntektsmelding fra nav.no" to "NAV_NO_SELVBESTEMT", - ), - ) { avsenderSystemNavn -> - val imFraNavNo = - Mock.eksternIm.copy( - avsenderSystemNavn = avsenderSystemNavn, - ) - - testRapid.sendJson(Mock.steg0()) - - testRapid.inspektør.size shouldBeExactly 1 - - testRapid.sendJson( - Mock - .steg1() - .plusData(Key.EKSTERN_INNTEKTSMELDING to imFraNavNo.toJson(EksternInntektsmelding.serializer())), - ) - - testRapid.inspektør.size shouldBeExactly 1 - } - } - }) - -private object Mock { - val transaksjonId: UUID = UUID.randomUUID() - val forespoerselId: UUID = UUID.randomUUID() - val spinnInntektsmeldingId: UUID = UUID.randomUUID() - val eksternIm = - EksternInntektsmelding( - avsenderSystemNavn = "LittPengeSvindel", - avsenderSystemVersjon = "den andre versjonen", - arkivreferanse = "archivo apostolico", - tidspunkt = LocalDateTime.now(), - ) - - fun steg0(): Map = - mapOf( - Key.EVENT_NAME to EventName.EKSTERN_INNTEKTSMELDING_REQUESTED.toJson(), - Key.UUID to transaksjonId.toJson(), - Key.DATA to - mapOf( - Key.FORESPOERSEL_ID to forespoerselId.toJson(), - Key.SPINN_INNTEKTSMELDING_ID to spinnInntektsmeldingId.toJson(), - ).toJson(), - ) - - fun steg1(): Map = - steg0().plusData( - Key.EKSTERN_INNTEKTSMELDING to eksternIm.toJson(EksternInntektsmelding.serializer()), - ) -} diff --git a/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/EventTypes.kt b/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/EventTypes.kt index 4d2b3e342..02357876f 100644 --- a/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/EventTypes.kt +++ b/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/EventTypes.kt @@ -7,7 +7,6 @@ enum class BehovType { // Hente data HENT_ARBEIDSFORHOLD, ARBEIDSGIVERE, - HENT_EKSTERN_INNTEKTSMELDING, HENT_INNTEKT, HENT_LAGRET_IM, HENT_PERSONER, @@ -41,7 +40,6 @@ enum class EventName { SELVBESTEMT_IM_MOTTATT, SELVBESTEMT_IM_LAGRET, - EKSTERN_INNTEKTSMELDING_REQUESTED, EKSTERN_INNTEKTSMELDING_MOTTATT, EKSTERN_INNTEKTSMELDING_LAGRET, diff --git a/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/App.kt b/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/App.kt index a0fca4f53..9adfb3052 100644 --- a/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/App.kt +++ b/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/App.kt @@ -20,5 +20,5 @@ fun main() { fun RapidsConnection.createForespoerselBesvartRiver(): RapidsConnection = also { logger.info("Starter ${ForespoerselBesvartRiver::class.simpleName}...") - ForespoerselBesvartRiver(this).connect(this) + ForespoerselBesvartRiver().connect(this) } diff --git a/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartRiver.kt b/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartRiver.kt index cc12ba863..2836a8ee9 100644 --- a/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartRiver.kt +++ b/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartRiver.kt @@ -1,6 +1,5 @@ package no.nav.helsearbeidsgiver.inntektsmelding.forespoerselbesvart -import com.github.navikt.tbd_libs.rapids_and_rivers_api.RapidsConnection import kotlinx.serialization.json.JsonElement import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key @@ -11,14 +10,12 @@ import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.metrics.Metrics import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.toPretty -import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.PriObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log import no.nav.helsearbeidsgiver.utils.collection.mapValuesNotNull import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.json.toPretty -import no.nav.helsearbeidsgiver.utils.log.MdcUtils import no.nav.helsearbeidsgiver.utils.log.logger import no.nav.helsearbeidsgiver.utils.log.sikkerLogger import java.util.UUID @@ -31,9 +28,7 @@ data class BesvartMelding( ) /** Tar imot notifikasjon om at en forespørsel om arbeidsgiveropplysninger er besvart. */ -class ForespoerselBesvartRiver( - private val rapid: RapidsConnection, -) : PriObjectRiver() { +class ForespoerselBesvartRiver : PriObjectRiver() { private val logger = logger() private val sikkerLogger = sikkerLogger() @@ -49,33 +44,11 @@ class ForespoerselBesvartRiver( logger.info("Mottok melding på pri-topic om ${Pri.NotisType.FORESPOERSEL_BESVART}.") sikkerLogger.info("Mottok melding på pri-topic:\n${json.toPretty()}") - if (spinnInntektsmeldingId != null) { - MdcUtils.withLogFields( - Log.event(EventName.EKSTERN_INNTEKTSMELDING_REQUESTED), - ) { - rapid - .publish( - Key.EVENT_NAME to EventName.EKSTERN_INNTEKTSMELDING_REQUESTED.toJson(), - Key.UUID to transaksjonId.toJson(), - Key.DATA to - mapOf( - Key.FORESPOERSEL_ID to forespoerselId.toJson(), - Key.SPINN_INNTEKTSMELDING_ID to spinnInntektsmeldingId.toJson(), - ).toJson(), - ).also { - logger.info("Publiserte melding om ekstern avsender") - sikkerLogger.info("Publiserte melding om ekstern avsender:\n${it.toPretty()}") - } - } - } - Metrics.forespoerslerBesvartFraSpleis.inc() return mapOf( Key.EVENT_NAME to EventName.FORESPOERSEL_BESVART.toJson(), Key.UUID to transaksjonId.toJson(), - // TODO slett etter overgangsfase - Key.FORESPOERSEL_ID to forespoerselId.toJson(), Key.DATA to mapOf( Key.FORESPOERSEL_ID to forespoerselId.toJson(), diff --git a/forespoersel-besvart/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartRiverTest.kt b/forespoersel-besvart/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartRiverTest.kt index cee2c36dd..2dcfb3b56 100644 --- a/forespoersel-besvart/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartRiverTest.kt +++ b/forespoersel-besvart/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartRiverTest.kt @@ -12,7 +12,6 @@ import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage -import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.message import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson import no.nav.helsearbeidsgiver.utils.json.toJson import java.util.UUID @@ -21,20 +20,19 @@ class ForespoerselBesvartRiverTest : FunSpec({ val testRapid = TestRapid() - ForespoerselBesvartRiver(testRapid).connect(testRapid) + ForespoerselBesvartRiver().connect(testRapid) beforeEach { testRapid.reset() clearAllMocks() } - test("Ved notis om besvart forespørsel publiseres behov om å hente notifikasjon-ID-er uten IM-ID fra Spinn") { + test("Ved notis om besvart forespørsel publiseres behov om å hente notifikasjon-ID-er _uten_ IM-ID fra Spinn") { val forespoerselId = UUID.randomUUID() val forventetPublisert = mapOf( Key.EVENT_NAME to EventName.FORESPOERSEL_BESVART.toJson(), Key.UUID to UUID.randomUUID().toJson(), - Key.FORESPOERSEL_ID to forespoerselId.toJson(), Key.DATA to mapOf( Key.FORESPOERSEL_ID to forespoerselId.toJson(), @@ -55,14 +53,13 @@ class ForespoerselBesvartRiverTest : publisert.minus(Key.UUID) shouldContainExactly forventetPublisert.minus(Key.UUID) } - test("Ved notis om besvart forespørsel publiseres behov om å hente notifikasjon-ID-er med IM-ID fra Spinn") { + test("Ved notis om besvart forespørsel publiseres behov om å hente notifikasjon-ID-er _med_ IM-ID fra Spinn") { val forespoerselId = UUID.randomUUID() val spinnInntektsmeldingId = UUID.randomUUID() val forventetPublisert = mapOf( Key.EVENT_NAME to EventName.FORESPOERSEL_BESVART.toJson(), Key.UUID to UUID.randomUUID().toJson(), - Key.FORESPOERSEL_ID to forespoerselId.toJson(), Key.DATA to mapOf( Key.FORESPOERSEL_ID to forespoerselId.toJson(), @@ -76,9 +73,9 @@ class ForespoerselBesvartRiverTest : Pri.Key.SPINN_INNTEKTSMELDING_ID to spinnInntektsmeldingId.toJson(), ) - testRapid.inspektør.size shouldBeExactly 2 + testRapid.inspektør.size shouldBeExactly 1 - val publisert = testRapid.message(1).toMap() + val publisert = testRapid.firstMessage().toMap() publisert shouldContainKey Key.UUID diff --git a/forespoersel-marker-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmarkerbesvart/MarkerForespoerselBesvartRiver.kt b/forespoersel-marker-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmarkerbesvart/MarkerForespoerselBesvartRiver.kt index e4d5b59e5..de863eb14 100644 --- a/forespoersel-marker-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmarkerbesvart/MarkerForespoerselBesvartRiver.kt +++ b/forespoersel-marker-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmarkerbesvart/MarkerForespoerselBesvartRiver.kt @@ -5,6 +5,8 @@ import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.krev import no.nav.helsearbeidsgiver.felles.json.les +import no.nav.helsearbeidsgiver.felles.json.lesOrNull +import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.json.toPretty import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.PriProducer @@ -30,13 +32,15 @@ class MarkerForespoerselBesvartRiver( private val sikkerLogger = sikkerLogger() override fun les(json: Map): Melding? = - if (setOf(Key.BEHOV, Key.DATA, Key.FAIL).any(json::containsKey)) { + if (setOf(Key.BEHOV, Key.FAIL).any(json::containsKey)) { null } else { + val data = json[Key.DATA]?.toMap().orEmpty() + Melding( eventName = Key.EVENT_NAME.krev(EventName.INNTEKTSMELDING_MOTTATT, EventName.serializer(), json), transaksjonId = Key.UUID.les(UuidSerializer, json), - forespoerselId = Key.FORESPOERSEL_ID.les(UuidSerializer, json), + forespoerselId = Key.FORESPOERSEL_ID.lesOrNull(UuidSerializer, json) ?: Key.FORESPOERSEL_ID.les(UuidSerializer, data), ) } diff --git a/forespoersel-marker-besvart/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmarkerbesvart/MarkerForespoerselBesvartRiverTest.kt b/forespoersel-marker-besvart/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmarkerbesvart/MarkerForespoerselBesvartRiverTest.kt index b377f03f0..f877ace84 100644 --- a/forespoersel-marker-besvart/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmarkerbesvart/MarkerForespoerselBesvartRiverTest.kt +++ b/forespoersel-marker-besvart/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmarkerbesvart/MarkerForespoerselBesvartRiverTest.kt @@ -20,8 +20,6 @@ import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.PriProducer import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson import no.nav.helsearbeidsgiver.utils.json.toJson -import no.nav.helsearbeidsgiver.utils.test.wrapper.genererGyldig -import no.nav.helsearbeidsgiver.utils.wrapper.Fnr import java.util.UUID class MarkerForespoerselBesvartRiverTest : @@ -62,7 +60,6 @@ class MarkerForespoerselBesvartRiverTest : withData( mapOf( "melding med behov" to Pair(Key.BEHOV, BehovType.HENT_PERSONER.toJson()), - "melding med data" to Pair(Key.DATA, mapOf(Key.FNR to Fnr.genererGyldig().toJson()).toJson()), "melding med fail" to Pair(Key.FAIL, mockFail.toJson(Fail.serializer())), ), ) { uoensketKeyMedVerdi -> diff --git a/inntektservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntektservice/InntektService.kt b/inntektservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntektservice/InntektService.kt index e170190d4..b316c7616 100644 --- a/inntektservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntektservice/InntektService.kt +++ b/inntektservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntektservice/InntektService.kt @@ -84,7 +84,7 @@ class InntektService( MdcUtils.withLogFields( Log.behov(BehovType.HENT_TRENGER_IM), ) { - sikkerLogger.info("Publiserte melding:\n${it.toPretty()}.") + sikkerLogger.info("Publiserte melding:\n${it.toPretty()}") } } } @@ -112,7 +112,7 @@ class InntektService( MdcUtils.withLogFields( Log.behov(BehovType.HENT_INNTEKT), ) { - sikkerLogger.info("Publiserte melding:\n${it.toPretty()}.") + sikkerLogger.info("Publiserte melding:\n${it.toPretty()}") } } } diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/EksternInntektsmeldingLagretIT.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/EksternInntektsmeldingLagretIT.kt deleted file mode 100644 index e451346bc..000000000 --- a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/EksternInntektsmeldingLagretIT.kt +++ /dev/null @@ -1,78 +0,0 @@ -package no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest - -import io.kotest.matchers.nulls.shouldNotBeNull -import io.kotest.matchers.shouldBe -import io.mockk.every -import no.nav.helsearbeidsgiver.felles.BehovType -import no.nav.helsearbeidsgiver.felles.EventName -import no.nav.helsearbeidsgiver.felles.Key -import no.nav.helsearbeidsgiver.felles.domene.EksternInntektsmelding -import no.nav.helsearbeidsgiver.felles.json.les -import no.nav.helsearbeidsgiver.felles.json.toJson -import no.nav.helsearbeidsgiver.felles.json.toMap -import no.nav.helsearbeidsgiver.felles.test.mock.mockEksternInntektsmelding -import no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest.utils.EndToEndTest -import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer -import no.nav.helsearbeidsgiver.utils.json.toJson -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.TestInstance -import java.util.UUID - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -class EksternInntektsmeldingLagretIT : EndToEndTest() { - @Test - fun `lagre ekstern inntektsmelding hvis ikke fra nav_no`() { - every { spinnKlient.hentEksternInntektsmelding(any()) } returns mockEksternInntektsmelding() - - publish( - Key.EVENT_NAME to EventName.EKSTERN_INNTEKTSMELDING_REQUESTED.toJson(), - Key.UUID to Mock.transaksjonId.toJson(), - Key.DATA to - mapOf( - Key.FORESPOERSEL_ID to Mock.forespoerselId.toJson(), - Key.SPINN_INNTEKTSMELDING_ID to Mock.spinnInntektsmeldingId.toJson(), - ).toJson(), - ) - - messages - .filter(EventName.EKSTERN_INNTEKTSMELDING_REQUESTED) - .filter(BehovType.HENT_EKSTERN_INNTEKTSMELDING) - .firstAsMap() - .also { - Key.EVENT_NAME.les(EventName.serializer(), it) shouldBe EventName.EKSTERN_INNTEKTSMELDING_REQUESTED - Key.BEHOV.les(BehovType.serializer(), it) shouldBe BehovType.HENT_EKSTERN_INNTEKTSMELDING - Key.UUID.les(UuidSerializer, it) shouldBe Mock.transaksjonId - - val data = it[Key.DATA].shouldNotBeNull().toMap() - Key.FORESPOERSEL_ID.les(UuidSerializer, data) shouldBe Mock.forespoerselId - Key.SPINN_INNTEKTSMELDING_ID.les(UuidSerializer, data) shouldBe Mock.spinnInntektsmeldingId - } - - messages - .filter(EventName.EKSTERN_INNTEKTSMELDING_MOTTATT) - .firstAsMap() - .also { - Key.EVENT_NAME.les(EventName.serializer(), it) shouldBe EventName.EKSTERN_INNTEKTSMELDING_MOTTATT - Key.UUID.les(UuidSerializer, it) shouldBe Mock.transaksjonId - - val data = it[Key.DATA].shouldNotBeNull().toMap() - Key.FORESPOERSEL_ID.les(UuidSerializer, data) shouldBe Mock.forespoerselId - Key.EKSTERN_INNTEKTSMELDING.les(EksternInntektsmelding.serializer(), data) shouldBe mockEksternInntektsmelding() - } - - messages - .filter(EventName.EKSTERN_INNTEKTSMELDING_LAGRET) - .firstAsMap() - .also { - Key.EVENT_NAME.les(EventName.serializer(), it) shouldBe EventName.EKSTERN_INNTEKTSMELDING_LAGRET - Key.UUID.les(UuidSerializer, it) shouldBe Mock.transaksjonId - Key.FORESPOERSEL_ID.les(UuidSerializer, it) shouldBe Mock.forespoerselId - } - } - - private object Mock { - val forespoerselId: UUID = UUID.randomUUID() - val transaksjonId: UUID = UUID.randomUUID() - val spinnInntektsmeldingId: UUID = UUID.randomUUID() - } -} diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/ForespoerselBesvartIT.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/ForespoerselBesvartIT.kt index 21e3435f0..38c0941b7 100644 --- a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/ForespoerselBesvartIT.kt +++ b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/ForespoerselBesvartIT.kt @@ -3,12 +3,15 @@ package no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest import io.kotest.matchers.maps.shouldContainKey import io.kotest.matchers.nulls.shouldNotBeNull import io.kotest.matchers.shouldBe -import no.nav.helsearbeidsgiver.felles.BehovType +import io.mockk.every import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key +import no.nav.helsearbeidsgiver.felles.domene.EksternInntektsmelding import no.nav.helsearbeidsgiver.felles.json.les +import no.nav.helsearbeidsgiver.felles.json.lesOrNull import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri +import no.nav.helsearbeidsgiver.felles.test.mock.mockEksternInntektsmelding import no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest.utils.EndToEndTest import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer import no.nav.helsearbeidsgiver.utils.json.toJson @@ -26,18 +29,26 @@ class ForespoerselBesvartIT : EndToEndTest() { @Test fun `ved notis om besvart forespørsel så ferdigstilles sak og oppgave`() { + val forespoerselId: UUID = UUID.randomUUID() + val spinnInntektsmeldingId: UUID = UUID.randomUUID() + val eksternIm = mockEksternInntektsmelding() + + every { spinnKlient.hentEksternInntektsmelding(any()) } returns eksternIm + publish( Pri.Key.NOTIS to Pri.NotisType.FORESPOERSEL_BESVART.toJson(Pri.NotisType.serializer()), - Pri.Key.FORESPOERSEL_ID to Mock.forespoerselId.toJson(), - Pri.Key.SPINN_INNTEKTSMELDING_ID to Mock.spinnInntektsmeldingId.toJson(), + Pri.Key.FORESPOERSEL_ID to forespoerselId.toJson(), + Pri.Key.SPINN_INNTEKTSMELDING_ID to spinnInntektsmeldingId.toJson(), ) + messages .filter(EventName.FORESPOERSEL_BESVART) .firstAsMap() .also { it shouldContainKey Key.UUID - Key.FORESPOERSEL_ID.les(UuidSerializer, it) shouldBe Mock.forespoerselId + val data = it[Key.DATA].shouldNotBeNull().toMap() + Key.FORESPOERSEL_ID.les(UuidSerializer, data) shouldBe forespoerselId } messages @@ -46,21 +57,27 @@ class ForespoerselBesvartIT : EndToEndTest() { .also { it shouldContainKey Key.UUID - Key.FORESPOERSEL_ID.les(UuidSerializer, it) shouldBe Mock.forespoerselId + Key.FORESPOERSEL_ID.les(UuidSerializer, it) shouldBe forespoerselId } messages - .filter(EventName.EKSTERN_INNTEKTSMELDING_REQUESTED) - .filter(BehovType.HENT_EKSTERN_INNTEKTSMELDING) + .filter(EventName.EKSTERN_INNTEKTSMELDING_MOTTATT) .firstAsMap() .also { + it shouldContainKey Key.UUID + val data = it[Key.DATA].shouldNotBeNull().toMap() - Key.SPINN_INNTEKTSMELDING_ID.les(UuidSerializer, data) shouldBe Mock.spinnInntektsmeldingId + Key.FORESPOERSEL_ID.lesOrNull(UuidSerializer, data) shouldBe forespoerselId + Key.EKSTERN_INNTEKTSMELDING.lesOrNull(EksternInntektsmelding.serializer(), data) shouldBe eksternIm } - } - private object Mock { - val forespoerselId: UUID = UUID.randomUUID() - val spinnInntektsmeldingId: UUID = UUID.randomUUID() + messages + .filter(EventName.EKSTERN_INNTEKTSMELDING_LAGRET) + .firstAsMap() + .also { + it shouldContainKey Key.UUID + + Key.FORESPOERSEL_ID.les(UuidSerializer, it) shouldBe forespoerselId + } } } diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/EndToEndTest.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/EndToEndTest.kt index 80a6fb793..ec18c0df0 100644 --- a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/EndToEndTest.kt +++ b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/EndToEndTest.kt @@ -36,7 +36,6 @@ import no.nav.helsearbeidsgiver.inntektsmelding.api.tilgang.TilgangProducer import no.nav.helsearbeidsgiver.inntektsmelding.berikinntektsmeldingservice.createBerikInntektsmeldingService import no.nav.helsearbeidsgiver.inntektsmelding.brospinn.SpinnKlient import no.nav.helsearbeidsgiver.inntektsmelding.brospinn.createHentEksternImRiver -import no.nav.helsearbeidsgiver.inntektsmelding.brospinn.createSpinnService import no.nav.helsearbeidsgiver.inntektsmelding.brreg.createBrregRiver import no.nav.helsearbeidsgiver.inntektsmelding.db.InntektsmeldingRepository import no.nav.helsearbeidsgiver.inntektsmelding.db.SelvbestemtImRepo @@ -218,7 +217,6 @@ abstract class EndToEndTest : ContainerTest() { createInntektSelvbestemtService(redisConnection) createLagreSelvbestemtImService(redisConnection) createNotifikasjonService() - createSpinnService() createTilgangService(redisConnection) createHentForespoerselService(redisConnection) createHentSelvbestemtImService(redisConnection) diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/MessagesTest.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/MessagesTest.kt index b3ebbf8ae..23b55a3f7 100644 --- a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/MessagesTest.kt +++ b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/MessagesTest.kt @@ -45,7 +45,7 @@ class MessagesTest : test("finner ikke manglende melding for behov") { Mock.meldinger - .filter(BehovType.HENT_EKSTERN_INNTEKTSMELDING) + .filter(BehovType.HENT_LAGRET_IM) .all() .shouldBeEmpty() } diff --git a/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiver.kt b/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiver.kt index 900f8dba3..9dd5675f3 100644 --- a/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiver.kt +++ b/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiver.kt @@ -10,6 +10,7 @@ import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.lesOrNull import no.nav.helsearbeidsgiver.felles.json.toJson +import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.json.toPretty import no.nav.helsearbeidsgiver.felles.metrics.Metrics import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail @@ -38,9 +39,10 @@ class JournalfoerImRiver( private val sikkerLogger = sikkerLogger() override fun les(json: Map): JournalfoerImMelding? = - if (setOf(Key.BEHOV, Key.DATA, Key.FAIL).any(json::containsKey)) { + if (setOf(Key.BEHOV, Key.FAIL).any(json::containsKey)) { null } else { + val data = json[Key.DATA]?.toMap().orEmpty() val eventName = Key.EVENT_NAME.les(EventName.serializer(), json) val transaksjonId = Key.UUID.les(UuidSerializer, json) @@ -49,15 +51,21 @@ class JournalfoerImRiver( JournalfoerImMelding( eventName = eventName, transaksjonId = transaksjonId, - inntektsmelding = Key.INNTEKTSMELDING.les(Inntektsmelding.serializer(), json), - bestemmendeFravaersdag = Key.BESTEMMENDE_FRAVAERSDAG.lesOrNull(LocalDateSerializer, json), + inntektsmelding = + Key.INNTEKTSMELDING.lesOrNull(Inntektsmelding.serializer(), json) + ?: Key.INNTEKTSMELDING.les(Inntektsmelding.serializer(), data), + bestemmendeFravaersdag = + Key.BESTEMMENDE_FRAVAERSDAG.lesOrNull(LocalDateSerializer, json) + ?: Key.BESTEMMENDE_FRAVAERSDAG.lesOrNull(LocalDateSerializer, data), ) EventName.SELVBESTEMT_IM_LAGRET -> JournalfoerImMelding( eventName = eventName, transaksjonId = transaksjonId, - inntektsmelding = Key.SELVBESTEMT_INNTEKTSMELDING.les(Inntektsmelding.serializer(), json), + inntektsmelding = + Key.SELVBESTEMT_INNTEKTSMELDING.lesOrNull(Inntektsmelding.serializer(), json) + ?: Key.SELVBESTEMT_INNTEKTSMELDING.les(Inntektsmelding.serializer(), data), bestemmendeFravaersdag = null, ) diff --git a/tilgangservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/tilgangservice/TilgangForespoerselService.kt b/tilgangservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/tilgangservice/TilgangForespoerselService.kt index 659b806dd..0f2ef82dd 100644 --- a/tilgangservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/tilgangservice/TilgangForespoerselService.kt +++ b/tilgangservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/tilgangservice/TilgangForespoerselService.kt @@ -87,7 +87,7 @@ class TilgangForespoerselService( MdcUtils.withLogFields( Log.behov(BehovType.HENT_TRENGER_IM), ) { - sikkerLogger.info("Publiserte melding:\n${it.toPretty()}.") + sikkerLogger.info("Publiserte melding:\n${it.toPretty()}") } } } @@ -114,7 +114,7 @@ class TilgangForespoerselService( MdcUtils.withLogFields( Log.behov(BehovType.TILGANGSKONTROLL), ) { - sikkerLogger.info("Publiserte melding:\n${it.toPretty()}.") + sikkerLogger.info("Publiserte melding:\n${it.toPretty()}") } } } diff --git a/tilgangservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/tilgangservice/TilgangOrgService.kt b/tilgangservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/tilgangservice/TilgangOrgService.kt index 4e59fcfe7..ac1b1bb39 100644 --- a/tilgangservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/tilgangservice/TilgangOrgService.kt +++ b/tilgangservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/tilgangservice/TilgangOrgService.kt @@ -77,7 +77,7 @@ class TilgangOrgService( MdcUtils.withLogFields( Log.behov(BehovType.TILGANGSKONTROLL), ) { - sikkerLogger.info("Publiserte melding:\n${it.toPretty()}.") + sikkerLogger.info("Publiserte melding:\n${it.toPretty()}") } } }