From e25e3477ac0e251cc3ef760dadff7614d2de16a0 Mon Sep 17 00:00:00 2001 From: Mikael Bjerga <6940327+bjerga@users.noreply.github.com> Date: Wed, 2 Oct 2024 13:30:18 +0200 Subject: [PATCH] Legg til integrasjonstest for henting av selvbestemt IM (#693) --- integrasjonstest/build.gradle.kts | 2 +- .../integrasjonstest/HentForespoerselIT.kt | 2 +- .../integrasjonstest/HentSelvbestemtIT.kt | 159 ++++++++++++++++++ .../integrasjonstest/utils/EndToEndTest.kt | 2 + 4 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/HentSelvbestemtIT.kt diff --git a/integrasjonstest/build.gradle.kts b/integrasjonstest/build.gradle.kts index c254cab78..a798a3247 100644 --- a/integrasjonstest/build.gradle.kts +++ b/integrasjonstest/build.gradle.kts @@ -30,11 +30,11 @@ dependencies { testImplementation(project(":joark")) testImplementation(project(":notifikasjon")) testImplementation(project(":pdl")) + testImplementation(project(":selvbestemt-hent-im-service")) testImplementation(project(":selvbestemt-lagre-im-service")) testImplementation(project(":tilgangservice")) testImplementation(project(":trengerservice")) testImplementation(project(":berik-inntektsmelding-service")) - testImplementation(project(":berik-inntektsmelding-service")) testImplementation(project(":feil-behandler")) testImplementation(project(":felles")) diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/HentForespoerselIT.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/HentForespoerselIT.kt index 34576cf9d..d1b110eed 100644 --- a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/HentForespoerselIT.kt +++ b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/HentForespoerselIT.kt @@ -25,7 +25,7 @@ import java.util.UUID @TestInstance(TestInstance.Lifecycle.PER_CLASS) class HentForespoerselIT : EndToEndTest() { @Test - fun `Test trengerIM meldingsflyt`() { + fun `forespørsel hentes`() { val transaksjonId: UUID = UUID.randomUUID() val forespoerselId: UUID = UUID.randomUUID() diff --git a/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/HentSelvbestemtIT.kt b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/HentSelvbestemtIT.kt new file mode 100644 index 000000000..4413b29cd --- /dev/null +++ b/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/HentSelvbestemtIT.kt @@ -0,0 +1,159 @@ +package no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest + +import io.kotest.matchers.collections.shouldBeEmpty +import io.kotest.matchers.collections.shouldHaveSize +import io.kotest.matchers.nulls.shouldBeNull +import io.kotest.matchers.nulls.shouldNotBeNull +import io.kotest.matchers.shouldBe +import io.kotest.matchers.string.shouldNotBeEmpty +import kotlinx.serialization.builtins.serializer +import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding +import no.nav.helsearbeidsgiver.felles.BehovType +import no.nav.helsearbeidsgiver.felles.EventName +import no.nav.helsearbeidsgiver.felles.Key +import no.nav.helsearbeidsgiver.felles.domene.ResultJson +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.rapidsrivers.model.Fail +import no.nav.helsearbeidsgiver.felles.rapidsrivers.redis.RedisPrefix +import no.nav.helsearbeidsgiver.felles.test.json.lesBehov +import no.nav.helsearbeidsgiver.felles.test.mock.mockInntektsmeldingV1 +import no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest.utils.EndToEndTest +import no.nav.helsearbeidsgiver.utils.json.fromJson +import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer +import no.nav.helsearbeidsgiver.utils.json.toJson +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.TestInstance +import java.util.UUID + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class HentSelvbestemtIT : EndToEndTest() { + @BeforeEach + fun setup() { + truncateDatabase() + } + + @Test + fun `selvbestemt inntektsmelding hentes`() { + val transaksjonId: UUID = UUID.randomUUID() + val inntektsmelding = + mockInntektsmeldingV1().copy( + type = + Inntektsmelding.Type.Selvbestemt( + id = UUID.randomUUID(), + ), + ) + + selvbestemtImRepo.lagreIm(inntektsmelding) + + publish( + Key.EVENT_NAME to EventName.SELVBESTEMT_IM_REQUESTED.toJson(), + Key.UUID to transaksjonId.toJson(UuidSerializer), + Key.DATA to + mapOf( + Key.SELVBESTEMT_ID to inntektsmelding.type.id.toJson(UuidSerializer), + ).toJson(), + ) + + // Ingen feil + messages.filterFeil().all().shouldBeEmpty() + + // Behov publiseres + messages + .filter(EventName.SELVBESTEMT_IM_REQUESTED) + .filter(BehovType.HENT_SELVBESTEMT_IM) + .firstAsMap() + .let { msg -> + Key.UUID.lesOrNull(UuidSerializer, msg) shouldBe transaksjonId + + val data = msg[Key.DATA].shouldNotBeNull().toMap() + Key.SELVBESTEMT_ID.lesOrNull(UuidSerializer, data) shouldBe inntektsmelding.type.id + } + + // Behov besvares + messages + .filter(EventName.SELVBESTEMT_IM_REQUESTED) + .filter(Key.SELVBESTEMT_INNTEKTSMELDING) + .firstAsMap() + .let { msg -> + Key.UUID.lesOrNull(UuidSerializer, msg) shouldBe transaksjonId + + val data = msg[Key.DATA].shouldNotBeNull().toMap() + Key.SELVBESTEMT_ID.lesOrNull(UuidSerializer, data) shouldBe inntektsmelding.type.id + Key.SELVBESTEMT_INNTEKTSMELDING.lesOrNull(Inntektsmelding.serializer(), data) shouldBe inntektsmelding + } + + // Funnet inntektsmelding legges i Redis + val redisResponse = + redisConnection + .get(RedisPrefix.HentSelvbestemtIm, transaksjonId) + .shouldNotBeNull() + .fromJson(ResultJson.serializer()) + + redisResponse.success.shouldNotBeNull().fromJson(Inntektsmelding.serializer()) shouldBe inntektsmelding + redisResponse.failure.shouldBeNull() + } + + @Test + fun `selvbestemt inntektsmelding finnes ikke`() { + val transaksjonId: UUID = UUID.randomUUID() + val inntektsmelding = + mockInntektsmeldingV1().copy( + type = + Inntektsmelding.Type.Selvbestemt( + id = UUID.randomUUID(), + ), + ) + + publish( + Key.EVENT_NAME to EventName.SELVBESTEMT_IM_REQUESTED.toJson(), + Key.UUID to transaksjonId.toJson(UuidSerializer), + Key.DATA to + mapOf( + Key.SELVBESTEMT_ID to inntektsmelding.type.id.toJson(UuidSerializer), + ).toJson(), + ) + + // Én feil + messages.filterFeil().all() shouldHaveSize 1 + + // Behov publiseres + messages + .filter(EventName.SELVBESTEMT_IM_REQUESTED) + .filter(BehovType.HENT_SELVBESTEMT_IM) + .firstAsMap() + .let { msg -> + Key.UUID.lesOrNull(UuidSerializer, msg) shouldBe transaksjonId + + val data = msg[Key.DATA].shouldNotBeNull().toMap() + Key.SELVBESTEMT_ID.lesOrNull(UuidSerializer, data) shouldBe inntektsmelding.type.id + } + + // Behov besvares med feil + messages + .filter(EventName.SELVBESTEMT_IM_REQUESTED) + .filterFeil() + .firstAsMap() + .let { + Key.UUID.lesOrNull(UuidSerializer, it) shouldBe transaksjonId + + val fail = Key.FAIL.lesOrNull(Fail.serializer(), it).shouldNotBeNull() + fail.utloesendeMelding.lesBehov() shouldBe BehovType.HENT_SELVBESTEMT_IM + } + + // Funnet feilmelding legges i Redis + val redisResponse = + redisConnection + .get(RedisPrefix.HentSelvbestemtIm, transaksjonId) + .shouldNotBeNull() + .fromJson(ResultJson.serializer()) + + redisResponse.success.shouldBeNull() + redisResponse.failure + .shouldNotBeNull() + .fromJson(String.serializer()) + .shouldNotBeEmpty() + } +} 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 b50fded8d..6c0cd6d22 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 @@ -56,6 +56,7 @@ import no.nav.helsearbeidsgiver.inntektsmelding.notifikasjon.createNotifikasjonR import no.nav.helsearbeidsgiver.inntektsmelding.notifikasjon.createNotifikasjonServices import no.nav.helsearbeidsgiver.inntektsmelding.notifikasjon.db.SelvbestemtRepo import no.nav.helsearbeidsgiver.inntektsmelding.pdl.createPdlRiver +import no.nav.helsearbeidsgiver.inntektsmelding.selvbestemthentimservice.createHentSelvbestemtImService import no.nav.helsearbeidsgiver.inntektsmelding.selvbestemtlagreimservice.createLagreSelvbestemtImService import no.nav.helsearbeidsgiver.inntektsmelding.tilgangservice.createTilgangService import no.nav.helsearbeidsgiver.inntektsmelding.trengerservice.createHentForespoerselService @@ -236,6 +237,7 @@ abstract class EndToEndTest : ContainerTest() { createSpinnService() createTilgangService(redisConnection) createHentForespoerselService(redisConnection) + createHentSelvbestemtImService(redisConnection) createBerikInntektsmeldingService() // Rivers