From 7c5b7965499defc6c3f43cc2a344bea8d121a4ba Mon Sep 17 00:00:00 2001 From: Mikael Bjerga <6940327+bjerga@users.noreply.github.com> Date: Thu, 9 Jan 2025 10:04:50 +0100 Subject: [PATCH 1/7] Oppdater gradle-actions i workflows (#821) --- .github/workflows/build.yml | 29 ++----------------------- .github/workflows/gradle-dependabot.yml | 3 +-- .github/workflows/integrasjonstest.yml | 22 ++----------------- .github/workflows/prod.yml | 29 ++----------------------- .github/workflows/test.yml | 19 +--------------- 5 files changed, 8 insertions(+), 94 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 36fa8fea21..6b3c0e37c1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,19 +26,7 @@ jobs: with: fetch-depth: 2 - - name: Cache gradle wrapper - uses: actions/cache@v4 - with: - path: ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} - - - name: Cache gradle caches - uses: actions/cache@v4 - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/build.gradle.kts') }} - restore-keys: | - ${{ runner.os }}-gradle-caches- + - uses: gradle/actions/setup-gradle@v4 - name: Determine short SHA id: set_short_sha @@ -96,21 +84,8 @@ jobs: with: java-version: 21 distribution: temurin - cache: gradle - - name: Cache gradle wrapper - uses: actions/cache@v4 - with: - path: ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} - - - name: Cache gradle caches - uses: actions/cache@v4 - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/build.gradle.kts') }} - restore-keys: | - ${{ runner.os }}-gradle-caches- + - uses: gradle/actions/setup-gradle@v4 - name: Test and build run: ./gradlew ${{ matrix.project }}:test ${{ matrix.project }}:build diff --git a/.github/workflows/gradle-dependabot.yml b/.github/workflows/gradle-dependabot.yml index 9558128d81..5f51933d17 100644 --- a/.github/workflows/gradle-dependabot.yml +++ b/.github/workflows/gradle-dependabot.yml @@ -16,9 +16,8 @@ jobs: with: java-version: 21 distribution: temurin - cache: gradle - name: Generate and submit dependency graph - uses: gradle/actions/dependency-submission@v3 + uses: gradle/actions/dependency-submission@v4 env: ORG_GRADLE_PROJECT_githubPassword: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/integrasjonstest.yml b/.github/workflows/integrasjonstest.yml index 86e94a4705..1b49e8361f 100644 --- a/.github/workflows/integrasjonstest.yml +++ b/.github/workflows/integrasjonstest.yml @@ -14,25 +14,8 @@ jobs: with: java-version: 21 distribution: temurin - cache: gradle - - name: Cache Gradle wrapper - uses: actions/cache@v4 - with: - path: ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle-wrapper- - - - name: Cache Gradle packages - uses: actions/cache@v4 - with: - path: ~/.gradle/caches/build-cache-1/ - key: ${{ runner.os }}-gradle-cache-${{ hashFiles('build.gradle') }} - restore-keys: | - ${{ runner.os }}-gradle-cache- - - - uses: gradle/actions/setup-gradle@v3 + - uses: gradle/actions/setup-gradle@v4 - name: Build run: ./gradlew assemble --build-cache --parallel @@ -75,7 +58,6 @@ jobs: with: java-version: 21 distribution: temurin - cache: gradle - name: Download build artifacts uses: actions/download-artifact@v4 @@ -83,7 +65,7 @@ jobs: name: build-artifacts path: build/libs/ - - uses: gradle/actions/setup-gradle@v3 + - uses: gradle/actions/setup-gradle@v4 - name: Integrasjonstest run: ./gradlew integrasjonstest:test --build-cache --tests no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest.${{ matrix.test }} diff --git a/.github/workflows/prod.yml b/.github/workflows/prod.yml index 17692594d2..fa92cd6d28 100644 --- a/.github/workflows/prod.yml +++ b/.github/workflows/prod.yml @@ -25,19 +25,7 @@ jobs: - name: Fetch tags run: git fetch --depth=1 --tags --quiet - - name: Cache gradle wrapper - uses: actions/cache@v4 - with: - path: ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} - - - name: Cache gradle caches - uses: actions/cache@v4 - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/build.gradle.kts') }} - restore-keys: | - ${{ runner.os }}-gradle-caches- + - uses: gradle/actions/setup-gradle@v4 - name: Determine short SHA id: set_short_sha @@ -98,21 +86,8 @@ jobs: with: java-version: 21 distribution: temurin - cache: gradle - - name: Cache gradle wrapper - uses: actions/cache@v4 - with: - path: ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }} - - - name: Cache gradle caches - uses: actions/cache@v4 - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/build.gradle.kts') }} - restore-keys: | - ${{ runner.os }}-gradle-caches- + - uses: gradle/actions/setup-gradle@v4 - name: Test and build run: ./gradlew ${{ matrix.project }}:test ${{ matrix.project }}:build diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6a2c5a8939..114b85bd2a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,25 +11,8 @@ jobs: with: java-version: 21 distribution: temurin - cache: gradle - - name: Cache Gradle wrapper - uses: actions/cache@v4 - with: - path: ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle-wrapper- - - - name: Cache Gradle packages - uses: actions/cache@v4 - with: - path: ~/.gradle/caches/build-cache-1/ - key: ${{ runner.os }}-gradle-cache-${{ hashFiles('build.gradle') }} - restore-keys: | - ${{ runner.os }}-gradle-cache- - - - uses: gradle/actions/setup-gradle@v3 + - uses: gradle/actions/setup-gradle@v4 - name: Test run: ./gradlew test --tests --parallel --build-cache '*Test' jacocoTestReport -Dorg.gradle.jvmargs=-Xmx32g From 4d437f610b20625427075c95961564b0b1b679ee Mon Sep 17 00:00:00 2001 From: Mikael Bjerga <6940327+bjerga@users.noreply.github.com> Date: Fri, 10 Jan 2025 15:30:45 +0100 Subject: [PATCH 2/7] =?UTF-8?q?Publiser=20meldinger=20p=C3=A5=20Kafka=20sa?= =?UTF-8?q?mmen=20med=20n=C3=B8kkel=20(i=20rivers)=20(#824)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Publiser meldinger på Kafka sammen med nøkkel (i rivers) * Bruk mer forståelig funksjonsnavn --- .../aareg/HentArbeidsforholdRiver.kt | 2 + .../inntektsmelding/altinn/AltinnRiver.kt | 2 + .../inntektsmelding/altinn/TilgangRiver.kt | 3 ++ .../brospinn/HentEksternImRiver.kt | 3 ++ .../brreg/HentVirksomhetNavnRiver.kt | 2 + .../db/river/HentLagretImRiver.kt | 2 + .../db/river/HentSelvbestemtImRiver.kt | 3 ++ .../db/river/LagreEksternImRiver.kt | 3 ++ .../inntektsmelding/db/river/LagreImRiver.kt | 3 ++ .../db/river/LagreImSkjemaRiver.kt | 3 ++ .../db/river/LagreJournalpostIdRiver.kt | 3 ++ .../db/river/LagreSelvbestemtImRiver.kt | 3 ++ .../distribusjon/DistribusjonRiver.kt | 3 ++ .../feilbehandler/river/FeilLytter.kt | 4 ++ .../felles/rapidsrivers/river/ObjectRiver.kt | 43 ++++++++++++++++--- .../felles/rapidsrivers/river/OpenRiver.kt | 8 +++- .../rapidsrivers/river/PriObjectRiver.kt | 34 ++++++++++++--- .../rapidsrivers/service/ServiceRiver.kt | 5 +++ .../ForespoerselBesvartRiver.kt | 3 ++ .../ForespoerselForkastetRiver.kt | 3 ++ .../ForespoerselKastetTilInfotrygdRiver.kt | 3 ++ .../MarkerForespoerselBesvartRiver.kt | 3 ++ .../ForespoerselMottattRiver.kt | 3 ++ .../helsebro/ForespoerselSvarRiver.kt | 3 ++ ...espoerslerForVedtaksperiodeIdListeRiver.kt | 4 ++ .../helsebro/TrengerForespoerselRiver.kt | 3 ++ .../VedtaksperiodeIdForespoerselSvarRiver.kt | 4 ++ .../inntekt/HentInntektRiver.kt | 2 + .../joark/JournalfoerImRiver.kt | 3 ++ .../river/EndrePaaminnelseRiver.kt | 3 ++ ...erdigstillForespoerselSakOgOppgaveRiver.kt | 3 ++ .../river/FjernPaaminnelseRiver.kt | 3 ++ .../OpprettForespoerselSakOgOppgaveRiver.kt | 3 ++ .../river/OpprettSelvbestemtSakRiver.kt | 3 ++ .../river/UtgaattForespoerselRiver.kt | 3 ++ .../inntektsmelding/pdl/HentPersonerRiver.kt | 2 + 36 files changed, 167 insertions(+), 16 deletions(-) diff --git a/apps/aareg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aareg/HentArbeidsforholdRiver.kt b/apps/aareg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aareg/HentArbeidsforholdRiver.kt index a99987b29a..782af8e078 100644 --- a/apps/aareg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aareg/HentArbeidsforholdRiver.kt +++ b/apps/aareg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aareg/HentArbeidsforholdRiver.kt @@ -54,6 +54,8 @@ class HentArbeidsforholdRiver( ) } + override fun HentArbeidsforholdMelding.bestemNoekkel(): KafkaKey? = svarKafkaKey + override fun HentArbeidsforholdMelding.haandter(json: Map): Map { val arbeidsforhold = Metrics.aaregRequest diff --git a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiver.kt b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiver.kt index 392bc5da58..a6d7a4cd95 100644 --- a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiver.kt +++ b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiver.kt @@ -55,6 +55,8 @@ class AltinnRiver( ) } + override fun Melding.bestemNoekkel(): KafkaKey? = svarKafkaKey + override fun Melding.haandter(json: Map): Map { val rettigheterForenklet = Metrics.altinnRequest.recordTime(altinnClient::hentRettighetOrganisasjoner) { diff --git a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangRiver.kt b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangRiver.kt index 343db768f3..d6525c0d06 100644 --- a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangRiver.kt +++ b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangRiver.kt @@ -11,6 +11,7 @@ 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.metrics.Metrics +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -53,6 +54,8 @@ class TilgangRiver( ) } + override fun TilgangMelding.bestemNoekkel(): KafkaKey = KafkaKey(fnr) + override fun TilgangMelding.haandter(json: Map): Map { val harTilgang = Metrics.altinnRequest.recordTime(altinnClient::harRettighetForOrganisasjon) { diff --git a/apps/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/HentEksternImRiver.kt b/apps/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/HentEksternImRiver.kt index c32ae6917c..ac358f9a2e 100644 --- a/apps/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/HentEksternImRiver.kt +++ b/apps/bro-spinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brospinn/HentEksternImRiver.kt @@ -8,6 +8,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -47,6 +48,8 @@ class HentEksternImRiver( ) } + override fun HentEksternImMelding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselId) + override fun HentEksternImMelding.haandter(json: Map): Map? { logger.info("Henter ekstern inntektsmelding med ID '$spinnImId' fra Spinn.") diff --git a/apps/brreg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/HentVirksomhetNavnRiver.kt b/apps/brreg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/HentVirksomhetNavnRiver.kt index 90bc3ca9bf..50e5e663c6 100644 --- a/apps/brreg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/HentVirksomhetNavnRiver.kt +++ b/apps/brreg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/HentVirksomhetNavnRiver.kt @@ -56,6 +56,8 @@ class HentVirksomhetNavnRiver( ) } + override fun HentVirksomhetMelding.bestemNoekkel(): KafkaKey? = svarKafkaKey + override fun HentVirksomhetMelding.haandter(json: Map): Map { val orgnrMedNavn = if (isPreProd) { diff --git a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentLagretImRiver.kt b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentLagretImRiver.kt index a9c62d76f6..c85608d997 100644 --- a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentLagretImRiver.kt +++ b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentLagretImRiver.kt @@ -59,6 +59,8 @@ class HentLagretImRiver( ) } + override fun HentLagretImMelding.bestemNoekkel(): KafkaKey? = svarKafkaKey + override fun HentLagretImMelding.haandter(json: Map): Map { val ( skjema, diff --git a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentSelvbestemtImRiver.kt b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentSelvbestemtImRiver.kt index 7ded7c0764..ce12afe861 100644 --- a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentSelvbestemtImRiver.kt +++ b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentSelvbestemtImRiver.kt @@ -9,6 +9,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -48,6 +49,8 @@ class HentSelvbestemtImRiver( ) } + override fun HentSelvbestemtImMelding.bestemNoekkel(): KafkaKey = KafkaKey(selvbestemtId) + override fun HentSelvbestemtImMelding.haandter(json: Map): Map { "Skal hente selvbestemt inntektsmelding.".also { logger.info(it) diff --git a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreEksternImRiver.kt b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreEksternImRiver.kt index 4c2a9f6207..c735f4e25a 100644 --- a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreEksternImRiver.kt +++ b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreEksternImRiver.kt @@ -8,6 +8,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -45,6 +46,8 @@ class LagreEksternImRiver( ) } + override fun LagreEksternImMelding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselId) + override fun LagreEksternImMelding.haandter(json: Map): Map { imRepo.lagreEksternInntektsmelding(forespoerselId, eksternInntektsmelding) diff --git a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiver.kt b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiver.kt index 1ade2ea6fb..1c0e8459a9 100644 --- a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiver.kt +++ b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImRiver.kt @@ -11,6 +11,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -52,6 +53,8 @@ class LagreImRiver( ) } + override fun LagreImMelding.bestemNoekkel(): KafkaKey = KafkaKey(inntektsmelding.type.id) + override fun LagreImMelding.haandter(json: Map): Map { val inntektsmeldingGammeltFormat = inntektsmelding.convert() diff --git a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImSkjemaRiver.kt b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImSkjemaRiver.kt index 47029a8b05..a9084294e3 100644 --- a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImSkjemaRiver.kt +++ b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreImSkjemaRiver.kt @@ -11,6 +11,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -58,6 +59,8 @@ class LagreImSkjemaRiver( ) } + override fun LagreImSkjemaMelding.bestemNoekkel(): KafkaKey = KafkaKey(skjema.forespoerselId) + override fun LagreImSkjemaMelding.haandter(json: Map): Map { val sisteImSkjema = repository.hentNyesteInntektsmeldingSkjema(skjema.forespoerselId) diff --git a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreJournalpostIdRiver.kt b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreJournalpostIdRiver.kt index b36c463e3b..bda2352d23 100644 --- a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreJournalpostIdRiver.kt +++ b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreJournalpostIdRiver.kt @@ -10,6 +10,7 @@ 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.toPretty +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -49,6 +50,8 @@ class LagreJournalpostIdRiver( ) } + override fun LagreJournalpostIdMelding.bestemNoekkel(): KafkaKey = KafkaKey(inntektsmelding.type.id) + override fun LagreJournalpostIdMelding.haandter(json: Map): Map? { logger.info("Mottok melding.") sikkerLogger.info("Mottok melding:\n${json.toPretty()}") diff --git a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreSelvbestemtImRiver.kt b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreSelvbestemtImRiver.kt index cee3648884..ce38f305a1 100644 --- a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreSelvbestemtImRiver.kt +++ b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/LagreSelvbestemtImRiver.kt @@ -10,6 +10,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -50,6 +51,8 @@ class LagreSelvbestemtImRiver( ) } + override fun LagreSelvbestemtImMelding.bestemNoekkel(): KafkaKey = KafkaKey(selvbestemtInntektsmelding.type.id) + override fun LagreSelvbestemtImMelding.haandter(json: Map): Map { "Skal lagre selvbestemt inntektsmelding.".also { logger.info(it) diff --git a/apps/distribusjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/distribusjon/DistribusjonRiver.kt b/apps/distribusjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/distribusjon/DistribusjonRiver.kt index 1163a7b173..bc60483a53 100644 --- a/apps/distribusjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/distribusjon/DistribusjonRiver.kt +++ b/apps/distribusjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/distribusjon/DistribusjonRiver.kt @@ -10,6 +10,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toPretty +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -49,6 +50,8 @@ class DistribusjonRiver( ) } + override fun Melding.bestemNoekkel(): KafkaKey = KafkaKey(inntektsmelding.type.id) + override fun Melding.haandter(json: Map): Map { "Forsøker å distribuere IM med journalpost-ID '$journalpostId'.".also { logger.info(it) diff --git a/apps/feil-behandler/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/feilbehandler/river/FeilLytter.kt b/apps/feil-behandler/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/feilbehandler/river/FeilLytter.kt index 1b9a514cf4..d4cc7e0348 100644 --- a/apps/feil-behandler/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/feilbehandler/river/FeilLytter.kt +++ b/apps/feil-behandler/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/feilbehandler/river/FeilLytter.kt @@ -12,6 +12,7 @@ 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -54,6 +55,9 @@ class FeilLytter( fail = Key.FAIL.les(Fail.serializer(), json), ) + // Riveren publiserer ikke via ObjectRiver, så denne nøkkelen blir ikke brukt + override fun Melding.bestemNoekkel(): KafkaKey = KafkaKey(UUID.randomUUID()) + override fun Melding.haandter(json: Map): Map? { logger.info("Mottok feil.") sikkerLogger.info("Mottok feil.\n${json.toPretty()}") diff --git a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/ObjectRiver.kt b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/ObjectRiver.kt index 0e8bfeba9f..d62655da60 100644 --- a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/ObjectRiver.kt +++ b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/ObjectRiver.kt @@ -5,6 +5,7 @@ import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonNull import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.toMap +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.utils.log.MdcUtils import no.nav.helsearbeidsgiver.utils.log.logger import no.nav.helsearbeidsgiver.utils.log.sikkerLogger @@ -39,6 +40,8 @@ import no.nav.helsearbeidsgiver.utils.log.sikkerLogger * height = Key.HEIGHT.lesOrNull(Int.serializer(), json) * ) * + * override fun LotrCharacter.bestemNoekkel(): KafkaKey = KafkaKey(name) + * * override fun LotrCharacter.haandter(json: Map): Map { * val favouriteFood = when (name) { * "Frodo" -> "\uD83C\uDF53" @@ -93,6 +96,15 @@ abstract class ObjectRiver { */ protected abstract fun les(json: Map): Melding? + /** + * @receiver [Melding] - output fra [les]. + + * @return + * Nøkkel som utgående melding sendes sammen med. + * Meldinger sendt med samme nøkkel vil opprettholde rekkefølgen mellom dem (og konsumeres av samme pod). + */ + protected abstract fun Melding.bestemNoekkel(): KafkaKey? + /** * Riverens hovedfunksjon. Agerer på innkommende melding. * Kastede exceptions håndteres i [haandterFeil]. @@ -126,7 +138,7 @@ abstract class ObjectRiver { protected abstract fun Melding.loggfelt(): Map /** Brukes av [OpenRiver]. */ - private fun lesOgHaandter(json: JsonElement): Map? { + private fun lesOgHaandter(json: JsonElement): Pair>? { val jsonMap = json.toMap().filterValues { it !is JsonNull } val innkommende = runCatching { les(jsonMap) }.getOrNull() @@ -145,16 +157,33 @@ abstract class ObjectRiver { .orEmpty() return MdcUtils.withLogFields(*loggfelt) { - val utgaaende = - innkommende?.let { + if (innkommende == null) { + null + } else { + val key = runCatching { - it.haandter(jsonMap) + innkommende.bestemNoekkel() }.getOrElse { e -> - it.haandterFeil(jsonMap, e) + "Klarte ikke lage Kafka-nøkkel.".also { + logger.error(it) + sikkerLogger.error(it, e) + } + null } - } - utgaaende?.takeIf { it.isNotEmpty() } + val msg = + runCatching { + innkommende.haandter(jsonMap) + }.getOrElse { e -> + innkommende.haandterFeil(jsonMap, e) + } + + if (msg.isNullOrEmpty()) { + null + } else { + key to msg + } + } } } } diff --git a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/OpenRiver.kt b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/OpenRiver.kt index 1d5050cfb5..b7abfef5f4 100644 --- a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/OpenRiver.kt +++ b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/OpenRiver.kt @@ -6,6 +6,7 @@ import com.github.navikt.tbd_libs.rapids_and_rivers_api.MessageContext import com.github.navikt.tbd_libs.rapids_and_rivers_api.RapidsConnection import kotlinx.serialization.json.JsonElement import no.nav.helsearbeidsgiver.felles.Key +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish import no.nav.helsearbeidsgiver.utils.json.parseJson @@ -17,7 +18,7 @@ import no.nav.helsearbeidsgiver.utils.json.parseJson */ internal class OpenRiver( rapid: RapidsConnection, - private val haandterMelding: JsonElement.() -> Map?, + private val haandterMelding: JsonElement.() -> Pair>?, ) : River.PacketListener { init { River(rapid).register(this) @@ -31,6 +32,9 @@ internal class OpenRiver( .toJson() .parseJson() .haandterMelding() - ?.also { context.publish(null, it) } + ?.also { (kafkaKey, melding) -> + // TODO gjør key non-nullable + context.publish(kafkaKey?.key, melding) + } } } diff --git a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/PriObjectRiver.kt b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/PriObjectRiver.kt index 3119b34c91..85401a1309 100644 --- a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/PriObjectRiver.kt +++ b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/PriObjectRiver.kt @@ -4,6 +4,7 @@ import com.github.navikt.tbd_libs.rapids_and_rivers_api.RapidsConnection import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonNull import no.nav.helsearbeidsgiver.felles.Key +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.utils.json.fromJsonMapFiltered import no.nav.helsearbeidsgiver.utils.log.MdcUtils @@ -26,6 +27,8 @@ abstract class PriObjectRiver { protected abstract fun les(json: Map): Melding? + protected abstract fun Melding.bestemNoekkel(): KafkaKey? + protected abstract fun Melding.haandter(json: Map): Map? protected abstract fun Melding.haandterFeil( @@ -35,7 +38,7 @@ abstract class PriObjectRiver { protected abstract fun Melding.loggfelt(): Map - private fun lesOgHaandter(json: JsonElement): Map? { + private fun lesOgHaandter(json: JsonElement): Pair>? { val jsonMap = json.fromJsonMapFiltered(Pri.Key.serializer()).filterValues { it !is JsonNull } val innkommende = runCatching { les(jsonMap) }.getOrNull() @@ -54,16 +57,33 @@ abstract class PriObjectRiver { .orEmpty() return MdcUtils.withLogFields(*loggfelt) { - val utgaaende = - innkommende?.let { + if (innkommende == null) { + null + } else { + val key = runCatching { - it.haandter(jsonMap) + innkommende.bestemNoekkel() }.getOrElse { e -> - it.haandterFeil(jsonMap, e) + "Klarte ikke lage Kafka-nøkkel.".also { + logger.error(it) + sikkerLogger.error(it, e) + } + null + } + + val msg = + runCatching { + innkommende.haandter(jsonMap) + }.getOrElse { e -> + innkommende.haandterFeil(jsonMap, e) } - } - utgaaende?.takeIf { it.isNotEmpty() } + if (msg.isNullOrEmpty()) { + null + } else { + key to msg + } + } } } } diff --git a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/service/ServiceRiver.kt b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/service/ServiceRiver.kt index 9b86c3843c..883a56a936 100644 --- a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/service/ServiceRiver.kt +++ b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/service/ServiceRiver.kt @@ -8,6 +8,7 @@ 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.json.toPretty +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -16,6 +17,7 @@ import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.json.toPretty import no.nav.helsearbeidsgiver.utils.log.logger import no.nav.helsearbeidsgiver.utils.log.sikkerLogger +import java.util.UUID class ServiceRiverStateless( override val service: Service, @@ -125,6 +127,9 @@ sealed class ServiceRiver : ObjectRiver() { } } + // Servicer publiserer ikke via ObjectRiver, så denne nøkkelen blir ikke brukt + final override fun ServiceMelding.bestemNoekkel(): KafkaKey = KafkaKey(UUID.randomUUID()) + final override fun ServiceMelding.haandterFeil( json: Map, error: Throwable, diff --git a/apps/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartRiver.kt b/apps/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartRiver.kt index 4898598bef..6d488162ba 100644 --- a/apps/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartRiver.kt +++ b/apps/forespoersel-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselbesvart/ForespoerselBesvartRiver.kt @@ -8,6 +8,7 @@ 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.metrics.Metrics +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.toPretty import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.PriObjectRiver @@ -39,6 +40,8 @@ class ForespoerselBesvartRiver : PriObjectRiver() { spinnInntektsmeldingId = Pri.Key.SPINN_INNTEKTSMELDING_ID.lesOrNull(UuidSerializer, json), ) + override fun BesvartMelding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselId) + override fun BesvartMelding.haandter(json: Map): Map { logger.info("Mottok melding på pri-topic om ${Pri.NotisType.FORESPOERSEL_BESVART}.") sikkerLogger.info("Mottok melding på pri-topic:\n${json.toPretty()}") diff --git a/apps/forespoersel-forkastet/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselforkastet/ForespoerselForkastetRiver.kt b/apps/forespoersel-forkastet/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselforkastet/ForespoerselForkastetRiver.kt index 33889c922d..158a43e2f4 100644 --- a/apps/forespoersel-forkastet/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselforkastet/ForespoerselForkastetRiver.kt +++ b/apps/forespoersel-forkastet/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselforkastet/ForespoerselForkastetRiver.kt @@ -6,6 +6,7 @@ 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.toJson +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.toPretty import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.PriObjectRiver @@ -34,6 +35,8 @@ class ForespoerselForkastetRiver : PriObjectRiver() { forespoerselId = Pri.Key.FORESPOERSEL_ID.les(UuidSerializer, json), ) + override fun ForkastetMelding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselId) + override fun ForkastetMelding.haandter(json: Map): Map { logger.info("Mottok melding på pri-topic om ${Pri.NotisType.FORESPOERSEL_FORKASTET}.") sikkerLogger.info("Mottok melding på pri-topic:\n${json.toPretty()}") diff --git a/apps/forespoersel-infotrygd/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselinfotrygd/ForespoerselKastetTilInfotrygdRiver.kt b/apps/forespoersel-infotrygd/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselinfotrygd/ForespoerselKastetTilInfotrygdRiver.kt index b1e6177736..71dec8b061 100644 --- a/apps/forespoersel-infotrygd/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselinfotrygd/ForespoerselKastetTilInfotrygdRiver.kt +++ b/apps/forespoersel-infotrygd/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselinfotrygd/ForespoerselKastetTilInfotrygdRiver.kt @@ -6,6 +6,7 @@ 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.toJson +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.toPretty import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.PriObjectRiver @@ -34,6 +35,8 @@ class ForespoerselKastetTilInfotrygdRiver : PriObjectRiver): Map { logger.info("Mottok melding på pri-topic om ${Pri.NotisType.FORESPOERSEL_KASTET_TIL_INFOTRYGD}.") sikkerLogger.info("Mottok melding på pri-topic:\n${json.toPretty()}") diff --git a/apps/forespoersel-marker-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmarkerbesvart/MarkerForespoerselBesvartRiver.kt b/apps/forespoersel-marker-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmarkerbesvart/MarkerForespoerselBesvartRiver.kt index 93b132d224..ca1116639e 100644 --- a/apps/forespoersel-marker-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmarkerbesvart/MarkerForespoerselBesvartRiver.kt +++ b/apps/forespoersel-marker-besvart/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmarkerbesvart/MarkerForespoerselBesvartRiver.kt @@ -7,6 +7,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.json.toPretty +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.PriProducer import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver @@ -43,6 +44,8 @@ class MarkerForespoerselBesvartRiver( ) } + override fun Melding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselId) + override fun Melding.haandter(json: Map): Map? { logger.info("Mottok melding om ${EventName.INNTEKTSMELDING_MOTTATT}.") sikkerLogger.info("Mottok melding:\n${json.toPretty()}.") diff --git a/apps/forespoersel-mottatt/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmottatt/ForespoerselMottattRiver.kt b/apps/forespoersel-mottatt/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmottatt/ForespoerselMottattRiver.kt index 0c92c01402..68dce68285 100644 --- a/apps/forespoersel-mottatt/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmottatt/ForespoerselMottattRiver.kt +++ b/apps/forespoersel-mottatt/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/forespoerselmottatt/ForespoerselMottattRiver.kt @@ -10,6 +10,7 @@ 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 +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.PriObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -42,6 +43,8 @@ class ForespoerselMottattRiver : PriObjectRiver() { skalHaPaaminnelse = Pri.Key.SKAL_HA_PAAMINNELSE.les(Boolean.serializer(), json), ) + override fun Melding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselId) + override fun Melding.haandter(json: Map): Map { logger.info("Mottok melding på pri-topic om ${Pri.NotisType.FORESPØRSEL_MOTTATT}.") sikkerLogger.info("Mottok melding på pri-topic:\n${json.toPretty()}") diff --git a/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/ForespoerselSvarRiver.kt b/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/ForespoerselSvarRiver.kt index d026a5b79b..6edccb5ff0 100644 --- a/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/ForespoerselSvarRiver.kt +++ b/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/ForespoerselSvarRiver.kt @@ -9,6 +9,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.PriObjectRiver @@ -45,6 +46,8 @@ class ForespoerselSvarRiver : PriObjectRiver() { ) } + override fun ForespoerselSvarMelding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselSvar.forespoerselId) + override fun ForespoerselSvarMelding.haandter(json: Map): Map { logger.info("Mottok løsning på pri-topic om $behovType.") sikkerLogger.info("Mottok løsning på pri-topic:\n$json") diff --git a/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/HentForespoerslerForVedtaksperiodeIdListeRiver.kt b/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/HentForespoerslerForVedtaksperiodeIdListeRiver.kt index 0d41f012bc..560252e16c 100644 --- a/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/HentForespoerslerForVedtaksperiodeIdListeRiver.kt +++ b/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/HentForespoerslerForVedtaksperiodeIdListeRiver.kt @@ -8,6 +8,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.PriProducer @@ -50,6 +51,9 @@ class HentForespoerslerForVedtaksperiodeIdListeRiver( ) } + // Vi har ingen gode alternativer til Kafka-nøkkel, men det er heller ikke nøye her, så det holder med en tilfeldig verdi + override fun HentForespoerslerForVedtaksperiodeIdListeMelding.bestemNoekkel(): KafkaKey = KafkaKey(UUID.randomUUID()) + override fun HentForespoerslerForVedtaksperiodeIdListeMelding.haandter(json: Map): Map? { priProducer .send( diff --git a/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/TrengerForespoerselRiver.kt b/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/TrengerForespoerselRiver.kt index 74a77e13c2..aba22314c4 100644 --- a/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/TrengerForespoerselRiver.kt +++ b/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/TrengerForespoerselRiver.kt @@ -8,6 +8,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.PriProducer @@ -49,6 +50,8 @@ class TrengerForespoerselRiver( ) } + override fun TrengerForespoerselMelding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselId) + override fun TrengerForespoerselMelding.haandter(json: Map): Map? { priProducer .send( diff --git a/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/VedtaksperiodeIdForespoerselSvarRiver.kt b/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/VedtaksperiodeIdForespoerselSvarRiver.kt index da44084255..e47236cdb4 100644 --- a/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/VedtaksperiodeIdForespoerselSvarRiver.kt +++ b/apps/helsebro/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/VedtaksperiodeIdForespoerselSvarRiver.kt @@ -10,6 +10,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.pritopic.Pri import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.PriObjectRiver @@ -46,6 +47,9 @@ class VedtaksperiodeIdForespoerselSvarRiver : PriObjectRiver): Map { logger.info("Mottok løsning på pri-topic om $behovType.") sikkerLogger.info("Mottok løsning på pri-topic:\n$json") diff --git a/apps/inntekt/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentInntektRiver.kt b/apps/inntekt/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentInntektRiver.kt index f188c1cbc7..d6547238ae 100644 --- a/apps/inntekt/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentInntektRiver.kt +++ b/apps/inntekt/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentInntektRiver.kt @@ -64,6 +64,8 @@ class HentInntektRiver( ) } + override fun Melding.bestemNoekkel(): KafkaKey? = svarKafkaKey + override fun Melding.haandter(json: Map): Map { val fom = inntektsdato.minusMaaneder(3) val middle = inntektsdato.minusMaaneder(2) diff --git a/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiver.kt b/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiver.kt index d83c6a40d5..2b46bf2daa 100644 --- a/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiver.kt +++ b/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/JournalfoerImRiver.kt @@ -12,6 +12,7 @@ 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.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -61,6 +62,8 @@ class JournalfoerImRiver( } } + override fun JournalfoerImMelding.bestemNoekkel(): KafkaKey = KafkaKey(inntektsmelding.type.id) + override fun JournalfoerImMelding.haandter(json: Map): Map { "Mottok melding med event '$eventName'.".also { logger.info(it) diff --git a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/EndrePaaminnelseRiver.kt b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/EndrePaaminnelseRiver.kt index e3990a2470..baf46c8c4b 100644 --- a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/EndrePaaminnelseRiver.kt +++ b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/EndrePaaminnelseRiver.kt @@ -14,6 +14,7 @@ import no.nav.helsearbeidsgiver.felles.domene.Forespoersel import no.nav.helsearbeidsgiver.felles.json.krev import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.toMap +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -54,6 +55,8 @@ class EndrePaaminnelseRiver( ) } + override fun EndrePaaminnelseMelding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselId) + override fun EndrePaaminnelseMelding.haandter(json: Map): Map? { endreOppgavePaaminnelser( forespoerselId = forespoerselId, diff --git a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/FerdigstillForespoerselSakOgOppgaveRiver.kt b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/FerdigstillForespoerselSakOgOppgaveRiver.kt index 604b0d2f56..2a9e022389 100644 --- a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/FerdigstillForespoerselSakOgOppgaveRiver.kt +++ b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/FerdigstillForespoerselSakOgOppgaveRiver.kt @@ -8,6 +8,7 @@ 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -52,6 +53,8 @@ class FerdigstillForespoerselSakOgOppgaveRiver( } } + override fun FerdigstillForespoerselSakMelding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselId) + override fun FerdigstillForespoerselSakMelding.haandter(json: Map): Map { val lenke = NotifikasjonTekst.lenkeFerdigstiltForespoersel(linkUrl, forespoerselId) diff --git a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/FjernPaaminnelseRiver.kt b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/FjernPaaminnelseRiver.kt index dc10402bd4..5c7404e713 100644 --- a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/FjernPaaminnelseRiver.kt +++ b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/FjernPaaminnelseRiver.kt @@ -9,6 +9,7 @@ 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -43,6 +44,8 @@ class FjernPaaminnelseRiver( ) } + override fun FjernPaaminnelseMelding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselId) + override fun FjernPaaminnelseMelding.haandter(json: Map): Map? { if (paaminnelseToggle.oppgavePaaminnelseAktivert) { slettOppgavePaaminnelser(forespoerselId = forespoerselId) diff --git a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/OpprettForespoerselSakOgOppgaveRiver.kt b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/OpprettForespoerselSakOgOppgaveRiver.kt index ae5b64933d..f081cccc4e 100644 --- a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/OpprettForespoerselSakOgOppgaveRiver.kt +++ b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/OpprettForespoerselSakOgOppgaveRiver.kt @@ -11,6 +11,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -59,6 +60,8 @@ class OpprettForespoerselSakOgOppgaveRiver( ) } + override fun OpprettForespoerselSakOgOppgaveMelding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselId) + override fun OpprettForespoerselSakOgOppgaveMelding.haandter(json: Map): Map { val lenke = NotifikasjonTekst.lenkeAktivForespoersel(lenkeBaseUrl, forespoerselId) diff --git a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/OpprettSelvbestemtSakRiver.kt b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/OpprettSelvbestemtSakRiver.kt index ab3ab38656..7c543ade24 100644 --- a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/OpprettSelvbestemtSakRiver.kt +++ b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/OpprettSelvbestemtSakRiver.kt @@ -12,6 +12,7 @@ import no.nav.helsearbeidsgiver.felles.json.krev 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -53,6 +54,8 @@ class OpprettSelvbestemtSakRiver( ) } + override fun OpprettSelvbestemtSakMelding.bestemNoekkel(): KafkaKey = KafkaKey(inntektsmelding.type.id) + override fun OpprettSelvbestemtSakMelding.haandter(json: Map): Map { val sakId = agNotifikasjonKlient.opprettSak( diff --git a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/UtgaattForespoerselRiver.kt b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/UtgaattForespoerselRiver.kt index ad544305a4..942e1f5533 100644 --- a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/UtgaattForespoerselRiver.kt +++ b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/river/UtgaattForespoerselRiver.kt @@ -11,6 +11,7 @@ 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.river.ObjectRiver import no.nav.helsearbeidsgiver.felles.utils.Log @@ -73,6 +74,8 @@ class UtgaattForespoerselRiver( } } + override fun UtgaattForespoerselMelding.bestemNoekkel(): KafkaKey = KafkaKey(forespoerselId) + override fun UtgaattForespoerselMelding.haandter(json: Map): Map { logger.info("Mottok melding med event '$eventName'.") sikkerLogger.info("Mottok melding:\n${json.toPretty()}") diff --git a/apps/pdl/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/pdl/HentPersonerRiver.kt b/apps/pdl/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/pdl/HentPersonerRiver.kt index 5fa7df01c6..6c22f3bd25 100644 --- a/apps/pdl/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/pdl/HentPersonerRiver.kt +++ b/apps/pdl/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/pdl/HentPersonerRiver.kt @@ -56,6 +56,8 @@ class HentPersonerRiver( ) } + override fun Melding.bestemNoekkel(): KafkaKey? = svarKafkaKey + override fun Melding.haandter(json: Map): Map { "Henter navn for ${fnrListe.size} personer.".also { logger.info(it) From fff42b9e1cab0266c991f77b7ccb074ad3ff4cb7 Mon Sep 17 00:00:00 2001 From: Mikael Bjerga <6940327+bjerga@users.noreply.github.com> Date: Mon, 13 Jan 2025 10:23:39 +0100 Subject: [PATCH 3/7] =?UTF-8?q?Send=20svarn=C3=B8kkel=20til=20rivers=20som?= =?UTF-8?q?=20bruker=20det=20(#825)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aktiveorgnrservice/AktiveOrgnrService.kt | 1 + .../BerikInntektsmeldingService.kt | 22 +++++++++++++------ .../InntektSelvbestemtService.kt | 2 ++ .../inntektservice/InntektService.kt | 2 ++ .../integrasjonstest/InntektSelvbestemtIT.kt | 3 +++ .../HentDataTilPaaminnelseService.kt | 6 ++++- .../HentDataTilSakOgOppgaveService.kt | 11 ++++++++-- 7 files changed, 37 insertions(+), 10 deletions(-) diff --git a/apps/aktiveorgnrservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aktiveorgnrservice/AktiveOrgnrService.kt b/apps/aktiveorgnrservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aktiveorgnrservice/AktiveOrgnrService.kt index a76130353d..974137ce40 100644 --- a/apps/aktiveorgnrservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aktiveorgnrservice/AktiveOrgnrService.kt +++ b/apps/aktiveorgnrservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aktiveorgnrservice/AktiveOrgnrService.kt @@ -160,6 +160,7 @@ class AktiveOrgnrService( Key.KONTEKST_ID to steg0.transaksjonId.toJson(), Key.DATA to mapOf( + Key.SVAR_KAFKA_KEY to KafkaKey(steg0.sykmeldtFnr).toJson(), Key.ORGNR_UNDERENHETER to arbeidsgivere.toJson(String.serializer()), ).toJson(), ) diff --git a/apps/berik-inntektsmelding-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/BerikInntektsmeldingService.kt b/apps/berik-inntektsmelding-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/BerikInntektsmeldingService.kt index 8afb46ba65..75a7c4609e 100644 --- a/apps/berik-inntektsmelding-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/BerikInntektsmeldingService.kt +++ b/apps/berik-inntektsmelding-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/BerikInntektsmeldingService.kt @@ -15,6 +15,7 @@ import no.nav.helsearbeidsgiver.felles.json.les 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish import no.nav.helsearbeidsgiver.felles.rapidsrivers.service.ServiceMed4Steg @@ -127,8 +128,12 @@ class BerikInntektsmeldingService( Key.KONTEKST_ID to steg0.transaksjonId.toJson(), Key.DATA to data - .plus(Key.ORGNR_UNDERENHETER to setOf(steg1.forespoersel.orgnr).toJson(Orgnr.serializer())) - .toJson(), + .plus( + mapOf( + Key.SVAR_KAFKA_KEY to KafkaKey(steg0.skjema.forespoerselId).toJson(), + Key.ORGNR_UNDERENHETER to setOf(steg1.forespoersel.orgnr).toJson(Orgnr.serializer()), + ), + ).toJson(), ).also { loggBehovPublisert(BehovType.HENT_VIRKSOMHET_NAVN, it) } } @@ -147,11 +152,14 @@ class BerikInntektsmeldingService( Key.DATA to data .plus( - Key.FNR_LISTE to - listOf( - steg1.forespoersel.fnr, - steg0.avsenderFnr, - ).toJson(Fnr.serializer()), + mapOf( + Key.SVAR_KAFKA_KEY to KafkaKey(steg0.skjema.forespoerselId).toJson(), + Key.FNR_LISTE to + listOf( + steg1.forespoersel.fnr, + steg0.avsenderFnr, + ).toJson(Fnr.serializer()), + ), ).toJson(), ).also { loggBehovPublisert(BehovType.HENT_PERSONER, it) } } diff --git a/apps/inntekt-selvbestemt-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntektselvbestemtservice/InntektSelvbestemtService.kt b/apps/inntekt-selvbestemt-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntektselvbestemtservice/InntektSelvbestemtService.kt index bdbe0c441b..0cd20be54f 100644 --- a/apps/inntekt-selvbestemt-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntektselvbestemtservice/InntektSelvbestemtService.kt +++ b/apps/inntekt-selvbestemt-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntektselvbestemtservice/InntektSelvbestemtService.kt @@ -10,6 +10,7 @@ import no.nav.helsearbeidsgiver.felles.domene.Inntekt import no.nav.helsearbeidsgiver.felles.domene.ResultJson import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.toJson +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish import no.nav.helsearbeidsgiver.felles.rapidsrivers.redis.RedisStore @@ -74,6 +75,7 @@ class InntektSelvbestemtService( data .plus( mapOf( + Key.SVAR_KAFKA_KEY to KafkaKey(steg0.sykmeldtFnr).toJson(), Key.ORGNR_UNDERENHET to steg0.orgnr.toJson(), Key.FNR to steg0.sykmeldtFnr.toJson(), Key.INNTEKTSDATO to steg0.inntektsdato.toJson(), diff --git a/apps/inntektservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntektservice/InntektService.kt b/apps/inntektservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntektservice/InntektService.kt index ae50538b21..961c85425f 100644 --- a/apps/inntektservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntektservice/InntektService.kt +++ b/apps/inntektservice/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntektservice/InntektService.kt @@ -11,6 +11,7 @@ import no.nav.helsearbeidsgiver.felles.domene.Inntekt import no.nav.helsearbeidsgiver.felles.domene.ResultJson import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.toJson +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish import no.nav.helsearbeidsgiver.felles.rapidsrivers.redis.RedisStore @@ -105,6 +106,7 @@ class InntektService( data .plus( mapOf( + Key.SVAR_KAFKA_KEY to KafkaKey(steg0.forespoerselId).toJson(), Key.ORGNR_UNDERENHET to steg1.forespoersel.orgnr.toJson(), Key.FNR to steg1.forespoersel.fnr.toJson(), Key.INNTEKTSDATO to steg0.skjaeringstidspunkt.toJson(), diff --git a/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InntektSelvbestemtIT.kt b/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InntektSelvbestemtIT.kt index 3cddde89c9..7887e3b7c7 100644 --- a/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InntektSelvbestemtIT.kt +++ b/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/InntektSelvbestemtIT.kt @@ -9,6 +9,7 @@ import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.domene.Inntekt import no.nav.helsearbeidsgiver.felles.domene.InntektPerMaaned import no.nav.helsearbeidsgiver.felles.json.toJson +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest.utils.EndToEndTest import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.test.date.april @@ -49,6 +50,7 @@ class InntektSelvbestemtIT : EndToEndTest() { Key.KONTEKST_ID to Mock.transaksjonId.toJson(), Key.DATA to mapOf( + Key.SVAR_KAFKA_KEY to KafkaKey(Mock.fnr).toJson(), Key.ORGNR_UNDERENHET to Mock.orgnr.toJson(), Key.FNR to Mock.fnr.toJson(), Key.INNTEKTSDATO to Mock.inntektsdato.toJson(), @@ -65,6 +67,7 @@ class InntektSelvbestemtIT : EndToEndTest() { Key.KONTEKST_ID to Mock.transaksjonId.toJson(), Key.DATA to mapOf( + Key.SVAR_KAFKA_KEY to KafkaKey(Mock.fnr).toJson(), Key.ORGNR_UNDERENHET to Mock.orgnr.toJson(), Key.FNR to Mock.fnr.toJson(), Key.INNTEKTSDATO to Mock.inntektsdato.toJson(), diff --git a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/HentDataTilPaaminnelseService.kt b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/HentDataTilPaaminnelseService.kt index b680988312..ec08cb1a23 100644 --- a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/HentDataTilPaaminnelseService.kt +++ b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/HentDataTilPaaminnelseService.kt @@ -10,6 +10,7 @@ import no.nav.helsearbeidsgiver.felles.domene.Forespoersel import no.nav.helsearbeidsgiver.felles.json.les import no.nav.helsearbeidsgiver.felles.json.orgMapSerializer import no.nav.helsearbeidsgiver.felles.json.toJson +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish import no.nav.helsearbeidsgiver.felles.rapidsrivers.service.ServiceMed2Steg @@ -80,7 +81,10 @@ class HentDataTilPaaminnelseService( Key.DATA to data .plus( - Key.ORGNR_UNDERENHETER to setOf(steg1.forespoersel.orgnr).toJson(Orgnr.serializer()), + mapOf( + Key.SVAR_KAFKA_KEY to KafkaKey(steg0.forespoerselId).toJson(), + Key.ORGNR_UNDERENHETER to setOf(steg1.forespoersel.orgnr).toJson(Orgnr.serializer()), + ), ).toJson(), ) } diff --git a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/HentDataTilSakOgOppgaveService.kt b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/HentDataTilSakOgOppgaveService.kt index 6df7480ec0..f45feb1cd5 100644 --- a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/HentDataTilSakOgOppgaveService.kt +++ b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/HentDataTilSakOgOppgaveService.kt @@ -12,6 +12,7 @@ import no.nav.helsearbeidsgiver.felles.json.les 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.rapidsrivers.publish import no.nav.helsearbeidsgiver.felles.rapidsrivers.service.ServiceMed2Steg @@ -82,7 +83,10 @@ class HentDataTilSakOgOppgaveService( Key.DATA to data .plus( - Key.ORGNR_UNDERENHETER to setOf(steg0.forespoersel.orgnr).toJson(Orgnr.serializer()), + mapOf( + Key.SVAR_KAFKA_KEY to KafkaKey(steg0.forespoerselId).toJson(), + Key.ORGNR_UNDERENHETER to setOf(steg0.forespoersel.orgnr).toJson(Orgnr.serializer()), + ), ).toJson(), ) } @@ -100,7 +104,10 @@ class HentDataTilSakOgOppgaveService( Key.DATA to data .plus( - Key.FNR_LISTE to setOf(steg0.forespoersel.fnr).toJson(Fnr.serializer()), + mapOf( + Key.SVAR_KAFKA_KEY to KafkaKey(steg0.forespoerselId).toJson(), + Key.FNR_LISTE to setOf(steg0.forespoersel.fnr).toJson(Fnr.serializer()), + ), ).toJson(), ) } From 94770ce69d5ee0c80474d9044a11a55ead457110 Mon Sep 17 00:00:00 2001 From: Jesper Hustad Date: Fri, 17 Jan 2025 14:33:29 +0100 Subject: [PATCH 4/7] Mer beskrivende dokument tittel i dokarkiv (#830) Inkluderer orgnr og arbeidsgiverperiode i dokarkiv dokumentbeskrivelse for inntektsmelding --- .../felles/utils/PeriodeUtils.kt | 10 +++++ .../inntektsmelding/joark/TilDokumenter.kt | 15 +++++++- .../joark/TilDokumenterKtTest.kt | 37 +++++++++++++++++++ .../ArbeidsgiverNotifikasjonKlientUtils.kt | 15 ++------ ...ArbeidsgiverNotifikasjonKlientUtilsTest.kt | 3 +- 5 files changed, 67 insertions(+), 13 deletions(-) create mode 100644 apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/utils/PeriodeUtils.kt diff --git a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/utils/PeriodeUtils.kt b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/utils/PeriodeUtils.kt new file mode 100644 index 0000000000..d796111267 --- /dev/null +++ b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/utils/PeriodeUtils.kt @@ -0,0 +1,10 @@ +package no.nav.helsearbeidsgiver.felles.utils + +import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Periode + +fun List.tilKortFormat(): String = + if (size < 2) { + "${first().fom.tilNorskFormat()} - ${first().tom.tilNorskFormat()}" + } else { + "${first().fom.tilNorskFormat()} - [...] - ${last().tom.tilNorskFormat()}" + } diff --git a/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenter.kt b/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenter.kt index 0a5322b362..7373b24e09 100644 --- a/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenter.kt +++ b/apps/joark/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenter.kt @@ -3,8 +3,10 @@ package no.nav.helsearbeidsgiver.inntektsmelding.joark import no.nav.helsearbeidsgiver.dokarkiv.domene.Dokument import no.nav.helsearbeidsgiver.dokarkiv.domene.DokumentVariant import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding +import no.nav.helsearbeidsgiver.felles.utils.tilKortFormat import no.nav.helsearbeidsgiver.inntektsmelding.joark.dokument.PdfDokument import no.nav.helsearbeidsgiver.inntektsmelding.joark.dokument.transformToXML +import no.nav.helsearbeidsgiver.utils.pipe.orDefault import java.util.Base64 import java.util.UUID @@ -16,7 +18,7 @@ fun tilDokumenter( ): List = listOf( Dokument( - tittel = "Inntektsmelding", + tittel = inntektsmelding.tilDokumentbeskrivelse(), // TODO Denne må vi undersøke om vi vil bruke videre. Dette er koden til Altinn-service, som trolig brukes til å filtrere journalposter et sted. brevkode = "4936", dokumentVarianter = @@ -46,3 +48,14 @@ fun tilDokumenter( ) private fun ByteArray.encode(): String = base64.encodeToString(this) + +fun Inntektsmelding.tilDokumentbeskrivelse(): String { + val orgnr = this.avsender.orgnr.verdi + val agp = + this.agp + ?.perioder + ?.ifEmpty { null } + ?.tilKortFormat() + .orDefault("(ingen agp)") + return "Inntektsmelding-$orgnr-$agp" +} diff --git a/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenterKtTest.kt b/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenterKtTest.kt index 4a0c57d724..db698cbe38 100644 --- a/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenterKtTest.kt +++ b/apps/joark/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/joark/TilDokumenterKtTest.kt @@ -1,6 +1,10 @@ package no.nav.helsearbeidsgiver.inntektsmelding.joark +import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding +import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Periode +import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.til import no.nav.helsearbeidsgiver.felles.test.mock.mockInntektsmeldingV1 +import no.nav.helsearbeidsgiver.utils.test.date.oktober import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import java.util.UUID @@ -16,5 +20,38 @@ class TilDokumenterKtTest { assertEquals(2, dokumenter[0].dokumentVarianter.size) assertEquals("XML", dokumenter[0].dokumentVarianter[0].filtype) assertEquals("PDFA", dokumenter[0].dokumentVarianter[1].filtype) + assertEquals("Inntektsmelding-${mockInntektsmelding.avsender.orgnr.verdi}-05.10.2018 - [...] - 22.10.2018", dokumenter[0].tittel) } + + @Test + fun dokumentbeskrivelseToPerioder() { + val im = + mockInntekstmeldingMedPerioder( + listOf( + 4.oktober til 14.oktober, + 20.oktober til 22.oktober, + ), + ) + assertEquals("Inntektsmelding-${im.avsender.orgnr.verdi}-04.10.2018 - [...] - 22.10.2018", im.tilDokumentbeskrivelse()) + } + + @Test + fun dokumentbeskrivelseEnPeriode() { + val im = + mockInntekstmeldingMedPerioder( + listOf( + 1.oktober til 16.oktober, + ), + ) + assertEquals("Inntektsmelding-${im.avsender.orgnr.verdi}-01.10.2018 - 16.10.2018", im.tilDokumentbeskrivelse()) + } + + @Test + fun dokumentbeskrivelseIngenPeriode() { + val im = mockInntekstmeldingMedPerioder(emptyList()) + assertEquals("Inntektsmelding-${im.avsender.orgnr.verdi}-(ingen agp)", im.tilDokumentbeskrivelse()) + } + + private fun mockInntekstmeldingMedPerioder(perioder: List): Inntektsmelding = + mockInntektsmeldingV1().copy(agp = mockInntektsmeldingV1().agp?.copy(perioder = perioder)) } diff --git a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/ArbeidsgiverNotifikasjonKlientUtils.kt b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/ArbeidsgiverNotifikasjonKlientUtils.kt index 9bc800f52a..820f91c7e9 100644 --- a/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/ArbeidsgiverNotifikasjonKlientUtils.kt +++ b/apps/notifikasjon/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/ArbeidsgiverNotifikasjonKlientUtils.kt @@ -8,7 +8,7 @@ import no.nav.helsearbeidsgiver.arbeidsgivernotifikasjon.SakEllerOppgaveFinnesIk import no.nav.helsearbeidsgiver.arbeidsgivernotifkasjon.graphql.generated.enums.SaksStatus import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Periode import no.nav.helsearbeidsgiver.felles.domene.Person -import no.nav.helsearbeidsgiver.felles.utils.tilNorskFormat +import no.nav.helsearbeidsgiver.felles.utils.tilKortFormat import no.nav.helsearbeidsgiver.utils.log.logger import no.nav.helsearbeidsgiver.utils.log.sikkerLogger import no.nav.helsearbeidsgiver.utils.wrapper.Fnr @@ -52,7 +52,7 @@ object NotifikasjonTekst { fun sakTittel(sykmeldt: Person): String = "Inntektsmelding for ${sykmeldt.navn}: f. ${sykmeldt.fnr.lesFoedselsdato()}" - fun sakTilleggsinfo(sykmeldingsperioder: List): String = "Sykmeldingsperiode ${sykmeldingsperioder.tilString()}" + fun sakTilleggsinfo(sykmeldingsperioder: List): String = "Sykmeldingsperiode ${sykmeldingsperioder.tilKortFormat()}" fun oppgaveInnhold( orgnr: Orgnr, @@ -60,7 +60,7 @@ object NotifikasjonTekst { sykmeldingsperioder: List, ): String = listOf( - "$orgNavn - orgnr $orgnr: En av dine ansatte har søkt om sykepenger for perioden ${sykmeldingsperioder.tilString()}", + "$orgNavn - orgnr $orgnr: En av dine ansatte har søkt om sykepenger for perioden ${sykmeldingsperioder.tilKortFormat()}", "og vi trenger inntektsmelding for å behandle søknaden.", "Logg inn på Min side – arbeidsgiver hos Nav.", "Hvis dere sender inntektsmelding via lønnssystem kan dere fortsatt gjøre dette,", @@ -73,7 +73,7 @@ object NotifikasjonTekst { sykmeldingsperioder: List, ): String = listOf( - "Nav har ennå ikke mottatt inntektsmeldingen for en av deres ansatte for perioden ${sykmeldingsperioder.tilString()}.", + "Nav har ennå ikke mottatt inntektsmeldingen for en av deres ansatte for perioden ${sykmeldingsperioder.tilKortFormat()}.", "For at vi skal kunne behandle søknaden om sykepenger, må inntektsmeldingen sendes inn så snart som mulig.", "Vennligst logg inn på Min side – arbeidsgiver hos Nav for å se hvilken inntektsmelding det gjelder.", "Arbeidsgiver: $orgNavn (orgnr $orgnr).", @@ -259,13 +259,6 @@ fun ArbeidsgiverNotifikasjonKlient.settOppgaveUtgaatt( } } -fun List.tilString(): String = - if (size < 2) { - "${first().fom.tilNorskFormat()} - ${first().tom.tilNorskFormat()}" - } else { - "${first().fom.tilNorskFormat()} - [...] - ${last().tom.tilNorskFormat()}" - } - // Støtter d-nummer private fun Fnr.lesFoedselsdato(): String { val foersteSiffer = verdi.first().digitToInt() diff --git a/apps/notifikasjon/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/ArbeidsgiverNotifikasjonKlientUtilsTest.kt b/apps/notifikasjon/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/ArbeidsgiverNotifikasjonKlientUtilsTest.kt index bf8c45d038..ae2843fe2b 100644 --- a/apps/notifikasjon/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/ArbeidsgiverNotifikasjonKlientUtilsTest.kt +++ b/apps/notifikasjon/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/notifikasjon/ArbeidsgiverNotifikasjonKlientUtilsTest.kt @@ -6,6 +6,7 @@ import io.kotest.datatest.withData import io.kotest.matchers.shouldBe import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.til import no.nav.helsearbeidsgiver.felles.domene.Person +import no.nav.helsearbeidsgiver.felles.utils.tilKortFormat import no.nav.helsearbeidsgiver.utils.test.date.februar import no.nav.helsearbeidsgiver.utils.test.date.januar import no.nav.helsearbeidsgiver.utils.wrapper.Fnr @@ -34,7 +35,7 @@ class ArbeidsgiverNotifikasjonKlientUtilsTest : "to perioder" to row(listOf(1.januar til 31.januar, 1.februar til 28.februar), "01.01.2018 - [...] - 28.02.2018"), ), ) { (perioder, forventet) -> - perioder.tilString() shouldBe forventet + perioder.tilKortFormat() shouldBe forventet } } }) From 81e9d0a01c14ecd9d32102423c2114c6dd846bfd Mon Sep 17 00:00:00 2001 From: Mikael Bjerga <6940327+bjerga@users.noreply.github.com> Date: Mon, 20 Jan 2025 12:56:13 +0100 Subject: [PATCH 5/7] =?UTF-8?q?Krev=20tilsendt=20svarn=C3=B8kkel=20i=20utv?= =?UTF-8?q?algte=20rivers=20(#826)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Krev tilsendt svarnøkkel i utvalgte rivers * Krev nøkkel for å publisere melding --- .../aareg/HentArbeidsforholdRiver.kt | 7 +- .../inntekt/HentArbeidsforholdRiverTest.kt | 5 +- .../inntektsmelding/altinn/AltinnRiver.kt | 7 +- .../inntektsmelding/altinn/Mock.kt | 10 +- .../brreg/HentVirksomhetNavnRiver.kt | 7 +- .../brreg/HentVirksomhetNavnRiverTest.kt | 11 ++- .../db/river/HentLagretImRiver.kt | 7 +- .../db/river/HentLagretImRiverTest.kt | 5 +- .../felles/rapidsrivers/RiverUtils.kt | 8 +- .../felles/rapidsrivers/river/ObjectRiver.kt | 28 +++--- .../felles/rapidsrivers/river/OpenRiver.kt | 5 +- .../rapidsrivers/river/PriObjectRiver.kt | 28 +++--- .../felles/rapidsrivers/RiverUtilsKtTest.kt | 19 ---- .../inntekt/HentInntektRiver.kt | 7 +- .../inntekt/HentInntektRiverTest.kt | 5 +- .../inntektsmelding/pdl/HentPersonerRiver.kt | 7 +- .../pdl/HentPersonerRiverTest.kt | 96 +++++-------------- 17 files changed, 105 insertions(+), 157 deletions(-) diff --git a/apps/aareg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aareg/HentArbeidsforholdRiver.kt b/apps/aareg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aareg/HentArbeidsforholdRiver.kt index 782af8e078..6185b7a1c8 100644 --- a/apps/aareg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aareg/HentArbeidsforholdRiver.kt +++ b/apps/aareg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/aareg/HentArbeidsforholdRiver.kt @@ -8,7 +8,6 @@ import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.domene.Arbeidsforhold 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.toJson import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.metrics.Metrics @@ -28,7 +27,7 @@ data class HentArbeidsforholdMelding( val behovType: BehovType, val transaksjonId: UUID, val data: Map, - val svarKafkaKey: KafkaKey?, + val svarKafkaKey: KafkaKey, val fnr: Fnr, ) @@ -49,12 +48,12 @@ class HentArbeidsforholdRiver( behovType = Key.BEHOV.krev(BehovType.HENT_ARBEIDSFORHOLD, BehovType.serializer(), json), transaksjonId = Key.KONTEKST_ID.les(UuidSerializer, json), data = data, - svarKafkaKey = Key.SVAR_KAFKA_KEY.lesOrNull(KafkaKey.serializer(), data), + svarKafkaKey = Key.SVAR_KAFKA_KEY.les(KafkaKey.serializer(), data), fnr = Key.FNR.les(Fnr.serializer(), data), ) } - override fun HentArbeidsforholdMelding.bestemNoekkel(): KafkaKey? = svarKafkaKey + override fun HentArbeidsforholdMelding.bestemNoekkel(): KafkaKey = svarKafkaKey override fun HentArbeidsforholdMelding.haandter(json: Map): Map { val arbeidsforhold = diff --git a/apps/aareg/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentArbeidsforholdRiverTest.kt b/apps/aareg/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentArbeidsforholdRiverTest.kt index 78eb849e51..7c143a6f83 100644 --- a/apps/aareg/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentArbeidsforholdRiverTest.kt +++ b/apps/aareg/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentArbeidsforholdRiverTest.kt @@ -18,6 +18,7 @@ import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.domene.Arbeidsforhold import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toMap +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.test.mock.mockFail import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage @@ -122,6 +123,7 @@ class HentArbeidsforholdRiverTest : private object Mock { fun innkommendeMelding(): HentArbeidsforholdMelding { val fnr = Fnr.genererGyldig() + val svarKafkaKey = KafkaKey(fnr) return HentArbeidsforholdMelding( eventName = EventName.AKTIVE_ORGNR_REQUESTED, @@ -129,9 +131,10 @@ private object Mock { transaksjonId = UUID.randomUUID(), data = mapOf( + Key.SVAR_KAFKA_KEY to svarKafkaKey.toJson(), Key.FNR to fnr.toJson(Fnr.serializer()), ), - svarKafkaKey = null, + svarKafkaKey = svarKafkaKey, fnr = fnr, ) } diff --git a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiver.kt b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiver.kt index a6d7a4cd95..3d897169fc 100644 --- a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiver.kt +++ b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiver.kt @@ -8,7 +8,6 @@ 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.toJson import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.metrics.Metrics @@ -29,7 +28,7 @@ data class Melding( val behovType: BehovType, val transaksjonId: UUID, val data: Map, - val svarKafkaKey: KafkaKey?, + val svarKafkaKey: KafkaKey, val fnr: Fnr, ) @@ -50,12 +49,12 @@ class AltinnRiver( behovType = Key.BEHOV.krev(BehovType.ARBEIDSGIVERE, BehovType.serializer(), json), transaksjonId = Key.KONTEKST_ID.les(UuidSerializer, json), data = data, - svarKafkaKey = Key.SVAR_KAFKA_KEY.lesOrNull(KafkaKey.serializer(), data), + svarKafkaKey = Key.SVAR_KAFKA_KEY.les(KafkaKey.serializer(), data), fnr = Key.ARBEIDSGIVER_FNR.les(Fnr.serializer(), data), ) } - override fun Melding.bestemNoekkel(): KafkaKey? = svarKafkaKey + override fun Melding.bestemNoekkel(): KafkaKey = svarKafkaKey override fun Melding.haandter(json: Map): Map { val rettigheterForenklet = diff --git a/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/Mock.kt b/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/Mock.kt index 8b0fd15fe3..3e65927867 100644 --- a/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/Mock.kt +++ b/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/Mock.kt @@ -6,6 +6,7 @@ import no.nav.helsearbeidsgiver.felles.BehovType 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.KafkaKey import no.nav.helsearbeidsgiver.felles.test.mock.mockFail import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.test.wrapper.genererGyldig @@ -15,6 +16,7 @@ import java.util.UUID object Mock { fun innkommendeMelding(): Melding { val fnr = Fnr.genererGyldig() + val svarKafkaKey = KafkaKey(fnr) return Melding( eventName = EventName.AKTIVE_ORGNR_REQUESTED, @@ -22,9 +24,10 @@ object Mock { transaksjonId = UUID.randomUUID(), data = mapOf( + Key.SVAR_KAFKA_KEY to svarKafkaKey.toJson(), Key.ARBEIDSGIVER_FNR to fnr.toJson(), ), - svarKafkaKey = null, + svarKafkaKey = svarKafkaKey, fnr = fnr, ) } @@ -34,10 +37,7 @@ object Mock { Key.EVENT_NAME to eventName.toJson(), Key.BEHOV to behovType.toJson(), Key.KONTEKST_ID to transaksjonId.toJson(), - Key.DATA to - mapOf( - Key.ARBEIDSGIVER_FNR to fnr.toJson(), - ).toJson(), + Key.DATA to data.toJson(), ) val fail = mockFail("One does not simply walk into Mordor.", EventName.AKTIVE_ORGNR_REQUESTED) diff --git a/apps/brreg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/HentVirksomhetNavnRiver.kt b/apps/brreg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/HentVirksomhetNavnRiver.kt index 50e5e663c6..e963a948e4 100644 --- a/apps/brreg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/HentVirksomhetNavnRiver.kt +++ b/apps/brreg/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/HentVirksomhetNavnRiver.kt @@ -8,7 +8,6 @@ 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.toJson import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.metrics.Metrics @@ -29,7 +28,7 @@ data class HentVirksomhetMelding( val behovType: BehovType, val transaksjonId: UUID, val data: Map, - val svarKafkaKey: KafkaKey?, + val svarKafkaKey: KafkaKey, val orgnr: Set, ) @@ -51,12 +50,12 @@ class HentVirksomhetNavnRiver( behovType = Key.BEHOV.krev(BehovType.HENT_VIRKSOMHET_NAVN, BehovType.serializer(), json), transaksjonId = Key.KONTEKST_ID.les(UuidSerializer, json), data = data, - svarKafkaKey = Key.SVAR_KAFKA_KEY.lesOrNull(KafkaKey.serializer(), data), + svarKafkaKey = Key.SVAR_KAFKA_KEY.les(KafkaKey.serializer(), data), orgnr = Key.ORGNR_UNDERENHETER.les(Orgnr.serializer().set(), data), ) } - override fun HentVirksomhetMelding.bestemNoekkel(): KafkaKey? = svarKafkaKey + override fun HentVirksomhetMelding.bestemNoekkel(): KafkaKey = svarKafkaKey override fun HentVirksomhetMelding.haandter(json: Map): Map { val orgnrMedNavn = diff --git a/apps/brreg/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/HentVirksomhetNavnRiverTest.kt b/apps/brreg/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/HentVirksomhetNavnRiverTest.kt index d389769961..d19f2f3ad5 100644 --- a/apps/brreg/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/HentVirksomhetNavnRiverTest.kt +++ b/apps/brreg/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/brreg/HentVirksomhetNavnRiverTest.kt @@ -18,6 +18,7 @@ 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.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.test.mock.mockFail import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage @@ -181,18 +182,22 @@ class HentVirksomhetNavnRiverTest : }) private object Mock { - fun innkommendeMelding(orgnr: Set): HentVirksomhetMelding = - HentVirksomhetMelding( + fun innkommendeMelding(orgnr: Set): HentVirksomhetMelding { + val svarKafkaKey = KafkaKey(UUID.randomUUID()) + + return HentVirksomhetMelding( eventName = EventName.TRENGER_REQUESTED, behovType = BehovType.HENT_VIRKSOMHET_NAVN, transaksjonId = UUID.randomUUID(), data = mapOf( + Key.SVAR_KAFKA_KEY to svarKafkaKey.toJson(), Key.ORGNR_UNDERENHETER to orgnr.toJson(Orgnr.serializer()), ), - svarKafkaKey = null, + svarKafkaKey = svarKafkaKey, orgnr = orgnr, ) + } fun HentVirksomhetMelding.toMap(): Map = mapOf( diff --git a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentLagretImRiver.kt b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentLagretImRiver.kt index c85608d997..27b574e3e0 100644 --- a/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentLagretImRiver.kt +++ b/apps/db/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentLagretImRiver.kt @@ -13,7 +13,6 @@ import no.nav.helsearbeidsgiver.felles.domene.EksternInntektsmelding import no.nav.helsearbeidsgiver.felles.domene.ResultJson 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.toJson import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey @@ -33,7 +32,7 @@ data class HentLagretImMelding( val behovType: BehovType, val transaksjonId: UUID, val data: Map, - val svarKafkaKey: KafkaKey?, + val svarKafkaKey: KafkaKey, val forespoerselId: UUID, ) @@ -54,12 +53,12 @@ class HentLagretImRiver( behovType = Key.BEHOV.krev(BehovType.HENT_LAGRET_IM, BehovType.serializer(), json), transaksjonId = Key.KONTEKST_ID.les(UuidSerializer, json), data = data, - svarKafkaKey = Key.SVAR_KAFKA_KEY.lesOrNull(KafkaKey.serializer(), data), + svarKafkaKey = Key.SVAR_KAFKA_KEY.les(KafkaKey.serializer(), data), forespoerselId = Key.FORESPOERSEL_ID.les(UuidSerializer, data), ) } - override fun HentLagretImMelding.bestemNoekkel(): KafkaKey? = svarKafkaKey + override fun HentLagretImMelding.bestemNoekkel(): KafkaKey = svarKafkaKey override fun HentLagretImMelding.haandter(json: Map): Map { val ( diff --git a/apps/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentLagretImRiverTest.kt b/apps/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentLagretImRiverTest.kt index f6c2b78db3..e81b6be5e9 100644 --- a/apps/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentLagretImRiverTest.kt +++ b/apps/db/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/db/river/HentLagretImRiverTest.kt @@ -21,6 +21,7 @@ import no.nav.helsearbeidsgiver.felles.domene.EksternInntektsmelding import no.nav.helsearbeidsgiver.felles.domene.ResultJson import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toMap +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.test.mock.mockEksternInntektsmelding import no.nav.helsearbeidsgiver.felles.test.mock.mockFail @@ -197,6 +198,7 @@ class HentLagretImRiverTest : private object MockHentIm { fun innkommendeMelding(): HentLagretImMelding { val forespoerselId = UUID.randomUUID() + val svarKafkaKey = KafkaKey(forespoerselId) return HentLagretImMelding( eventName = EventName.KVITTERING_REQUESTED, @@ -204,9 +206,10 @@ private object MockHentIm { transaksjonId = UUID.randomUUID(), data = mapOf( + Key.SVAR_KAFKA_KEY to svarKafkaKey.toJson(), Key.FORESPOERSEL_ID to forespoerselId.toJson(), ), - svarKafkaKey = null, + svarKafkaKey = svarKafkaKey, forespoerselId = forespoerselId, ) } diff --git a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/RiverUtils.kt b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/RiverUtils.kt index d7b702a499..1543eaf2c2 100644 --- a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/RiverUtils.kt +++ b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/RiverUtils.kt @@ -24,7 +24,7 @@ fun MessageContext.publish( ): JsonElement = publish(key.toString(), messageFields.toMap()) internal fun MessageContext.publish( - key: String?, + key: String, messageFields: Map, ): JsonElement = messageFields @@ -41,9 +41,5 @@ internal fun MessageContext.publish( ) }.toJson() .also { - if (key == null) { - publish(it) - } else { - publish(key, it) - } + publish(key, it) }.parseJson() diff --git a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/ObjectRiver.kt b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/ObjectRiver.kt index d62655da60..5fe0e1a417 100644 --- a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/ObjectRiver.kt +++ b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/ObjectRiver.kt @@ -103,7 +103,7 @@ abstract class ObjectRiver { * Nøkkel som utgående melding sendes sammen med. * Meldinger sendt med samme nøkkel vil opprettholde rekkefølgen mellom dem (og konsumeres av samme pod). */ - protected abstract fun Melding.bestemNoekkel(): KafkaKey? + protected abstract fun Melding.bestemNoekkel(): KafkaKey /** * Riverens hovedfunksjon. Agerer på innkommende melding. @@ -138,7 +138,7 @@ abstract class ObjectRiver { protected abstract fun Melding.loggfelt(): Map /** Brukes av [OpenRiver]. */ - private fun lesOgHaandter(json: JsonElement): Pair>? { + private fun lesOgHaandter(json: JsonElement): Pair>? { val jsonMap = json.toMap().filterValues { it !is JsonNull } val innkommende = runCatching { les(jsonMap) }.getOrNull() @@ -164,24 +164,28 @@ abstract class ObjectRiver { runCatching { innkommende.bestemNoekkel() }.getOrElse { e -> - "Klarte ikke lage Kafka-nøkkel.".also { + "Klarte ikke bestemme Kafka-nøkkel. Melding prosesseres ikke.".also { logger.error(it) sikkerLogger.error(it, e) } null } - val msg = - runCatching { - innkommende.haandter(jsonMap) - }.getOrElse { e -> - innkommende.haandterFeil(jsonMap, e) - } - - if (msg.isNullOrEmpty()) { + if (key == null) { null } else { - key to msg + val msg = + runCatching { + innkommende.haandter(jsonMap) + }.getOrElse { e -> + innkommende.haandterFeil(jsonMap, e) + } + + if (msg.isNullOrEmpty()) { + null + } else { + key to msg + } } } } diff --git a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/OpenRiver.kt b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/OpenRiver.kt index b7abfef5f4..b5dffc287a 100644 --- a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/OpenRiver.kt +++ b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/OpenRiver.kt @@ -18,7 +18,7 @@ import no.nav.helsearbeidsgiver.utils.json.parseJson */ internal class OpenRiver( rapid: RapidsConnection, - private val haandterMelding: JsonElement.() -> Pair>?, + private val haandterMelding: JsonElement.() -> Pair>?, ) : River.PacketListener { init { River(rapid).register(this) @@ -33,8 +33,7 @@ internal class OpenRiver( .parseJson() .haandterMelding() ?.also { (kafkaKey, melding) -> - // TODO gjør key non-nullable - context.publish(kafkaKey?.key, melding) + context.publish(kafkaKey.key, melding) } } } diff --git a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/PriObjectRiver.kt b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/PriObjectRiver.kt index 85401a1309..1bdd4b89ff 100644 --- a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/PriObjectRiver.kt +++ b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/river/PriObjectRiver.kt @@ -27,7 +27,7 @@ abstract class PriObjectRiver { protected abstract fun les(json: Map): Melding? - protected abstract fun Melding.bestemNoekkel(): KafkaKey? + protected abstract fun Melding.bestemNoekkel(): KafkaKey protected abstract fun Melding.haandter(json: Map): Map? @@ -38,7 +38,7 @@ abstract class PriObjectRiver { protected abstract fun Melding.loggfelt(): Map - private fun lesOgHaandter(json: JsonElement): Pair>? { + private fun lesOgHaandter(json: JsonElement): Pair>? { val jsonMap = json.fromJsonMapFiltered(Pri.Key.serializer()).filterValues { it !is JsonNull } val innkommende = runCatching { les(jsonMap) }.getOrNull() @@ -64,24 +64,28 @@ abstract class PriObjectRiver { runCatching { innkommende.bestemNoekkel() }.getOrElse { e -> - "Klarte ikke lage Kafka-nøkkel.".also { + "Klarte ikke bestemme Kafka-nøkkel. Melding prosesseres ikke.".also { logger.error(it) sikkerLogger.error(it, e) } null } - val msg = - runCatching { - innkommende.haandter(jsonMap) - }.getOrElse { e -> - innkommende.haandterFeil(jsonMap, e) - } - - if (msg.isNullOrEmpty()) { + if (key == null) { null } else { - key to msg + val msg = + runCatching { + innkommende.haandter(jsonMap) + }.getOrElse { e -> + innkommende.haandterFeil(jsonMap, e) + } + + if (msg.isNullOrEmpty()) { + null + } else { + key to msg + } } } } diff --git a/apps/felles/src/test/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/RiverUtilsKtTest.kt b/apps/felles/src/test/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/RiverUtilsKtTest.kt index 2ccd2d1c27..d74456f491 100644 --- a/apps/felles/src/test/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/RiverUtilsKtTest.kt +++ b/apps/felles/src/test/kotlin/no/nav/helsearbeidsgiver/felles/rapidsrivers/RiverUtilsKtTest.kt @@ -72,25 +72,6 @@ class RiverUtilsKtTest : } } - test("map (uten key)") { - val melding = - mapOf( - Key.FORESPOERSEL_ID to UUID.randomUUID().toJson(), - Key.INNTEKTSMELDING to mockInntektsmeldingV1().toJson(Inntektsmelding.serializer()), - Key.ORGNR_UNDERENHETER to setOf("666", "444", "222").toJson(String.serializer()), - ) - - testRapid.publish(null, melding) - - verifySequence { - testRapid.publish( - withArg { - it.parseJson().toMap() shouldContainExactly melding - }, - ) - } - } - test("map") { val key = UUID.randomUUID() val melding = diff --git a/apps/inntekt/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentInntektRiver.kt b/apps/inntekt/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentInntektRiver.kt index d6547238ae..8ba8a6d9dd 100644 --- a/apps/inntekt/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentInntektRiver.kt +++ b/apps/inntekt/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentInntektRiver.kt @@ -8,7 +8,6 @@ import no.nav.helsearbeidsgiver.felles.domene.Inntekt import no.nav.helsearbeidsgiver.felles.domene.InntektPerMaaned 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.toJson import no.nav.helsearbeidsgiver.felles.json.toMap import no.nav.helsearbeidsgiver.felles.metrics.Metrics @@ -34,7 +33,7 @@ data class Melding( val behovType: BehovType, val transaksjonId: UUID, val data: Map, - val svarKafkaKey: KafkaKey?, + val svarKafkaKey: KafkaKey, val orgnr: Orgnr, val fnr: Fnr, val inntektsdato: LocalDate, @@ -57,14 +56,14 @@ class HentInntektRiver( behovType = Key.BEHOV.krev(BehovType.HENT_INNTEKT, BehovType.serializer(), json), transaksjonId = Key.KONTEKST_ID.les(UuidSerializer, json), data = data, - svarKafkaKey = Key.SVAR_KAFKA_KEY.lesOrNull(KafkaKey.serializer(), data), + svarKafkaKey = Key.SVAR_KAFKA_KEY.les(KafkaKey.serializer(), data), orgnr = Key.ORGNR_UNDERENHET.les(Orgnr.serializer(), data), fnr = Key.FNR.les(Fnr.serializer(), data), inntektsdato = Key.INNTEKTSDATO.les(LocalDateSerializer, data), ) } - override fun Melding.bestemNoekkel(): KafkaKey? = svarKafkaKey + override fun Melding.bestemNoekkel(): KafkaKey = svarKafkaKey override fun Melding.haandter(json: Map): Map { val fom = inntektsdato.minusMaaneder(3) diff --git a/apps/inntekt/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentInntektRiverTest.kt b/apps/inntekt/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentInntektRiverTest.kt index 2877d016d6..693c124de0 100644 --- a/apps/inntekt/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentInntektRiverTest.kt +++ b/apps/inntekt/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/inntekt/HentInntektRiverTest.kt @@ -18,6 +18,7 @@ import no.nav.helsearbeidsgiver.felles.domene.Inntekt import no.nav.helsearbeidsgiver.felles.domene.InntektPerMaaned import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toMap +import no.nav.helsearbeidsgiver.felles.rapidsrivers.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.test.mock.mockFail import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage @@ -166,6 +167,7 @@ private object Mock { fun innkommendeMelding(inntektsdato: LocalDate): Melding { val orgnr = Orgnr.genererGyldig() val fnr = Fnr.genererGyldig() + val svarKafkaKey = KafkaKey(fnr) return Melding( eventName = EventName.TRENGER_REQUESTED, @@ -173,11 +175,12 @@ private object Mock { transaksjonId = UUID.randomUUID(), data = mapOf( + Key.SVAR_KAFKA_KEY to svarKafkaKey.toJson(), Key.ORGNR_UNDERENHET to orgnr.toJson(), Key.FNR to fnr.toJson(), Key.INNTEKTSDATO to inntektsdato.toJson(), ), - svarKafkaKey = null, + svarKafkaKey = svarKafkaKey, orgnr = orgnr, fnr = fnr, inntektsdato = inntektsdato, diff --git a/apps/pdl/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/pdl/HentPersonerRiver.kt b/apps/pdl/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/pdl/HentPersonerRiver.kt index 6c22f3bd25..5dadbdbe56 100644 --- a/apps/pdl/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/pdl/HentPersonerRiver.kt +++ b/apps/pdl/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/pdl/HentPersonerRiver.kt @@ -7,7 +7,6 @@ import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.domene.Person 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.personMapSerializer import no.nav.helsearbeidsgiver.felles.json.toJson import no.nav.helsearbeidsgiver.felles.json.toMap @@ -30,7 +29,7 @@ data class Melding( val behovType: BehovType, val transaksjonId: UUID, val data: Map, - val svarKafkaKey: KafkaKey?, + val svarKafkaKey: KafkaKey, val fnrListe: Set, ) @@ -51,12 +50,12 @@ class HentPersonerRiver( behovType = Key.BEHOV.krev(BehovType.HENT_PERSONER, BehovType.serializer(), json), transaksjonId = Key.KONTEKST_ID.les(UuidSerializer, json), data = data, - svarKafkaKey = Key.SVAR_KAFKA_KEY.lesOrNull(KafkaKey.serializer(), data), + svarKafkaKey = Key.SVAR_KAFKA_KEY.les(KafkaKey.serializer(), data), fnrListe = Key.FNR_LISTE.les(Fnr.serializer().set(), data), ) } - override fun Melding.bestemNoekkel(): KafkaKey? = svarKafkaKey + override fun Melding.bestemNoekkel(): KafkaKey = svarKafkaKey override fun Melding.haandter(json: Map): Map { "Henter navn for ${fnrListe.size} personer.".also { diff --git a/apps/pdl/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/pdl/HentPersonerRiverTest.kt b/apps/pdl/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/pdl/HentPersonerRiverTest.kt index 8c34037014..859fdbd2dc 100644 --- a/apps/pdl/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/pdl/HentPersonerRiverTest.kt +++ b/apps/pdl/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/pdl/HentPersonerRiverTest.kt @@ -18,6 +18,7 @@ import no.nav.helsearbeidsgiver.felles.domene.Person 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.KafkaKey import no.nav.helsearbeidsgiver.felles.rapidsrivers.model.Fail import no.nav.helsearbeidsgiver.felles.test.mock.mockFail import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.firstMessage @@ -26,7 +27,6 @@ import no.nav.helsearbeidsgiver.inntektsmelding.pdl.Mock.toMap import no.nav.helsearbeidsgiver.pdl.PdlClient import no.nav.helsearbeidsgiver.pdl.domene.FullPerson import no.nav.helsearbeidsgiver.pdl.domene.PersonNavn -import no.nav.helsearbeidsgiver.utils.collection.mapValuesNotNull import no.nav.helsearbeidsgiver.utils.json.toJson import no.nav.helsearbeidsgiver.utils.test.date.juni import no.nav.helsearbeidsgiver.utils.test.wrapper.genererGyldig @@ -61,16 +61,7 @@ class HentPersonerRiverTest : testRapid.inspektør.size shouldBeExactly 1 - testRapid.firstMessage().toMap() shouldContainExactly - mapOf( - Key.EVENT_NAME to EventName.TRENGER_REQUESTED.toJson(), - Key.KONTEKST_ID to innkommendeMelding.transaksjonId.toJson(), - Key.DATA to - mapOf( - Key.FNR_LISTE to listOf(olaFnr).toJson(Fnr.serializer()), - Key.PERSONER to personer.toJson(personMapSerializer), - ).toJson(), - ) + testRapid.firstMessage().toMap() shouldContainExactly Mock.forventetUtgaaendeMelding(innkommendeMelding, personer) coVerifySequence { mockPdlClient.personBolk(listOf(olaFnr.verdi)) @@ -100,16 +91,7 @@ class HentPersonerRiverTest : testRapid.inspektør.size shouldBeExactly 1 - testRapid.firstMessage().toMap() shouldContainExactly - mapOf( - Key.EVENT_NAME to EventName.TRENGER_REQUESTED.toJson(), - Key.KONTEKST_ID to innkommendeMelding.transaksjonId.toJson(), - Key.DATA to - mapOf( - Key.FNR_LISTE to setOf(olaFnr, kariFnr).toJson(Fnr.serializer()), - Key.PERSONER to personer.toJson(personMapSerializer), - ).toJson(), - ) + testRapid.firstMessage().toMap() shouldContainExactly Mock.forventetUtgaaendeMelding(innkommendeMelding, personer) coVerifySequence { mockPdlClient.personBolk(listOf(olaFnr.verdi, kariFnr.verdi)) @@ -132,54 +114,14 @@ class HentPersonerRiverTest : testRapid.inspektør.size shouldBeExactly 1 - testRapid.firstMessage().toMap() shouldContainExactly - mapOf( - Key.EVENT_NAME to EventName.TRENGER_REQUESTED.toJson(), - Key.KONTEKST_ID to innkommendeMelding.transaksjonId.toJson(), - Key.DATA to - mapOf( - Key.FNR_LISTE to setOf(olaFnr, kariFnr).toJson(Fnr.serializer()), - Key.PERSONER to personer.toJson(personMapSerializer), - ).toJson(), - ) + testRapid.firstMessage().toMap() shouldContainExactly Mock.forventetUtgaaendeMelding(innkommendeMelding, personer) coVerifySequence { mockPdlClient.personBolk(listOf(olaFnr.verdi, kariFnr.verdi)) } } - test("sender med forespoerselId dersom det finnes i utløsende melding") { - val forespoerselId = UUID.randomUUID() - val olaFnr = Fnr.genererGyldig() - val personer = - mapOf( - olaFnr to Person(olaFnr, "Ola Normann"), - ) - - val innkommendeMelding = Mock.innkommendeMelding(setOf(olaFnr), forespoerselId) - - coEvery { mockPdlClient.personBolk(any()) } returns listOf(Mock.fullPerson("Ola", olaFnr)) - - testRapid.sendJson(innkommendeMelding.toMap()) - - testRapid.inspektør.size shouldBeExactly 1 - - testRapid.firstMessage().toMap() shouldContainExactly - mapOf( - Key.EVENT_NAME to EventName.TRENGER_REQUESTED.toJson(), - Key.KONTEKST_ID to innkommendeMelding.transaksjonId.toJson(), - Key.DATA to - mapOf( - Key.FORESPOERSEL_ID to forespoerselId.toJson(), - Key.FNR_LISTE to setOf(olaFnr).toJson(Fnr.serializer()), - Key.PERSONER to personer.toJson(personMapSerializer), - ).toJson(), - ) - } - test("håndterer ukjente feil") { - val forespoerselId = UUID.randomUUID() - val selvbestemtId = UUID.randomUUID() val randomFnr = Fnr.genererGyldig() val innkommendeMelding = Mock.innkommendeMelding(setOf(randomFnr)) @@ -233,22 +175,22 @@ class HentPersonerRiverTest : }) private object Mock { - fun innkommendeMelding( - fnrListe: Set, - forespoerselId: UUID? = null, - ): Melding = - Melding( + fun innkommendeMelding(fnrListe: Set): Melding { + val svarKafkaKey = KafkaKey(UUID.randomUUID()) + + return Melding( eventName = EventName.TRENGER_REQUESTED, behovType = BehovType.HENT_PERSONER, transaksjonId = UUID.randomUUID(), data = mapOf( - Key.FORESPOERSEL_ID to forespoerselId?.toJson(), + Key.SVAR_KAFKA_KEY to svarKafkaKey.toJson(), Key.FNR_LISTE to fnrListe.toJson(Fnr.serializer()), - ).mapValuesNotNull { it }, - svarKafkaKey = null, + ), + svarKafkaKey = svarKafkaKey, fnrListe = fnrListe, ) + } fun Melding.toMap(): Map = mapOf( @@ -258,6 +200,20 @@ private object Mock { Key.DATA to data.toJson(), ) + fun forventetUtgaaendeMelding( + innkommendeMelding: Melding, + personer: Map, + ): Map = + mapOf( + Key.EVENT_NAME to innkommendeMelding.eventName.toJson(), + Key.KONTEKST_ID to innkommendeMelding.transaksjonId.toJson(), + Key.DATA to + innkommendeMelding.data + .plus( + Key.PERSONER to personer.toJson(personMapSerializer), + ).toJson(), + ) + val fail = mockFail("They have a cave troll.", EventName.TRENGER_REQUESTED) fun fullPerson( From 2f2fde8f06be8fb15a2ecb477f96fc30296fca23 Mon Sep 17 00:00:00 2001 From: Mikael Bjerga <6940327+bjerga@users.noreply.github.com> Date: Mon, 20 Jan 2025 14:37:38 +0100 Subject: [PATCH 6/7] Fjern fastsatt inntekt (#827) * Fjern fastsatt inntekt * Fiks test-json * Fjern ubrukt metrikk --- .../HentForespoerselRouteKtTest.kt | 22 +--- .../MapInntektsmelding.kt | 9 +- .../MapInntektsmeldingKtTest.kt | 15 +-- .../felles/domene/ForespurtData.kt | 20 +--- .../felles/metrics/Metrics.kt | 2 - .../felles/ForespurtDataTest.kt | 4 +- .../test/resources/json/forespurtData.json | 5 +- .../json/forespurtDataMedFastsattInntekt.json | 28 ----- .../json/forespurtDataMedForrigeInntekt.json | 1 - .../forespurtDataMedTomtInntektForslag.json | 25 +++++ .../felles/test/mock/MockForespoersel.kt | 100 ++++++------------ .../helsebro/ForespoerselSvarRiverTest.kt | 10 +- .../inntektsmelding/helsebro/MockUtils.kt | 31 ------ 13 files changed, 79 insertions(+), 193 deletions(-) delete mode 100644 apps/felles/src/test/resources/json/forespurtDataMedFastsattInntekt.json create mode 100644 apps/felles/src/test/resources/json/forespurtDataMedTomtInntektForslag.json diff --git a/apps/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/hentforespoersel/HentForespoerselRouteKtTest.kt b/apps/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/hentforespoersel/HentForespoerselRouteKtTest.kt index 1d84f9a591..a93a34e2b3 100644 --- a/apps/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/hentforespoersel/HentForespoerselRouteKtTest.kt +++ b/apps/api/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/api/hentforespoersel/HentForespoerselRouteKtTest.kt @@ -314,7 +314,7 @@ private fun ForespurtData.hardcodedJson(): String = }, "inntekt": { "paakrevd": ${inntekt.paakrevd}, - "forslag": ${inntekt.forslag.hardcodedJson()} + "forslag": ${inntekt.forslag?.hardcodedJson()} }, "refusjon": { "paakrevd": ${refusjon.paakrevd}, @@ -324,23 +324,11 @@ private fun ForespurtData.hardcodedJson(): String = """ private fun ForslagInntekt.hardcodedJson(): String = - when (this) { - is ForslagInntekt.Grunnlag -> - """ - { - "type": "ForslagInntektGrunnlag", - "forrigeInntekt": ${forrigeInntekt?.hardcodedJson()} - } - """ - - is ForslagInntekt.Fastsatt -> - """ - { - "type": "ForslagInntektFastsatt", - "fastsattInntekt": $fastsattInntekt - } - """ + """ + { + "forrigeInntekt": ${forrigeInntekt?.hardcodedJson()} } + """ private fun ForrigeInntekt.hardcodedJson(): String = """ diff --git a/apps/berik-inntektsmelding-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/MapInntektsmelding.kt b/apps/berik-inntektsmelding-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/MapInntektsmelding.kt index e880699cbb..d5c7a953f2 100644 --- a/apps/berik-inntektsmelding-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/MapInntektsmelding.kt +++ b/apps/berik-inntektsmelding-service/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/MapInntektsmelding.kt @@ -2,12 +2,10 @@ package no.nav.helsearbeidsgiver.inntektsmelding.berikinntektsmeldingservice import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.AarsakInnsending import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Avsender -import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntekt import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Sykmeldt import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.skjema.SkjemaInntektsmelding import no.nav.helsearbeidsgiver.felles.domene.Forespoersel -import no.nav.helsearbeidsgiver.felles.domene.ForslagInntekt import no.nav.helsearbeidsgiver.felles.utils.zoneIdOslo import java.time.LocalDateTime import java.util.UUID @@ -38,12 +36,7 @@ fun mapInntektsmelding( ) } } else { - Inntekt( - beloep = (forespoersel.forespurtData.inntekt.forslag as ForslagInntekt.Fastsatt).fastsattInntekt, - inntektsdato = forespoersel.forslagInntektsdato(), - naturalytelser = emptyList(), - endringAarsak = null, - ) + null } val refusjon = diff --git a/apps/berik-inntektsmelding-service/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/MapInntektsmeldingKtTest.kt b/apps/berik-inntektsmelding-service/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/MapInntektsmeldingKtTest.kt index c7298e8d96..44ba43dffb 100644 --- a/apps/berik-inntektsmelding-service/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/MapInntektsmeldingKtTest.kt +++ b/apps/berik-inntektsmelding-service/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/berikinntektsmeldingservice/MapInntektsmeldingKtTest.kt @@ -1,7 +1,6 @@ package no.nav.helsearbeidsgiver.inntektsmelding.berikinntektsmeldingservice import io.kotest.core.spec.style.FunSpec -import io.kotest.matchers.collections.shouldBeEmpty import io.kotest.matchers.collections.shouldNotBeEmpty import io.kotest.matchers.nulls.shouldBeNull import io.kotest.matchers.nulls.shouldNotBeNull @@ -131,7 +130,7 @@ class MapInntektsmeldingKtTest : inntektsmelding.agp.shouldBeNull() } - test("bruker fastsatt inntekt (fra Spleis) dersom inntekt _ikke_ er påkrevd") { + test("fjerner inntekt dersom inntekt _ikke_ er påkrevd") { val forespoersel = mockForespoersel().utenPaakrevdInntekt() val skjema = mockSkjemaInntektsmelding() @@ -146,16 +145,8 @@ class MapInntektsmeldingKtTest : mottatt = 6.desember.atStartOfDay(), ) - val fastsattInntekt = 8795.0 - - inntektsmelding.inntekt shouldNotBe skjema.inntekt - inntektsmelding.inntekt.also { - it.shouldNotBeNull() - it.beloep shouldBe fastsattInntekt - it.inntektsdato shouldBe forespoersel.forslagInntektsdato() - it.naturalytelser.shouldBeEmpty() - it.endringAarsak.shouldBeNull() - } + skjema.inntekt.shouldNotBeNull() + inntektsmelding.inntekt.shouldBeNull() } test("bruker innsendt inntektsdato dersom AGP er påkrevd") { diff --git a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/domene/ForespurtData.kt b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/domene/ForespurtData.kt index efea9c0701..7d13c7e223 100644 --- a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/domene/ForespurtData.kt +++ b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/domene/ForespurtData.kt @@ -2,7 +2,6 @@ package no.nav.helsearbeidsgiver.felles.domene -import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import kotlinx.serialization.UseSerializers import no.nav.helsearbeidsgiver.utils.json.serializer.LocalDateSerializer @@ -23,7 +22,7 @@ data class ForespurtData( @Serializable data class Inntekt( val paakrevd: Boolean, - val forslag: ForslagInntekt, + val forslag: ForslagInntekt?, ) @Serializable @@ -34,19 +33,10 @@ data class ForespurtData( } @Serializable -sealed class ForslagInntekt { - @Serializable - @SerialName("ForslagInntektGrunnlag") - data class Grunnlag( - val forrigeInntekt: ForrigeInntekt?, - ) : ForslagInntekt() - - @Serializable - @SerialName("ForslagInntektFastsatt") - data class Fastsatt( - val fastsattInntekt: Double, - ) : ForslagInntekt() -} +data class ForslagInntekt( + // TODO fjern default etter overgangsfase + val forrigeInntekt: ForrigeInntekt? = null, +) @Serializable data class ForslagRefusjon( diff --git a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/metrics/Metrics.kt b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/metrics/Metrics.kt index f69867347c..835334bc22 100644 --- a/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/metrics/Metrics.kt +++ b/apps/felles/src/main/kotlin/no/nav/helsearbeidsgiver/felles/metrics/Metrics.kt @@ -34,8 +34,6 @@ object Metrics { val pdlRequest = requestMetric("PDL") - val forespoerslerBesvartFraSimba = counterMetric("forespoersler besvart fra Simba") - val forespoerslerBesvartFraSpleis = counterMetric("forespoersler besvart fra Spleis") object Expose { diff --git a/apps/felles/src/test/kotlin/no/nav/helsearbeidsgiver/felles/ForespurtDataTest.kt b/apps/felles/src/test/kotlin/no/nav/helsearbeidsgiver/felles/ForespurtDataTest.kt index 99df78b8f0..637c43234c 100644 --- a/apps/felles/src/test/kotlin/no/nav/helsearbeidsgiver/felles/ForespurtDataTest.kt +++ b/apps/felles/src/test/kotlin/no/nav/helsearbeidsgiver/felles/ForespurtDataTest.kt @@ -6,8 +6,8 @@ import io.kotest.data.row import io.kotest.matchers.shouldBe import no.nav.helsearbeidsgiver.felles.domene.ForespurtData import no.nav.helsearbeidsgiver.felles.test.mock.mockForespurtData -import no.nav.helsearbeidsgiver.felles.test.mock.mockForespurtDataMedFastsattInntekt import no.nav.helsearbeidsgiver.felles.test.mock.mockForespurtDataMedForrigeInntekt +import no.nav.helsearbeidsgiver.felles.test.mock.mockForespurtDataMedTomtInntektForslag import no.nav.helsearbeidsgiver.utils.json.fromJson import no.nav.helsearbeidsgiver.utils.json.toJsonStr import no.nav.helsearbeidsgiver.utils.test.json.removeJsonWhitespace @@ -17,7 +17,7 @@ class ForespurtDataTest : FunSpec({ listOf( row("forespurtData", ::mockForespurtData), - row("forespurtDataMedFastsattInntekt", ::mockForespurtDataMedFastsattInntekt), + row("forespurtDataMedTomtInntektForslag", ::mockForespurtDataMedTomtInntektForslag), row("forespurtDataMedForrigeInntekt", ::mockForespurtDataMedForrigeInntekt), ).forEach { (fileName, mockDataFn) -> val expectedJson = "json/$fileName.json".readResource().removeJsonWhitespace() diff --git a/apps/felles/src/test/resources/json/forespurtData.json b/apps/felles/src/test/resources/json/forespurtData.json index 7d3f8cca39..3101fc4df9 100644 --- a/apps/felles/src/test/resources/json/forespurtData.json +++ b/apps/felles/src/test/resources/json/forespurtData.json @@ -4,10 +4,7 @@ }, "inntekt": { "paakrevd": true, - "forslag": { - "type": "ForslagInntektGrunnlag", - "forrigeInntekt": null - } + "forslag": null }, "refusjon": { "paakrevd": true, diff --git a/apps/felles/src/test/resources/json/forespurtDataMedFastsattInntekt.json b/apps/felles/src/test/resources/json/forespurtDataMedFastsattInntekt.json deleted file mode 100644 index 3d3047c520..0000000000 --- a/apps/felles/src/test/resources/json/forespurtDataMedFastsattInntekt.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "arbeidsgiverperiode": { - "paakrevd": true - }, - "inntekt": { - "paakrevd": false, - "forslag": { - "type": "ForslagInntektFastsatt", - "fastsattInntekt": 31415.92 - } - }, - "refusjon": { - "paakrevd": true, - "forslag": { - "perioder": [ - { - "fom": "2018-01-01", - "beloep": 31415.92 - }, - { - "fom": "2018-01-15", - "beloep": 3.14 - } - ], - "opphoersdato": null - } - } -} diff --git a/apps/felles/src/test/resources/json/forespurtDataMedForrigeInntekt.json b/apps/felles/src/test/resources/json/forespurtDataMedForrigeInntekt.json index 34e5fe7fe8..f578bd8e12 100644 --- a/apps/felles/src/test/resources/json/forespurtDataMedForrigeInntekt.json +++ b/apps/felles/src/test/resources/json/forespurtDataMedForrigeInntekt.json @@ -5,7 +5,6 @@ "inntekt": { "paakrevd": true, "forslag": { - "type": "ForslagInntektGrunnlag", "forrigeInntekt": { "skjæringstidspunkt": "2017-01-01", "kilde": "INNTEKTSMELDING", diff --git a/apps/felles/src/test/resources/json/forespurtDataMedTomtInntektForslag.json b/apps/felles/src/test/resources/json/forespurtDataMedTomtInntektForslag.json new file mode 100644 index 0000000000..41e855d931 --- /dev/null +++ b/apps/felles/src/test/resources/json/forespurtDataMedTomtInntektForslag.json @@ -0,0 +1,25 @@ +{ + "arbeidsgiverperiode": { + "paakrevd": true + }, + "inntekt": { + "paakrevd": true, + "forslag": {} + }, + "refusjon": { + "paakrevd": true, + "forslag": { + "perioder": [ + { + "fom": "2017-01-10", + "beloep": 10.48 + }, + { + "fom": "2017-02-02", + "beloep": 98.26 + } + ], + "opphoersdato": "2017-02-26" + } + } +} diff --git a/apps/felles/src/testFixtures/kotlin/no/nav/helsearbeidsgiver/felles/test/mock/MockForespoersel.kt b/apps/felles/src/testFixtures/kotlin/no/nav/helsearbeidsgiver/felles/test/mock/MockForespoersel.kt index 4c296f601d..cac0700d9b 100644 --- a/apps/felles/src/testFixtures/kotlin/no/nav/helsearbeidsgiver/felles/test/mock/MockForespoersel.kt +++ b/apps/felles/src/testFixtures/kotlin/no/nav/helsearbeidsgiver/felles/test/mock/MockForespoersel.kt @@ -41,101 +41,56 @@ fun mockForespurtData(): ForespurtData = inntekt = ForespurtData.Inntekt( paakrevd = true, - forslag = ForslagInntekt.Grunnlag(forrigeInntekt = null), + forslag = null, ), refusjon = ForespurtData.Refusjon( paakrevd = true, - forslag = - ForslagRefusjon( - perioder = - listOf( - ForslagRefusjon.Periode( - fom = 10.januar(2017), - beloep = 10.48, - ), - ForslagRefusjon.Periode( - fom = 2.februar(2017), - beloep = 98.26, - ), - ), - opphoersdato = 26.februar(2017), - ), + forslag = mockForespurtDataForslagRefusjon(), ), ) -fun mockForespurtDataMedForrigeInntekt(): ForespurtData = +fun mockForespurtDataMedTomtInntektForslag(): ForespurtData = ForespurtData( arbeidsgiverperiode = ForespurtData.Arbeidsgiverperiode( - paakrevd = false, + paakrevd = true, ), inntekt = ForespurtData.Inntekt( paakrevd = true, - forslag = - ForslagInntekt.Grunnlag( - forrigeInntekt = - ForrigeInntekt( - skjæringstidspunkt = 1.januar.minusYears(1), - kilde = "INNTEKTSMELDING", - beløp = 10000.0, - ), - ), + forslag = ForslagInntekt(forrigeInntekt = null), ), refusjon = ForespurtData.Refusjon( paakrevd = true, - forslag = - ForslagRefusjon( - perioder = - listOf( - ForslagRefusjon.Periode( - fom = 10.januar(2017), - beloep = 10.48, - ), - ForslagRefusjon.Periode( - fom = 2.februar(2017), - beloep = 98.26, - ), - ), - opphoersdato = 26.februar(2017), - ), + forslag = mockForespurtDataForslagRefusjon(), ), ) -fun mockForespurtDataMedFastsattInntekt(): ForespurtData = +fun mockForespurtDataMedForrigeInntekt(): ForespurtData = ForespurtData( arbeidsgiverperiode = ForespurtData.Arbeidsgiverperiode( - paakrevd = true, + paakrevd = false, ), inntekt = ForespurtData.Inntekt( - paakrevd = false, + paakrevd = true, forslag = - ForslagInntekt.Fastsatt( - fastsattInntekt = 31415.92, + ForslagInntekt( + forrigeInntekt = + ForrigeInntekt( + skjæringstidspunkt = 1.januar.minusYears(1), + kilde = "INNTEKTSMELDING", + beløp = 10000.0, + ), ), ), refusjon = ForespurtData.Refusjon( paakrevd = true, - forslag = - ForslagRefusjon( - perioder = - listOf( - ForslagRefusjon.Periode( - fom = 1.januar, - beloep = 31415.92, - ), - ForslagRefusjon.Periode( - fom = 15.januar, - beloep = 3.14, - ), - ), - opphoersdato = null, - ), + forslag = mockForespurtDataForslagRefusjon(), ), ) @@ -157,10 +112,7 @@ fun Forespoersel.utenPaakrevdInntekt(): Forespoersel = inntekt = ForespurtData.Inntekt( paakrevd = false, - forslag = - ForslagInntekt.Fastsatt( - fastsattInntekt = 8795.0, - ), + forslag = null, ), ), ) @@ -180,3 +132,19 @@ fun Forespoersel.utenPaakrevdRefusjon(): Forespoersel = ), ), ) + +private fun mockForespurtDataForslagRefusjon(): ForslagRefusjon = + ForslagRefusjon( + perioder = + listOf( + ForslagRefusjon.Periode( + fom = 10.januar(2017), + beloep = 10.48, + ), + ForslagRefusjon.Periode( + fom = 2.februar(2017), + beloep = 98.26, + ), + ), + opphoersdato = 26.februar(2017), + ) diff --git a/apps/helsebro/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/ForespoerselSvarRiverTest.kt b/apps/helsebro/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/ForespoerselSvarRiverTest.kt index 605ed72512..fd27dce8b4 100644 --- a/apps/helsebro/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/ForespoerselSvarRiverTest.kt +++ b/apps/helsebro/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/ForespoerselSvarRiverTest.kt @@ -2,7 +2,6 @@ package no.nav.helsearbeidsgiver.inntektsmelding.helsebro 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.kotest.matchers.nulls.shouldNotBeNull @@ -35,12 +34,9 @@ class ForespoerselSvarRiverTest : testRapid.reset() } - withData( - mapOf( - "Ved suksessfullt svar på behov så publiseres data på simba-rapid" to mockForespoerselSvarMedSuksess(), - "Ved suksessfullt svar med fastsatt inntekt på behov så publiseres data på simba-rapid" to mockForespoerselSvarMedSuksessMedFastsattInntekt(), - ), - ) { expectedIncoming -> + test("Ved suksessfullt svar på behov så publiseres data på simba-rapid") { + val expectedIncoming = mockForespoerselSvarMedSuksess() + testRapid.sendJson( Pri.Key.BEHOV to Pri.BehovType.TRENGER_FORESPØRSEL.toJson(Pri.BehovType.serializer()), Pri.Key.LOESNING to expectedIncoming.toJson(ForespoerselSvar.serializer()), diff --git a/apps/helsebro/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/MockUtils.kt b/apps/helsebro/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/MockUtils.kt index b6df8ba460..7dfa0df2d6 100644 --- a/apps/helsebro/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/MockUtils.kt +++ b/apps/helsebro/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/helsebro/MockUtils.kt @@ -7,7 +7,6 @@ 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.ForespoerselListeSvar import no.nav.helsearbeidsgiver.inntektsmelding.helsebro.domene.ForespoerselSvar import no.nav.helsearbeidsgiver.utils.json.toJson @@ -49,16 +48,6 @@ fun mockForespoerselListeSvarMedSuksess(): ForespoerselListeSvar { ) } -fun mockForespoerselSvarMedSuksessMedFastsattInntekt(): ForespoerselSvar { - val forespoerselId = UUID.randomUUID() - return ForespoerselSvar( - forespoerselId = forespoerselId, - resultat = mockForespoerselSvarSuksessMedFastsattInntekt(forespoerselId), - feil = null, - boomerang = mockBoomerang(), - ) -} - fun mockForespoerselSvarMedFeil(): ForespoerselSvar = ForespoerselSvar( forespoerselId = UUID.randomUUID(), @@ -90,26 +79,6 @@ fun mockForespoerselSvarSuksess(forespoerselId: UUID): ForespoerselFraBro { ) } -fun mockForespoerselSvarSuksessMedFastsattInntekt(forespoerselId: UUID): ForespoerselFraBro { - val orgnr = Orgnr.genererGyldig() - return ForespoerselFraBro( - orgnr = orgnr, - fnr = Fnr.genererGyldig(), - forespoerselId = forespoerselId, - vedtaksperiodeId = UUID.randomUUID(), - sykmeldingsperioder = - listOf( - 2.januar til 10.januar, - 15.januar til 31.januar, - ), - egenmeldingsperioder = listOf(1.januar til 1.januar), - bestemmendeFravaersdager = mapOf(orgnr to 1.januar), - forespurtData = mockForespurtDataMedFastsattInntekt(), - erBesvart = false, - opprettetUpresisIkkeBruk = 17.januar, - ) -} - private fun mockBoomerang(): JsonElement = mapOf( Key.EVENT_NAME to EventName.INNTEKT_REQUESTED.toJson(), From b35f7ef7778ac3bb64e2b82f9e194f518f096e06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20S=C3=A6lensminde?= <41949947+magnusae@users.noreply.github.com> Date: Thu, 23 Jan 2025 12:36:24 +0100 Subject: [PATCH 7/7] Hent Altinn-tilganger via Fager sitt API (#832) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bakgrunn Vi ønsker å gå over til Fager sitt API for henting av Altinn-tilganger for å gjøre fremtidig flytting av tilganger fra Altinn 2 til Altinn 3 enklere. (Fager sitt API henter og syr sammen tilganger fra både Altinn 2 og Altinn 3.) Løsning Bruk ny versjon av AltinnClient (Altinn3M2MClient), som henter rettigheter fra Fager sitt API ved hjelp av M2M-/Azure-token. Commits: * Bytt til Fager sitt API for å hente Altinn-tilganger * Legg til manglende konfig for å få Fager sitt Altinn-API til å virke pluss fiks integrasjonstester * Rens vekk gammel Maskinporten-moro som vi ikke trenger lenger * Fjern altinn fra external hosts fordi vi ikke lenger gjør kall direkte til Altinn * Bruk snapshotversjon av aller nyeste altinnklient * Deploy im altinn for å hente ny snapshotversjon av altinnclient med logging som forhåpentligvis fungerer * Deploy (igjen) for å forsøke å få med logging i dev * Oppgrader til nyeste AltinnClient --- apps/altinn/build.gradle.kts | 4 -- apps/altinn/gradle.properties | 4 +- .../inntektsmelding/altinn/AltinnRiver.kt | 11 ++---- .../inntektsmelding/altinn/App.kt | 35 ++++------------- .../inntektsmelding/altinn/Env.kt | 20 +++++----- .../inntektsmelding/altinn/TilgangRiver.kt | 8 ++-- .../inntektsmelding/altinn/AltinnAppTest.kt | 20 ++-------- .../inntektsmelding/altinn/AltinnRiverTest.kt | 19 ++++------ .../inntektsmelding/altinn/Mock.kt | 10 +---- .../altinn/TilgangRiverTest.kt | 16 ++++---- .../integrasjonstest/AktiveOrgnrServiceIT.kt | 38 +++---------------- .../integrasjonstest/TilgangskontrollIT.kt | 4 +- .../integrasjonstest/utils/EndToEndTest.kt | 4 +- config/altinn/dev-gcp.yml | 20 ++++------ config/altinn/prod-gcp.yml | 19 ++++------ 15 files changed, 73 insertions(+), 159 deletions(-) diff --git a/apps/altinn/build.gradle.kts b/apps/altinn/build.gradle.kts index a4b9b482ce..a7af7a84a3 100644 --- a/apps/altinn/build.gradle.kts +++ b/apps/altinn/build.gradle.kts @@ -1,11 +1,7 @@ dependencies { val altinnClientVersion: String by project - val maskinportenClientVersion: String by project val mockwebserverVersion: String by project - val nimbusJoseJwtVersion: String by project implementation("no.nav.helsearbeidsgiver:altinn-client:$altinnClientVersion") - implementation("no.nav.helsearbeidsgiver:maskinporten-client:$maskinportenClientVersion") - testImplementation("com.nimbusds:nimbus-jose-jwt:$nimbusJoseJwtVersion") testImplementation("com.squareup.okhttp3:mockwebserver:$mockwebserverVersion") } diff --git a/apps/altinn/gradle.properties b/apps/altinn/gradle.properties index f008fcab99..b05803f559 100644 --- a/apps/altinn/gradle.properties +++ b/apps/altinn/gradle.properties @@ -1,4 +1,2 @@ -altinnClientVersion=0.4.0 -maskinportenClientVersion=0.1.9 +altinnClientVersion=1.0.0 mockwebserverVersion=5.0.0-alpha.14 -nimbusJoseJwtVersion=9.47 diff --git a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiver.kt b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiver.kt index 3d897169fc..dfb2e59fc1 100644 --- a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiver.kt +++ b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiver.kt @@ -2,7 +2,7 @@ package no.nav.helsearbeidsgiver.inntektsmelding.altinn import kotlinx.serialization.builtins.serializer import kotlinx.serialization.json.JsonElement -import no.nav.helsearbeidsgiver.altinn.AltinnClient +import no.nav.helsearbeidsgiver.altinn.Altinn3M2MClient import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key @@ -33,7 +33,7 @@ data class Melding( ) class AltinnRiver( - private val altinnClient: AltinnClient, + private val altinnClient: Altinn3M2MClient, ) : ObjectRiver() { private val logger = logger() private val sikkerLogger = sikkerLogger() @@ -58,11 +58,8 @@ class AltinnRiver( override fun Melding.haandter(json: Map): Map { val rettigheterForenklet = - Metrics.altinnRequest.recordTime(altinnClient::hentRettighetOrganisasjoner) { - altinnClient - .hentRettighetOrganisasjoner(fnr.verdi) - .mapNotNull { it.orgnr } - .toSet() + Metrics.altinnRequest.recordTime(altinnClient::hentTilganger) { + altinnClient.hentTilganger(fnr.verdi) } return mapOf( diff --git a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/App.kt b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/App.kt index 1d7fce4215..e147505e5b 100644 --- a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/App.kt +++ b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/App.kt @@ -1,12 +1,10 @@ package no.nav.helsearbeidsgiver.inntektsmelding.altinn import com.github.navikt.tbd_libs.rapids_and_rivers_api.RapidsConnection -import kotlinx.coroutines.runBlocking import no.nav.helse.rapids_rivers.RapidApplication -import no.nav.helsearbeidsgiver.altinn.AltinnClient +import no.nav.helsearbeidsgiver.altinn.Altinn3M2MClient import no.nav.helsearbeidsgiver.altinn.CacheConfig -import no.nav.helsearbeidsgiver.maskinporten.MaskinportenClient -import no.nav.helsearbeidsgiver.maskinporten.MaskinportenClientConfig +import no.nav.helsearbeidsgiver.tokenprovider.oauth2ClientCredentialsTokenGetter import no.nav.helsearbeidsgiver.utils.log.logger import kotlin.time.Duration.Companion.minutes @@ -19,7 +17,7 @@ fun main() { .start() } -fun RapidsConnection.createAltinn(altinnClient: AltinnClient): RapidsConnection = +fun RapidsConnection.createAltinn(altinnClient: Altinn3M2MClient): RapidsConnection = also { logger.info("Starter ${TilgangRiver::class.simpleName}...") TilgangRiver(altinnClient).connect(this) @@ -28,29 +26,10 @@ fun RapidsConnection.createAltinn(altinnClient: AltinnClient): RapidsConnection AltinnRiver(altinnClient).connect(this) } -private fun createAltinnClient(): AltinnClient { - val maskinportenClient = createMaskinportenClient() - return AltinnClient( - url = Env.url, +private fun createAltinnClient(): Altinn3M2MClient = + Altinn3M2MClient( + baseUrl = Env.altinnTilgangerBaseUrl, serviceCode = Env.serviceCode, - getToken = maskinportenClient::getToken, - altinnApiKey = Env.altinnApiKey, + getToken = oauth2ClientCredentialsTokenGetter(Env.oauth2Environment), cacheConfig = CacheConfig(60.minutes, 100), ) -} - -private fun createMaskinportenClient(): MaskinportenClient = - MaskinportenClient( - MaskinportenClientConfig( - scope = Env.Maskinporten.altinnScope, - endpoint = Env.Maskinporten.endpoint, - clientJwk = Env.Maskinporten.clientJwk, - issuer = Env.Maskinporten.issuer, - clientId = Env.Maskinporten.clientId, - ), - ) - -private fun MaskinportenClient.getToken() = - runBlocking { - fetchNewAccessToken().tokenResponse.accessToken - } diff --git a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/Env.kt b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/Env.kt index a6701978a2..3a04747b6d 100644 --- a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/Env.kt +++ b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/Env.kt @@ -1,17 +1,19 @@ package no.nav.helsearbeidsgiver.inntektsmelding.altinn import no.nav.helsearbeidsgiver.felles.utils.fromEnv +import no.nav.helsearbeidsgiver.tokenprovider.OAuth2Environment object Env { - val url = "ALTINN_URL".fromEnv() val serviceCode = "ALTINN_SERVICE_CODE".fromEnv() - val altinnApiKey = "ALTINN_API_KEY".fromEnv() + val altinnTilgangerBaseUrl = "ALTINN_TILGANGER_BASE_URL".fromEnv() - object Maskinporten { - val endpoint: String = "MASKINPORTEN_TOKEN_ENDPOINT".fromEnv() - val issuer: String = "MASKINPORTEN_ISSUER".fromEnv() - val clientJwk: String = "MASKINPORTEN_CLIENT_JWK".fromEnv() - val clientId: String = "MASKINPORTEN_CLIENT_ID".fromEnv() - val altinnScope: String = "ALTINN_SCOPE".fromEnv() - } + val oauth2Environment = + OAuth2Environment( + scope = "ALTINN_TILGANGER_SCOPE".fromEnv(), + wellKnownUrl = "AZURE_APP_WELL_KNOWN_URL".fromEnv(), + tokenEndpointUrl = "AZURE_OPENID_CONFIG_TOKEN_ENDPOINT".fromEnv(), + clientId = "AZURE_APP_CLIENT_ID".fromEnv(), + clientSecret = "AZURE_APP_CLIENT_SECRET".fromEnv(), + clientJwk = "AZURE_APP_JWK".fromEnv(), + ) } diff --git a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangRiver.kt b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangRiver.kt index d6525c0d06..68f7bd5faa 100644 --- a/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangRiver.kt +++ b/apps/altinn/src/main/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangRiver.kt @@ -1,7 +1,7 @@ package no.nav.helsearbeidsgiver.inntektsmelding.altinn import kotlinx.serialization.json.JsonElement -import no.nav.helsearbeidsgiver.altinn.AltinnClient +import no.nav.helsearbeidsgiver.altinn.Altinn3M2MClient import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key @@ -33,7 +33,7 @@ data class TilgangMelding( ) class TilgangRiver( - private val altinnClient: AltinnClient, + private val altinnClient: Altinn3M2MClient, ) : ObjectRiver() { private val logger = logger() private val sikkerLogger = sikkerLogger() @@ -58,8 +58,8 @@ class TilgangRiver( override fun TilgangMelding.haandter(json: Map): Map { val harTilgang = - Metrics.altinnRequest.recordTime(altinnClient::harRettighetForOrganisasjon) { - altinnClient.harRettighetForOrganisasjon(fnr.verdi, orgnr.verdi) + Metrics.altinnRequest.recordTime(altinnClient::harTilgangTilOrganisasjon) { + altinnClient.harTilgangTilOrganisasjon(fnr = fnr.verdi, orgnr = orgnr.verdi) } val tilgang = if (harTilgang) Tilgang.HAR_TILGANG else Tilgang.IKKE_TILGANG diff --git a/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnAppTest.kt b/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnAppTest.kt index b4995497cf..b821a3c08d 100644 --- a/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnAppTest.kt +++ b/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnAppTest.kt @@ -1,7 +1,6 @@ package no.nav.helsearbeidsgiver.inntektsmelding.altinn import com.github.navikt.tbd_libs.rapids_and_rivers.test_support.TestRapid -import com.nimbusds.jose.jwk.gen.RSAKeyGenerator import io.kotest.core.spec.style.FunSpec import io.kotest.matchers.shouldBe import io.kotest.matchers.string.shouldStartWith @@ -10,14 +9,13 @@ import io.mockk.every import io.mockk.mockkObject import io.mockk.mockkStatic import io.mockk.unmockkStatic +import kotlinx.serialization.builtins.serializer import no.nav.helse.rapids_rivers.RapidApplication -import no.nav.helsearbeidsgiver.altinn.AltinnOrganisasjon import no.nav.helsearbeidsgiver.felles.test.rapidsrivers.sendJson import no.nav.helsearbeidsgiver.felles.utils.fromEnv import no.nav.helsearbeidsgiver.inntektsmelding.altinn.Mock.altinnOrganisasjoner import no.nav.helsearbeidsgiver.inntektsmelding.altinn.Mock.innkommendeMelding import no.nav.helsearbeidsgiver.inntektsmelding.altinn.Mock.toMap -import no.nav.helsearbeidsgiver.maskinporten.TokenResponse import no.nav.helsearbeidsgiver.utils.json.serializer.set import no.nav.helsearbeidsgiver.utils.json.toJson import okhttp3.mockwebserver.MockResponse @@ -44,14 +42,11 @@ class AltinnAppTest : mockkObject(RapidApplication) every { RapidApplication.create(any()) } returns testRapid - val maskinportenToken = TokenResponse("test_token", "Bearer", 3600, "test:test1") - val tokenResponse = maskinportenToken.toJson(TokenResponse.serializer()).toString() server.enqueue( MockResponse() - .setBody(tokenResponse) .addHeader("Content-Type", "application/json"), ) - val altinnResponse = altinnOrganisasjoner.toJson(AltinnOrganisasjon.serializer().set()).toString() + val altinnResponse = altinnOrganisasjoner.toJson(String.serializer().set()).toString() val mockResponse = MockResponse() .setBody(altinnResponse) @@ -79,14 +74,7 @@ class AltinnAppTest : private fun mockEnv(server: MockWebServer) { mockkStatic("no.nav.helsearbeidsgiver.felles.utils.EnvUtilsKt") - every { "ALTINN_URL".fromEnv() } returns server.url("/altinn").toString() + every { "ALTINN_TILGANGER_BASE_URL".fromEnv() } returns server.url("/altinn").toString() every { "ALTINN_SERVICE_CODE".fromEnv() } returns "4936" - every { "MASKINPORTEN_TOKEN_ENDPOINT".fromEnv() } returns server.url("/token").toString() - every { "MASKINPORTEN_ISSUER".fromEnv() } returns "https://test.test.no/" - every { "MASKINPORTEN_CLIENT_JWK".fromEnv() } returns generateJWK() - every { "MASKINPORTEN_CLIENT_ID".fromEnv() } returns "TEST_CLIENT_ID" - every { "ALTINN_SCOPE".fromEnv() } returns "test:test/test" - every { "ALTINN_API_KEY".fromEnv() } returns "mocked_value" + every { "ALTINN_TILGANGER_SCOPE".fromEnv() } returns "test:test/test" } - -private fun generateJWK() = RSAKeyGenerator(2048).keyID("test-key-id").generate().toString() diff --git a/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiverTest.kt b/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiverTest.kt index 44c6655060..c8ca61cd76 100644 --- a/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiverTest.kt +++ b/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/AltinnRiverTest.kt @@ -11,7 +11,7 @@ import io.mockk.coVerify import io.mockk.coVerifySequence import io.mockk.mockk import kotlinx.serialization.builtins.serializer -import no.nav.helsearbeidsgiver.altinn.AltinnClient +import no.nav.helsearbeidsgiver.altinn.Altinn3M2MClient import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.Key import no.nav.helsearbeidsgiver.felles.json.toJson @@ -27,7 +27,7 @@ class AltinnRiverTest : FunSpec({ val testRapid = TestRapid() - val mockAltinnClient = mockk(relaxed = true) + val mockAltinnClient = mockk(relaxed = true) AltinnRiver(mockAltinnClient).connect(testRapid) @@ -39,16 +39,13 @@ class AltinnRiverTest : test("henter organisasjonsrettigheter med id fra behov") { val innkommendeMelding = Mock.innkommendeMelding() - coEvery { mockAltinnClient.hentRettighetOrganisasjoner(any()) } returns Mock.altinnOrganisasjoner + coEvery { mockAltinnClient.hentTilganger(any()) } returns Mock.altinnOrganisasjoner testRapid.sendJson(innkommendeMelding.toMap()) testRapid.inspektør.size shouldBeExactly 1 - val altinnOrgnr = - Mock.altinnOrganisasjoner - .mapNotNull { it.orgnr } - .toSet() + val altinnOrgnr = Mock.altinnOrganisasjoner testRapid.firstMessage().toMap() shouldContainExactly mapOf( @@ -62,7 +59,7 @@ class AltinnRiverTest : ) coVerifySequence { - mockAltinnClient.hentRettighetOrganisasjoner(innkommendeMelding.fnr.verdi) + mockAltinnClient.hentTilganger(innkommendeMelding.fnr.verdi) } } @@ -78,7 +75,7 @@ class AltinnRiverTest : utloesendeMelding = innkommendeJsonMap, ) - coEvery { mockAltinnClient.hentRettighetOrganisasjoner(any()) } throws NullPointerException() + coEvery { mockAltinnClient.hentTilganger(any()) } throws NullPointerException() testRapid.sendJson(innkommendeJsonMap) @@ -87,7 +84,7 @@ class AltinnRiverTest : testRapid.firstMessage().toMap() shouldContainExactly forventetFail.tilMelding() coVerifySequence { - mockAltinnClient.hentRettighetOrganisasjoner(innkommendeMelding.fnr.verdi) + mockAltinnClient.hentTilganger(innkommendeMelding.fnr.verdi) } } @@ -109,7 +106,7 @@ class AltinnRiverTest : testRapid.inspektør.size shouldBeExactly 0 coVerify(exactly = 0) { - mockAltinnClient.hentRettighetOrganisasjoner(any()) + mockAltinnClient.hentTilganger(any()) } } } diff --git a/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/Mock.kt b/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/Mock.kt index 3e65927867..f0d58a0e00 100644 --- a/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/Mock.kt +++ b/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/Mock.kt @@ -1,7 +1,6 @@ package no.nav.helsearbeidsgiver.inntektsmelding.altinn import kotlinx.serialization.json.JsonElement -import no.nav.helsearbeidsgiver.altinn.AltinnOrganisasjon import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key @@ -11,6 +10,7 @@ import no.nav.helsearbeidsgiver.felles.test.mock.mockFail import no.nav.helsearbeidsgiver.utils.json.toJson 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 object Mock { @@ -42,11 +42,5 @@ object Mock { val fail = mockFail("One does not simply walk into Mordor.", EventName.AKTIVE_ORGNR_REQUESTED) - val altinnOrganisasjoner = - setOf( - AltinnOrganisasjon( - navn = "Pippin's Breakfast & Breakfast", - type = "gluttonous", - ), - ) + val altinnOrganisasjoner = setOf(Orgnr.genererGyldig().verdi) } diff --git a/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangRiverTest.kt b/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangRiverTest.kt index dd83de07ab..b5ac5fc8f4 100644 --- a/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangRiverTest.kt +++ b/apps/altinn/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/altinn/TilgangRiverTest.kt @@ -12,7 +12,7 @@ import io.mockk.coVerify import io.mockk.coVerifySequence import io.mockk.mockk import kotlinx.serialization.json.JsonElement -import no.nav.helsearbeidsgiver.altinn.AltinnClient +import no.nav.helsearbeidsgiver.altinn.Altinn3M2MClient import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName import no.nav.helsearbeidsgiver.felles.Key @@ -33,9 +33,9 @@ import java.util.UUID class TilgangRiverTest : FunSpec({ val testRapid = TestRapid() - val mockAltinnClient = mockk() + val mockAltinn3M2MClient = mockk() - TilgangRiver(mockAltinnClient).connect(testRapid) + TilgangRiver(mockAltinn3M2MClient).connect(testRapid) beforeTest { testRapid.reset() @@ -49,7 +49,7 @@ class TilgangRiverTest : "ikke tilgang" to row(false, Tilgang.IKKE_TILGANG), ), ) { (altinnSvar, forventetTilgang) -> - coEvery { mockAltinnClient.harRettighetForOrganisasjon(any(), any()) } returns altinnSvar + coEvery { mockAltinn3M2MClient.harTilgangTilOrganisasjon(any(), any()) } returns altinnSvar val innkommendeMelding = MockTilgang.innkommendeMelding() @@ -68,13 +68,13 @@ class TilgangRiverTest : ) coVerifySequence { - mockAltinnClient.harRettighetForOrganisasjon(innkommendeMelding.fnr.verdi, innkommendeMelding.orgnr.verdi) + mockAltinn3M2MClient.harTilgangTilOrganisasjon(innkommendeMelding.fnr.verdi, innkommendeMelding.orgnr.verdi) } } } test("håndterer feil") { - coEvery { mockAltinnClient.harRettighetForOrganisasjon(any(), any()) } throws NullPointerException() + coEvery { mockAltinn3M2MClient.harTilgangTilOrganisasjon(any(), any()) } throws NullPointerException() val innkommendeMelding = MockTilgang.innkommendeMelding() @@ -92,7 +92,7 @@ class TilgangRiverTest : testRapid.firstMessage().toMap() shouldContainExactly forventetFail.tilMelding() coVerifySequence { - mockAltinnClient.harRettighetForOrganisasjon(innkommendeMelding.fnr.verdi, innkommendeMelding.orgnr.verdi) + mockAltinn3M2MClient.harTilgangTilOrganisasjon(innkommendeMelding.fnr.verdi, innkommendeMelding.orgnr.verdi) } } @@ -114,7 +114,7 @@ class TilgangRiverTest : testRapid.inspektør.size shouldBeExactly 0 coVerify(exactly = 0) { - mockAltinnClient.harRettighetForOrganisasjon(any(), any()) + mockAltinn3M2MClient.harTilgangTilOrganisasjon(any(), any()) } } } diff --git a/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/AktiveOrgnrServiceIT.kt b/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/AktiveOrgnrServiceIT.kt index 924d934ae0..a9821ed945 100644 --- a/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/AktiveOrgnrServiceIT.kt +++ b/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/AktiveOrgnrServiceIT.kt @@ -14,7 +14,6 @@ import no.nav.helsearbeidsgiver.aareg.Ansettelsesperiode import no.nav.helsearbeidsgiver.aareg.Arbeidsgiver import no.nav.helsearbeidsgiver.aareg.Opplysningspliktig import no.nav.helsearbeidsgiver.aareg.Periode -import no.nav.helsearbeidsgiver.altinn.AltinnOrganisasjon import no.nav.helsearbeidsgiver.brreg.Virksomhet import no.nav.helsearbeidsgiver.felles.BehovType import no.nav.helsearbeidsgiver.felles.EventName @@ -60,7 +59,7 @@ class AktiveOrgnrServiceIT : EndToEndTest() { val transaksjonId = UUID.randomUUID() coEvery { aaregClient.hentArbeidsforhold(any(), any()) } returns Mock.arbeidsforholdListe - coEvery { altinnClient.hentRettighetOrganisasjoner(any()) } returns Mock.altinnOrganisasjonSet + coEvery { altinnClient.hentTilganger(any()) } returns Mock.altinnOrganisasjonSet coEvery { brregClient.hentVirksomheter(any()) } returns listOf(Virksomhet(organisasjonsnummer = "810007842", navn = "ANSTENDIG PIGGSVIN BARNEHAGE")) coEvery { pdlKlient.personBolk(any()) } returns Mock.personer @@ -107,7 +106,7 @@ class AktiveOrgnrServiceIT : EndToEndTest() { .firstAsMap() .also { melding -> val data = melding[Key.DATA].shouldNotBeNull().toMap() - Key.ORG_RETTIGHETER.les(String.serializer().set(), data) shouldContainExactly Mock.altinnOrganisasjonSet.mapNotNull { it.orgnr }.toSet() + Key.ORG_RETTIGHETER.les(String.serializer().set(), data) shouldContainExactly Mock.altinnOrganisasjonSet } aktiveOrgnrMeldinger @@ -141,7 +140,7 @@ class AktiveOrgnrServiceIT : EndToEndTest() { val transaksjonId = UUID.randomUUID() coEvery { aaregClient.hentArbeidsforhold(any(), any()) } returns emptyList() - coEvery { altinnClient.hentRettighetOrganisasjoner(any()) } returns Mock.altinnOrganisasjonSet + coEvery { altinnClient.hentTilganger(any()) } returns Mock.altinnOrganisasjonSet coEvery { brregClient.hentVirksomheter(any()) } returns listOf(Virksomhet(organisasjonsnummer = "810007842", navn = "ANSTENDIG PIGGSVIN BARNEHAGE")) coEvery { pdlKlient.personBolk(any()) } returns Mock.personer @@ -188,7 +187,7 @@ class AktiveOrgnrServiceIT : EndToEndTest() { .firstAsMap() .also { melding -> val data = melding[Key.DATA].shouldNotBeNull().toMap() - Key.ORG_RETTIGHETER.les(String.serializer().set(), data) shouldContainExactly Mock.altinnOrganisasjonSet.mapNotNull { it.orgnr }.toSet() + Key.ORG_RETTIGHETER.les(String.serializer().set(), data) shouldContainExactly Mock.altinnOrganisasjonSet } aktiveOrgnrMeldinger @@ -205,7 +204,7 @@ class AktiveOrgnrServiceIT : EndToEndTest() { val transaksjonId = UUID.randomUUID() coEvery { aaregClient.hentArbeidsforhold(any(), any()) } returns Mock.arbeidsforholdListe - coEvery { altinnClient.hentRettighetOrganisasjoner(any()) } returns Mock.altinnOrganisasjonSet + coEvery { altinnClient.hentTilganger(any()) } returns Mock.altinnOrganisasjonSet coEvery { brregClient.hentVirksomheter(any()) } returns listOf(Virksomhet(organisasjonsnummer = "810007842", navn = "ANSTENDIG PIGGSVIN BARNEHAGE")) coEvery { pdlKlient.personBolk(any()) } throws IllegalArgumentException("Ingen folk å finne her!") @@ -312,32 +311,7 @@ class AktiveOrgnrServiceIT : EndToEndTest() { ), ) - val altinnOrganisasjonSet = - setOf( - AltinnOrganisasjon( - navn = "ANSTENDIG PIGGSVIN BYDEL", - type = "organisasjon", - orgnrHovedenhet = "810007702", - ), - AltinnOrganisasjon( - navn = "ANSTENDIG PIGGSVIN BARNEHAGE", - type = "organisasjon", - orgnr = "810007842", - orgnrHovedenhet = "810007702", - ), - AltinnOrganisasjon( - navn = "ANSTENDIG PIGGSVIN BRANNVESEN", - type = "organisasjon", - orgnr = "810008032", - orgnrHovedenhet = "810007702", - ), - AltinnOrganisasjon( - navn = "ANSTENDIG PIGGSVIN SYKEHJEM", - type = "organisasjon", - orgnr = "810007982", - orgnrHovedenhet = "810007702", - ), - ) + val altinnOrganisasjonSet = setOf("810007842", "810008032", "810007982") val underenheter = setOf("810007842") diff --git a/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/TilgangskontrollIT.kt b/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/TilgangskontrollIT.kt index e1327b3109..bbaa0c23d6 100644 --- a/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/TilgangskontrollIT.kt +++ b/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/TilgangskontrollIT.kt @@ -29,11 +29,11 @@ class TilgangskontrollIT : EndToEndTest() { clearAllMocks() coEvery { - altinnClient.harRettighetForOrganisasjon(Mock.innloggetFnr.verdi, Mock.orgnrMedTilgang.verdi) + altinnClient.harTilgangTilOrganisasjon(fnr = Mock.innloggetFnr.verdi, orgnr = Mock.orgnrMedTilgang.verdi) } returns true coEvery { - altinnClient.harRettighetForOrganisasjon(Mock.innloggetFnr.verdi, Mock.orgnrUtenTilgang.verdi) + altinnClient.harTilgangTilOrganisasjon(fnr = Mock.innloggetFnr.verdi, orgnr = Mock.orgnrUtenTilgang.verdi) } returns false } diff --git a/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/EndToEndTest.kt b/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/EndToEndTest.kt index b3ec111b6c..1e3ed1be2f 100644 --- a/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/EndToEndTest.kt +++ b/apps/integrasjonstest/src/test/kotlin/no/nav/helsearbeidsgiver/inntektsmelding/integrasjonstest/utils/EndToEndTest.kt @@ -14,7 +14,7 @@ import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonObject import no.nav.hag.utils.bakgrunnsjobb.PostgresBakgrunnsjobbRepository import no.nav.helsearbeidsgiver.aareg.AaregClient -import no.nav.helsearbeidsgiver.altinn.AltinnClient +import no.nav.helsearbeidsgiver.altinn.Altinn3M2MClient import no.nav.helsearbeidsgiver.arbeidsgivernotifikasjon.ArbeidsgiverNotifikasjonKlient import no.nav.helsearbeidsgiver.brreg.BrregClient import no.nav.helsearbeidsgiver.brreg.Virksomhet @@ -169,7 +169,7 @@ abstract class EndToEndTest : ContainerTest() { val bakgrunnsjobbRepository by lazy { PostgresBakgrunnsjobbRepository(bakgrunnsjobbDatabase.dataSource) } - val altinnClient = mockk() + val altinnClient = mockk() val pdlKlient = mockk() val priProducer = mockk() val spinnKlient = mockk() diff --git a/config/altinn/dev-gcp.yml b/config/altinn/dev-gcp.yml index 10bcb507b5..0819a2f44d 100644 --- a/config/altinn/dev-gcp.yml +++ b/config/altinn/dev-gcp.yml @@ -3,19 +3,13 @@ azure: enabled: true replicasMin: 2 replicasMax: 2 -ingress: https://helsearbeidsgiver-im-altinn.intern.dev.nav.no -envFrom: - - type: secret - name: altinn-api-gw-keys +apps: + - name: arbeidsgiver-altinn-tilganger + namespace: fager env: - - name: ALTINN_URL - value: https://tt02.altinn.no/api/serviceowner - name: ALTINN_SERVICE_CODE value: 4936 - - name: ALTINN_SCOPE - value: altinn:serviceowner/reportees -externalHosts: - - tt02.altinn.no -maskinporten: - consumes: - - "altinn:serviceowner/reportees" \ No newline at end of file + - name: ALTINN_TILGANGER_SCOPE + value: api://dev-gcp.fager.arbeidsgiver-altinn-tilganger/.default + - name: ALTINN_TILGANGER_BASE_URL + value: http://arbeidsgiver-altinn-tilganger.fager diff --git a/config/altinn/prod-gcp.yml b/config/altinn/prod-gcp.yml index 7991d5e490..3697f77f6b 100644 --- a/config/altinn/prod-gcp.yml +++ b/config/altinn/prod-gcp.yml @@ -1,18 +1,13 @@ kafkaPool: nav-prod azure: enabled: true -envFrom: - - type: secret - name: altinn-api-gw-keys-prod +apps: + - name: arbeidsgiver-altinn-tilganger + namespace: fager env: - - name: ALTINN_URL - value: https://altinn.no/api/serviceowner - name: ALTINN_SERVICE_CODE value: 4936 - - name: ALTINN_SCOPE - value: altinn:serviceowner/reportees -externalHosts: - - altinn.no -maskinporten: - consumes: - - "altinn:serviceowner/reportees" + - name: ALTINN_TILGANGER_SCOPE + value: api://prod-gcp.fager.arbeidsgiver-altinn-tilganger/.default + - name: ALTINN_TILGANGER_BASE_URL + value: http://arbeidsgiver-altinn-tilganger.fager