Skip to content

Commit

Permalink
videresend hele forespørselen i forespoerselMottatt eventet (#735)
Browse files Browse the repository at this point in the history
Co-authored-by: Magnus Sælensminde <[email protected]>
  • Loading branch information
b162214 and magnusae authored Oct 30, 2024
1 parent 1df9dc8 commit 486bbce
Show file tree
Hide file tree
Showing 14 changed files with 71 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ enum class Key(
ORG_RETTIGHETER("org_rettigheter"),
FORESPOERSEL_SVAR("forespoersel-svar"),
FORESPOERSEL_MAP("forespoersel_map"),
FORESPOERSEL("forespoersel"),
INNTEKT("inntekt"),
FNR("fnr"),
FNR_LISTE("fnr_liste"),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
@file:UseSerializers(UuidSerializer::class, LocalDateSerializer::class)

package no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene
package no.nav.helsearbeidsgiver.felles.domene

import kotlinx.serialization.Serializable
import kotlinx.serialization.UseSerializers
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Periode
import no.nav.helsearbeidsgiver.felles.domene.Forespoersel
import no.nav.helsearbeidsgiver.felles.domene.ForespurtData
import no.nav.helsearbeidsgiver.utils.json.serializer.LocalDateSerializer
import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer
import no.nav.helsearbeidsgiver.utils.wrapper.Fnr
Expand All @@ -15,7 +13,7 @@ import java.time.LocalDate
import java.util.UUID

@Serializable
data class Forespoersel(
data class ForespoerselFraBro(
val orgnr: Orgnr,
val fnr: Fnr,
/** Ikke bruk ved henting av én forespørsel (Storebror lekker feil id). */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ object Pri {
SPINN_INNTEKTSMELDING_ID("spinnInntektsmeldingId"),
VEDTAKSPERIODE_ID_LISTE("vedtaksperiode_id_liste"),
SKAL_HA_PAAMINNELSE("skal_ha_paaminnelse"),
FORESPOERSEL("forespoersel"),
;

override fun toString(): String = str
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.json.JsonElement
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.domene.Forespoersel
import no.nav.helsearbeidsgiver.felles.domene.ForespoerselFraBro
import no.nav.helsearbeidsgiver.felles.json.krev
import no.nav.helsearbeidsgiver.felles.json.les
import no.nav.helsearbeidsgiver.felles.json.toJson
Expand All @@ -27,6 +29,7 @@ data class Melding(
val orgnr: Orgnr,
val fnr: Fnr,
val skalHaPaaminnelse: Boolean,
val forespoerselFraBro: ForespoerselFraBro,
)

/** Tar imot notifikasjon om at det er kommet en forespørsel om arbeidsgiveropplysninger. */
Expand All @@ -42,6 +45,7 @@ class ForespoerselMottattRiver : PriObjectRiver<Melding>() {
orgnr = Pri.Key.ORGNR.les(Orgnr.serializer(), json),
fnr = Pri.Key.FNR.les(Fnr.serializer(), json),
skalHaPaaminnelse = Pri.Key.SKAL_HA_PAAMINNELSE.les(Boolean.serializer(), json),
forespoerselFraBro = Pri.Key.FORESPOERSEL.les(ForespoerselFraBro.serializer(), json),
)

override fun Melding.haandter(json: Map<Pri.Key, JsonElement>): Map<Key, JsonElement> {
Expand All @@ -57,6 +61,7 @@ class ForespoerselMottattRiver : PriObjectRiver<Melding>() {
Key.ORGNRUNDERENHET to orgnr.toJson(),
Key.FNR to fnr.toJson(),
Key.SKAL_HA_PAAMINNELSE to skalHaPaaminnelse.toJson(Boolean.serializer()),
Key.FORESPOERSEL to forespoerselFraBro.toForespoersel().toJson(Forespoersel.serializer()),
).toJson(),
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,19 @@ import io.kotest.matchers.maps.shouldContainKey
import io.mockk.clearAllMocks
import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.json.JsonElement
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.til
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.domene.Forespoersel
import no.nav.helsearbeidsgiver.felles.domene.ForespoerselFraBro
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.mock.mockForespurtData
import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage
import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson
import no.nav.helsearbeidsgiver.utils.json.toJson
import no.nav.helsearbeidsgiver.utils.test.date.januar
import no.nav.helsearbeidsgiver.utils.test.wrapper.genererGyldig
import no.nav.helsearbeidsgiver.utils.wrapper.Fnr
import no.nav.helsearbeidsgiver.utils.wrapper.Orgnr
Expand Down Expand Up @@ -52,6 +57,7 @@ class ForespoerselMottattRiverTest :
Key.ORGNRUNDERENHET to innkommendeMelding.orgnr.toJson(),
Key.FNR to innkommendeMelding.fnr.toJson(),
Key.SKAL_HA_PAAMINNELSE to innkommendeMelding.skalHaPaaminnelse.toJson(Boolean.serializer()),
Key.FORESPOERSEL to innkommendeMelding.forespoerselFraBro.toForespoersel().toJson(Forespoersel.serializer()),
).toJson(),
)
}
Expand All @@ -65,6 +71,7 @@ private fun mockInnkommendeMelding(): Melding =
orgnr = Orgnr.genererGyldig(),
fnr = Fnr.genererGyldig(),
skalHaPaaminnelse = true,
forespoerselFraBro = Mock.forespoerselFraBro,
)

private fun Melding.toMap(): Map<Pri.Key, JsonElement> =
Expand All @@ -74,4 +81,21 @@ private fun Melding.toMap(): Map<Pri.Key, JsonElement> =
Pri.Key.ORGNR to orgnr.toJson(),
Pri.Key.FNR to fnr.toJson(),
Pri.Key.SKAL_HA_PAAMINNELSE to skalHaPaaminnelse.toJson(Boolean.serializer()),
Pri.Key.FORESPOERSEL to forespoerselFraBro.toJson(ForespoerselFraBro.serializer()),
)

object Mock {
val orgnr = Orgnr.genererGyldig()
val forespoerselFraBro =
ForespoerselFraBro(
orgnr = orgnr,
fnr = Fnr.genererGyldig(),
vedtaksperiodeId = UUID.randomUUID(),
forespoerselId = UUID.randomUUID(),
sykmeldingsperioder = listOf(2.januar til 16.januar),
egenmeldingsperioder = listOf(1.januar til 1.januar),
bestemmendeFravaersdager = mapOf(orgnr to 1.januar),
forespurtData = mockForespurtData(),
erBesvart = false,
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,13 @@ package no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene
import kotlinx.serialization.Serializable
import kotlinx.serialization.UseSerializers
import kotlinx.serialization.json.JsonElement
import no.nav.helsearbeidsgiver.felles.domene.ForespoerselFraBro
import no.nav.helsearbeidsgiver.utils.json.serializer.LocalDateSerializer
import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer

@Serializable
data class ForespoerselListeSvar(
val resultat: List<Forespoersel>,
val resultat: List<ForespoerselFraBro>,
val boomerang: JsonElement,
val feil: Feil? = null,
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@ package no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene
import kotlinx.serialization.Serializable
import kotlinx.serialization.UseSerializers
import kotlinx.serialization.json.JsonElement
import no.nav.helsearbeidsgiver.felles.domene.ForespoerselFraBro
import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer
import java.util.UUID

@Serializable
data class ForespoerselSvar(
val forespoerselId: UUID,
val resultat: Forespoersel? = null,
val resultat: ForespoerselFraBro? = null,
val feil: Feil? = null,
val boomerang: JsonElement,
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import kotlinx.serialization.json.JsonElement
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.til
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.domene.ForespoerselFraBro
import no.nav.helsearbeidsgiver.felles.json.toJson
import no.nav.helsearbeidsgiver.felles.test.mock.mockForespurtData
import no.nav.helsearbeidsgiver.felles.test.mock.mockForespurtDataMedFastsattInntekt
import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene.Forespoersel
import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene.ForespoerselListeSvar
import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene.ForespoerselSvar
import no.nav.helsearbeidsgiver.utils.json.toJson
Expand All @@ -32,7 +32,7 @@ fun mockForespoerselListeSvarMedSuksess(): ForespoerselListeSvar {
return ForespoerselListeSvar(
resultat =
listOf(
Forespoersel(
ForespoerselFraBro(
orgnr = orgnr,
fnr = Fnr.genererGyldig(),
vedtaksperiodeId = UUID.randomUUID(),
Expand Down Expand Up @@ -73,9 +73,9 @@ fun mockForespoerselListeSvarMedFeil(): ForespoerselListeSvar =
feil = ForespoerselListeSvar.Feil.FORESPOERSEL_FOR_VEDTAKSPERIODE_ID_LISTE_FEILET,
)

fun mockForespoerselSvarSuksess(forespoerselId: UUID): Forespoersel {
fun mockForespoerselSvarSuksess(forespoerselId: UUID): ForespoerselFraBro {
val orgnr = Orgnr.genererGyldig()
return Forespoersel(
return ForespoerselFraBro(
orgnr = orgnr,
fnr = Fnr.genererGyldig(),
forespoerselId = forespoerselId,
Expand All @@ -88,9 +88,9 @@ fun mockForespoerselSvarSuksess(forespoerselId: UUID): Forespoersel {
)
}

fun mockForespoerselSvarSuksessMedFastsattInntekt(forespoerselId: UUID): Forespoersel {
fun mockForespoerselSvarSuksessMedFastsattInntekt(forespoerselId: UUID): ForespoerselFraBro {
val orgnr = Orgnr.genererGyldig()
return Forespoersel(
return ForespoerselFraBro(
orgnr = orgnr,
fnr = Fnr.genererGyldig(),
forespoerselId = forespoerselId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import no.nav.helsearbeidsgiver.felles.BehovType
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.domene.Forespoersel
import no.nav.helsearbeidsgiver.felles.domene.ForespoerselFraBro
import no.nav.helsearbeidsgiver.felles.json.lesOrNull
import no.nav.helsearbeidsgiver.felles.json.orgMapSerializer
import no.nav.helsearbeidsgiver.felles.json.personMapSerializer
Expand Down Expand Up @@ -41,7 +42,6 @@ import org.junit.jupiter.api.Test
import org.junit.jupiter.api.TestInstance
import java.util.UUID
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding as InntektsmeldingV1
import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene.Forespoersel as ForespoerselBro

@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class BerikInntektsmeldingServiceIT : EndToEndTest() {
Expand Down Expand Up @@ -346,7 +346,7 @@ class BerikInntektsmeldingServiceIT : EndToEndTest() {
)

val forespoerselSvar =
ForespoerselBro(
ForespoerselFraBro(
orgnr = Orgnr(forespoersel.orgnr),
fnr = Fnr(forespoersel.fnr),
forespoerselId = forespoerselId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@ import kotlinx.serialization.builtins.serializer
import no.nav.helsearbeidsgiver.felles.BehovType
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.domene.ForespoerselFraBro
import no.nav.helsearbeidsgiver.felles.domene.Person
import no.nav.helsearbeidsgiver.felles.json.lesOrNull
import no.nav.helsearbeidsgiver.felles.json.orgMapSerializer
import no.nav.helsearbeidsgiver.felles.json.personMapSerializer
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.mock.mockForespurtData
import no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest.utils.EndToEndTest
import no.nav.helsearbeidsgiver.utils.json.fromJson
import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer
Expand Down Expand Up @@ -44,6 +46,18 @@ class ForespoerselMottattIT : EndToEndTest() {
Pri.Key.ORGNR to Mock.orgnr.toJson(),
Pri.Key.FNR to Mock.fnr.toJson(),
Pri.Key.SKAL_HA_PAAMINNELSE to Mock.skalHaPaaminnelse.toJson(Boolean.serializer()),
Pri.Key.FORESPOERSEL to
ForespoerselFraBro(
orgnr = Mock.orgnr,
fnr = Mock.fnr,
forespoerselId = Mock.forespoerselId,
vedtaksperiodeId = UUID.randomUUID(),
sykmeldingsperioder = emptyList(),
egenmeldingsperioder = emptyList(),
bestemmendeFravaersdager = emptyMap(),
forespurtData = mockForespurtData(),
erBesvart = false,
).toJson(ForespoerselFraBro.serializer()),
)

val messagesFilteredForespoerselMottatt = messages.filter(EventName.FORESPOERSEL_MOTTATT)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import no.nav.helsearbeidsgiver.felles.BehovType
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.domene.Forespoersel
import no.nav.helsearbeidsgiver.felles.domene.ForespoerselFraBro
import no.nav.helsearbeidsgiver.felles.json.les
import no.nav.helsearbeidsgiver.felles.json.toJson
import no.nav.helsearbeidsgiver.felles.json.toMap
Expand All @@ -37,7 +38,6 @@ import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.TestInstance
import java.util.UUID
import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene.Forespoersel as ForespoerselBro

@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class InnsendingIT : EndToEndTest() {
Expand Down Expand Up @@ -244,7 +244,7 @@ class InnsendingIT : EndToEndTest() {
)

val forespoerselSvar =
ForespoerselBro(
ForespoerselFraBro(
orgnr = Orgnr(forespoersel.orgnr),
fnr = Fnr(forespoersel.fnr),
forespoerselId = forespoerselId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.skjema.SkjemaInntektsm
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.til
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.domene.ForespoerselFraBro
import no.nav.helsearbeidsgiver.felles.domene.ResultJson
import no.nav.helsearbeidsgiver.felles.json.lesOrNull
import no.nav.helsearbeidsgiver.felles.json.toJson
Expand All @@ -19,7 +20,6 @@ import no.nav.helsearbeidsgiver.felles.rapidsrivers.redis.RedisPrefix
import no.nav.helsearbeidsgiver.felles.test.mock.mockForespurtData
import no.nav.helsearbeidsgiver.felles.test.mock.mockInntektsmelding
import no.nav.helsearbeidsgiver.felles.test.mock.mockSkjemaInntektsmelding
import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene.Forespoersel
import no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest.utils.EndToEndTest
import no.nav.helsearbeidsgiver.utils.json.fromJson
import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer
Expand Down Expand Up @@ -158,7 +158,7 @@ class InnsendingServiceIT : EndToEndTest() {
val vedtaksperiodeId: UUID = UUID.randomUUID()

val forespoerselSvar =
Forespoersel(
ForespoerselFraBro(
orgnr = orgnr,
fnr = Fnr.genererGyldig(),
forespoerselId = skjema.forespoerselId,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest.mock

import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.til
import no.nav.helsearbeidsgiver.felles.domene.ForespoerselFraBro
import no.nav.helsearbeidsgiver.felles.test.mock.mockForespurtData
import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene.Forespoersel
import no.nav.helsearbeidsgiver.utils.test.date.januar
import no.nav.helsearbeidsgiver.utils.test.wrapper.genererGyldig
import no.nav.helsearbeidsgiver.utils.wrapper.Fnr
import no.nav.helsearbeidsgiver.utils.wrapper.Orgnr
import java.util.UUID

fun mockForespoerselSvarSuksess(): Forespoersel {
fun mockForespoerselSvarSuksess(): ForespoerselFraBro {
val orgnr = Orgnr.genererGyldig()
return Forespoersel(
return ForespoerselFraBro(
orgnr = orgnr,
fnr = Fnr.genererGyldig(),
forespoerselId = UUID.randomUUID(),
Expand All @@ -31,10 +31,10 @@ fun mockForespoerselSvarSuksess(): Forespoersel {
fun mockForespoerselListeSvarResultat(
vedtaksperiodeId1: UUID,
vedtaksperiodeId2: UUID,
): List<Forespoersel> {
): List<ForespoerselFraBro> {
val orgnr = Orgnr.genererGyldig()
val forespoersel =
Forespoersel(
ForespoerselFraBro(
orgnr = orgnr,
fnr = Fnr.genererGyldig(),
forespoerselId = UUID.randomUUID(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import no.nav.helsearbeidsgiver.brreg.Virksomhet
import no.nav.helsearbeidsgiver.dokarkiv.DokArkivClient
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.db.exposed.Database
import no.nav.helsearbeidsgiver.felles.domene.ForespoerselFraBro
import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri
import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.PriProducer
import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish
Expand Down Expand Up @@ -49,7 +50,6 @@ import no.nav.helsearbeidsgiver.inntektsmelding.forespoerselinfotrygd.createFore
import no.nav.helsearbeidsgiver.inntektsmelding.forespoerselmarkerbesvart.createMarkerForespoerselBesvart
import no.nav.helsearbeidsgiver.inntektsmelding.forespoerselmottatt.createForespoerselMottattRiver
import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.createHelsebroRivers
import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene.Forespoersel
import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene.ForespoerselListeSvar
import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene.ForespoerselSvar
import no.nav.helsearbeidsgiver.inntektsmelding.innsending.createInnsending
Expand Down Expand Up @@ -317,7 +317,7 @@ abstract class EndToEndTest : ContainerTest() {

fun mockForespoerselSvarFraHelsebro(
forespoerselId: UUID,
forespoerselSvar: Forespoersel,
forespoerselSvar: ForespoerselFraBro,
) {
var boomerang: JsonElement? = null

Expand Down Expand Up @@ -351,7 +351,7 @@ abstract class EndToEndTest : ContainerTest() {
}
}

fun mockForespoerselSvarFraHelsebro(forespoerselListeSvar: List<Forespoersel>) {
fun mockForespoerselSvarFraHelsebro(forespoerselListeSvar: List<ForespoerselFraBro>) {
var boomerang: JsonElement? = null

every {
Expand Down

0 comments on commit 486bbce

Please sign in to comment.