Skip to content

Commit

Permalink
Merge branch 'main' into dev/service-med-steg-opprett-oppgave
Browse files Browse the repository at this point in the history
  • Loading branch information
bjerga committed Jul 18, 2024
2 parents f1a24b2 + e67290d commit 51ef674
Show file tree
Hide file tree
Showing 42 changed files with 930 additions and 719 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import io.ktor.server.routing.routing
import kotlinx.serialization.builtins.serializer
import no.nav.helse.rapids_rivers.RapidApplication
import no.nav.helse.rapids_rivers.RapidsConnection
import no.nav.helsearbeidsgiver.felles.getEnvVar
import no.nav.helsearbeidsgiver.felles.rapidsrivers.registerShutdownLifecycle
import no.nav.helsearbeidsgiver.inntektsmelding.api.aktiveorgnr.aktiveOrgnrRoute
import no.nav.helsearbeidsgiver.inntektsmelding.api.auth.Tilgangskontroll
Expand Down Expand Up @@ -118,12 +117,7 @@ fun Application.apiModule(
inntektSelvbestemtRoute(rapid, tilgangskontroll, redisPoller)
innsendingRoute(rapid, tilgangskontroll, redisPoller)
kvitteringRoute(rapid, tilgangskontroll, redisPoller)
if (getEnvVar("NAIS_CLUSTER_NAME", "") != "prod-gcp") {
lagreSelvbestemtImRoute(rapid, tilgangskontroll, redisPoller)
// TODO: Disablet endepunktet i prod -enable når vi kan sende med vedtaksperiodeID fra flex!
} else {
logger.info("Lagreselvbestemt-endepunktet er disablet i produksjon!")
}
lagreSelvbestemtImRoute(rapid, tilgangskontroll, redisPoller)
hentSelvbestemtImRoute(rapid, tilgangskontroll, redisPoller)
aktiveOrgnrRoute(rapid, redisPoller)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,22 +21,23 @@ class InnsendingProducer(
}

fun publish(
clientId: UUID,
transaksjonId: UUID,
forespoerselId: UUID,
request: Innsending,
arbeidsgiverFnr: Fnr,
) {
rapid
.publish(
Key.EVENT_NAME to EventName.INSENDING_STARTED.toJson(),
Key.CLIENT_ID to clientId.toJson(),
Key.UUID to transaksjonId.toJson(),
Key.DATA to "".toJson(),
Key.FORESPOERSEL_ID to forespoerselId.toJson(),
Key.ORGNRUNDERENHET to request.orgnrUnderenhet.toJson(),
Key.IDENTITETSNUMMER to request.identitetsnummer.toJson(),
Key.ARBEIDSGIVER_ID to arbeidsgiverFnr.toJson(),
Key.SKJEMA_INNTEKTSMELDING to request.toJson(Innsending.serializer()),
).also {
logger.info("Publiserte til kafka forespørselId: $forespoerselId og clientId=$clientId")
logger.info("Publiserte til kafka forespørselId: $forespoerselId og transaksjonId=$transaksjonId")
sikkerLogger.info("Publiserte til kafka forespørselId: $forespoerselId json=${it.toPretty()}")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ fun Route.innsendingRoute(
.register()

post(Routes.INNSENDING + "/{forespoerselId}") {
val clientId = UUID.randomUUID()
val transaksjonId = UUID.randomUUID()

val forespoerselId =
call.parameters["forespoerselId"]
Expand All @@ -73,10 +73,9 @@ fun Route.innsendingRoute(

request.validate()
val innloggerFnr = call.request.lesFnrFraAuthToken()
producer.publish(clientId, forespoerselId, request, innloggerFnr)
logger.info("Publiserte til rapid med forespørselId: $forespoerselId og clientId=$clientId")
producer.publish(transaksjonId, forespoerselId, request, innloggerFnr)

val resultatJson = redisPoller.hent(clientId).fromJson(ResultJson.serializer())
val resultatJson = redisPoller.hent(transaksjonId).fromJson(ResultJson.serializer())
sikkerLogger.info("Fikk resultat for innsending:\n$resultatJson")

if (resultatJson.success != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,20 @@ class InntektProducer(
}

fun publish(
clientId: UUID,
transaksjonId: UUID,
request: InntektRequest,
) {
MdcUtils.withLogFields(
Log.klasse(this),
Log.event(EventName.INNTEKT_REQUESTED),
Log.clientId(clientId),
Log.clientId(transaksjonId),
Log.forespoerselId(request.forespoerselId),
) {
rapid
.publish(
Key.EVENT_NAME to EventName.INNTEKT_REQUESTED.toJson(),
Key.CLIENT_ID to clientId.toJson(),
Key.UUID to transaksjonId.toJson(),
Key.DATA to "".toJson(),
Key.FORESPOERSEL_ID to request.forespoerselId.toJson(),
Key.SKJAERINGSTIDSPUNKT to request.skjaeringstidspunkt.toJson(),
).also { json ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ fun Route.inntektRoute(
val inntektProducer = InntektProducer(rapid)

post(Routes.INNTEKT) {
val clientId = UUID.randomUUID()
val transaksjonId = UUID.randomUUID()

val request = call.receive<InntektRequest>()

Expand All @@ -47,9 +47,9 @@ fun Route.inntektRoute(
}

try {
inntektProducer.publish(clientId, request)
inntektProducer.publish(transaksjonId, request)

val resultatJson = redisPoller.hent(clientId).fromJson(ResultJson.serializer())
val resultatJson = redisPoller.hent(transaksjonId).fromJson(ResultJson.serializer())
sikkerLogger.info("Fikk inntektresultat:\n$resultatJson")

val resultat = resultatJson.success?.fromJson(Inntekt.serializer())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
package no.nav.helsearbeidsgiver.inntektsmelding.api.kvittering

import no.nav.helse.rapids_rivers.JsonMessage
import no.nav.helse.rapids_rivers.RapidsConnection
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.json.toJson
import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish
import no.nav.helsearbeidsgiver.felles.utils.Log
import no.nav.helsearbeidsgiver.inntektsmelding.api.logger
import no.nav.helsearbeidsgiver.inntektsmelding.api.sikkerLogger
import no.nav.helsearbeidsgiver.utils.json.toJson
import no.nav.helsearbeidsgiver.utils.json.toPretty
import no.nav.helsearbeidsgiver.utils.log.MdcUtils
import java.util.UUID

class KvitteringProducer(
Expand All @@ -15,18 +21,27 @@ class KvitteringProducer(
}

fun publish(
clientId: UUID,
foresporselId: UUID,
transaksjonId: UUID,
forespoerselId: UUID,
) {
val packet: JsonMessage =
JsonMessage.newMessage(
mapOf(
Key.EVENT_NAME.str to EventName.KVITTERING_REQUESTED.name,
Key.CLIENT_ID.str to clientId,
Key.FORESPOERSEL_ID.str to foresporselId,
),
)
rapid.publish(packet.toJson())
logger.info("Publiserte kvittering requested, forespørselid=$foresporselId")
MdcUtils.withLogFields(
Log.klasse(this),
Log.event(EventName.KVITTERING_REQUESTED),
Log.transaksjonId(transaksjonId),
Log.forespoerselId(forespoerselId),
) {
rapid
.publish(
Key.EVENT_NAME to EventName.KVITTERING_REQUESTED.toJson(),
Key.UUID to transaksjonId.toJson(),
Key.DATA to "".toJson(),
Key.FORESPOERSEL_ID to forespoerselId.toJson(),
).also { json ->
"Publiserte request om kvittering.".let {
logger.info(it)
sikkerLogger.info("$it\n${json.toPretty()}")
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ fun Route.kvitteringRoute(
.register()

get(Routes.KVITTERING) {
val clientId = UUID.randomUUID()
val transaksjonId = UUID.randomUUID()

val forespoerselId =
call.parameters["uuid"]
Expand All @@ -76,8 +76,8 @@ fun Route.kvitteringRoute(
logger.info("Authorize took $it")
}

kvitteringProducer.publish(clientId, forespoerselId)
val resultatJson = redisPoller.hent(clientId).fromJson(ResultJson.serializer())
kvitteringProducer.publish(transaksjonId, forespoerselId)
val resultatJson = redisPoller.hent(transaksjonId).fromJson(ResultJson.serializer())

sikkerLogger.info("Resultat for henting av kvittering for $forespoerselId: $resultatJson")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,18 @@ class InnsendingProducerTest :
val producer = InnsendingProducer(testRapid)

test("publiserer melding på forventet format") {
val clientId = UUID.randomUUID()
val transaksjonId = UUID.randomUUID()
val forespoerselId = UUID.randomUUID()
val avsenderFnr = Fnr.genererGyldig()

producer.publish(clientId, forespoerselId, gyldigInnsendingRequest, avsenderFnr)
producer.publish(transaksjonId, forespoerselId, gyldigInnsendingRequest, avsenderFnr)

testRapid.inspektør.size shouldBeExactly 1
testRapid.firstMessage().toMap() shouldContainExactly
mapOf(
Key.EVENT_NAME to EventName.INSENDING_STARTED.toJson(),
Key.CLIENT_ID to clientId.toJson(),
Key.UUID to transaksjonId.toJson(),
Key.DATA to "".toJson(),
Key.FORESPOERSEL_ID to forespoerselId.toJson(),
Key.ORGNRUNDERENHET to gyldigInnsendingRequest.orgnrUnderenhet.toJson(),
Key.IDENTITETSNUMMER to gyldigInnsendingRequest.identitetsnummer.toJson(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package no.nav.helsearbeidsgiver.inntektsmelding.api.inntekt

import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.maps.shouldContainAll
import io.kotest.matchers.maps.shouldContainExactly
import no.nav.helse.rapids_rivers.testsupport.TestRapid
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
Expand All @@ -18,17 +18,18 @@ class InntektProducerTest :
val inntektProducer = InntektProducer(testRapid)

test("Publiserer melding på forventet format") {
val clientId = UUID.randomUUID()
val transaksjonId = UUID.randomUUID()
val request = InntektRequest(UUID.randomUUID(), 18.januar)

inntektProducer.publish(clientId, request)
inntektProducer.publish(transaksjonId, request)

val publisert = testRapid.firstMessage().toMap()

publisert shouldContainAll
publisert shouldContainExactly
mapOf(
Key.EVENT_NAME to EventName.INNTEKT_REQUESTED.toJson(),
Key.CLIENT_ID to clientId.toJson(),
Key.UUID to transaksjonId.toJson(),
Key.DATA to "".toJson(),
Key.FORESPOERSEL_ID to request.forespoerselId.toJson(),
Key.SKJAERINGSTIDSPUNKT to request.skjaeringstidspunkt.toJson(),
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package no.nav.helsearbeidsgiver.inntektsmelding.api.kvittering

import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.ints.shouldBeExactly
import io.kotest.matchers.maps.shouldContainExactly
import no.nav.helse.rapids_rivers.testsupport.TestRapid
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.json.toJson
import no.nav.helsearbeidsgiver.felles.json.toMap
import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage
import no.nav.helsearbeidsgiver.utils.json.toJson
import java.util.UUID

class KvitteringProducerTest :
FunSpec({
val testRapid = TestRapid()
val producer = KvitteringProducer(testRapid)

test("publiserer melding på forventet format") {
val transaksjonId = UUID.randomUUID()
val forespoerselId = UUID.randomUUID()

producer.publish(transaksjonId, forespoerselId)

testRapid.inspektør.size shouldBeExactly 1
testRapid.firstMessage().toMap() shouldContainExactly
mapOf(
Key.EVENT_NAME to EventName.KVITTERING_REQUESTED.toJson(),
Key.UUID to transaksjonId.toJson(),
Key.DATA to "".toJson(),
Key.FORESPOERSEL_ID to forespoerselId.toJson(),
)
}
})
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ private val resultatMedInntektsmelding =
"tidspunkt": "2023-04-13T16:28:16.095083285+02:00",
"årsakInnsending": "NY",
"identitetsnummerInnsender": ""
}
},
"eksternInntektsmelding": null
}
""".removeJsonWhitespace()
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,12 @@ 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.test.json.readFail
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.utils.json.toJson
import no.nav.helsearbeidsgiver.utils.test.date.januar
import java.util.UUID

val eksternInntektsmelding =
EksternInntektsmelding(
avsenderSystemNavn = "NAV_NO",
avsenderSystemVersjon = "1.63",
arkivreferanse = "im1234567",
11.januar(2018).atStartOfDay(),
)

class EksternInntektsmeldingLoeserTest :
FunSpec({
val testRapid = TestRapid()
Expand All @@ -43,7 +35,7 @@ class EksternInntektsmeldingLoeserTest :
testRapid.reset()
clearAllMocks()
}
every { spinnKlient.hentEksternInntektsmelding(any()) } returns eksternInntektsmelding
every { spinnKlient.hentEksternInntektsmelding(any()) } returns mockEksternInntektsmelding()

xtest("Ved når inntektsmeldingId mangler skal feil publiseres") {
testRapid.sendJson(
Expand Down Expand Up @@ -78,7 +70,7 @@ class EksternInntektsmeldingLoeserTest :
}

test("Hvis Inntektsmelding finnes publiseres data") {
every { spinnKlient.hentEksternInntektsmelding(any()) } returns eksternInntektsmelding
every { spinnKlient.hentEksternInntektsmelding(any()) } returns mockEksternInntektsmelding()

testRapid.sendJson(
Key.EVENT_NAME to EventName.FORESPOERSEL_BESVART.toJson(),
Expand All @@ -92,7 +84,7 @@ class EksternInntektsmeldingLoeserTest :
testRapid.inspektør.size shouldBeExactly 1

Key.EVENT_NAME.lesOrNull(EventName.serializer(), actual) shouldBe EventName.FORESPOERSEL_BESVART
Key.EKSTERN_INNTEKTSMELDING.lesOrNull(EksternInntektsmelding.serializer(), actual) shouldBe eksternInntektsmelding
Key.EKSTERN_INNTEKTSMELDING.lesOrNull(EksternInntektsmelding.serializer(), actual) shouldBe mockEksternInntektsmelding()
}

test("Hvis request timer ut blir feil publisert") {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,11 @@ import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.json.toJson
import no.nav.helsearbeidsgiver.felles.json.toMap
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.utils.json.toJson
import no.nav.helsearbeidsgiver.utils.test.date.kl
import no.nav.helsearbeidsgiver.utils.test.date.oktober
import java.util.UUID

class HentEksternImRiverTest :
Expand All @@ -44,7 +43,7 @@ class HentEksternImRiverTest :
test("henter ekstern inntektsmelding") {
val innkommendeMelding = MockHent.innkommendeMelding()

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

testRapid.sendJson(innkommendeMelding.toMap())

Expand All @@ -57,7 +56,7 @@ class HentEksternImRiverTest :
Key.DATA to
innkommendeMelding.data
.plus(
Key.EKSTERN_INNTEKTSMELDING to MockHent.eksternInntektsmelding.toJson(EksternInntektsmelding.serializer()),
Key.EKSTERN_INNTEKTSMELDING to mockEksternInntektsmelding().toJson(EksternInntektsmelding.serializer()),
).toJson(),
)

Expand Down Expand Up @@ -171,12 +170,4 @@ private object MockHent {
forespoerselId = UUID.randomUUID(),
utloesendeMelding = JsonNull,
)

val eksternInntektsmelding =
EksternInntektsmelding(
avsenderSystemNavn = "Trygge Trygves Trygdesystem",
avsenderSystemVersjon = "T3",
arkivreferanse = "Arkiv nr. 49",
tidspunkt = 12.oktober.kl(14, 0, 12, 0),
)
}
Loading

0 comments on commit 51ef674

Please sign in to comment.