Skip to content

Commit

Permalink
Fjern mellomledd for hente ekstern IM (#766)
Browse files Browse the repository at this point in the history
* Fjern mellomledd for hente ekstern IM
  • Loading branch information
bjerga authored Nov 13, 2024
1 parent db1526b commit d844ca7
Show file tree
Hide file tree
Showing 19 changed files with 119 additions and 457 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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}...")
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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<Key, JsonElement>,
val forespoerselId: UUID,
val spinnImId: UUID,
)
Expand All @@ -34,35 +34,37 @@ class HentEksternImRiver(
private val sikkerLogger = sikkerLogger()

override fun les(json: Map<Key, JsonElement>): 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<Key, JsonElement>): Map<Key, JsonElement> {
override fun HentEksternImMelding.haandter(json: Map<Key, JsonElement>): Map<Key, JsonElement>? {
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(
Expand Down Expand Up @@ -94,7 +96,6 @@ class HentEksternImRiver(
mapOf(
Log.klasse(this@HentEksternImRiver),
Log.event(eventName),
Log.behov(behovType),
Log.transaksjonId(transaksjonId),
Log.forespoerselId(forespoerselId),
)
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -41,7 +41,7 @@ class HentEksternImRiverTest :
}

test("henter ekstern inntektsmelding") {
val innkommendeMelding = MockHent.innkommendeMelding()
val innkommendeMelding = Mock.innkommendeMelding()

every { mockSpinnKlient.hentEksternInntektsmelding(any()) } returns mockEksternInntektsmelding()

Expand All @@ -51,20 +51,45 @@ 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 {
mockSpinnKlient.hentEksternInntektsmelding(innkommendeMelding.spinnImId)
}
}

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(
Expand All @@ -80,7 +105,7 @@ class HentEksternImRiverTest :
),
),
) { (error, expectedFeilmelding) ->
val innkommendeMelding = MockHent.innkommendeMelding()
val innkommendeMelding = Mock.innkommendeMelding()

val innkommendeJsonMap = innkommendeMelding.toMap()

Expand Down Expand Up @@ -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),
Expand All @@ -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<Key, JsonElement> =
mapOf(
Key.EVENT_NAME to eventName.toJson(),
Key.BEHOV to behovType.toJson(),
Key.UUID to transaksjonId.toJson(),
Key.DATA to
mapOf(
Expand All @@ -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,
Expand Down
Loading

0 comments on commit d844ca7

Please sign in to comment.