Skip to content

Commit

Permalink
Merge branch 'main' into dev/fjern-gammel-kvittering
Browse files Browse the repository at this point in the history
  • Loading branch information
bjerga committed Jan 23, 2025
2 parents 6df5c9e + b35f7ef commit 5346032
Show file tree
Hide file tree
Showing 86 changed files with 503 additions and 609 deletions.
29 changes: 2 additions & 27 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/gradle-dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}
22 changes: 2 additions & 20 deletions .github/workflows/integrasjonstest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -75,15 +58,14 @@ jobs:
with:
java-version: 21
distribution: temurin
cache: gradle

- name: Download build artifacts
uses: actions/download-artifact@v4
with:
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 }}
Expand Down
29 changes: 2 additions & 27 deletions .github/workflows/prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
19 changes: 1 addition & 18 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -28,7 +27,7 @@ data class HentArbeidsforholdMelding(
val behovType: BehovType,
val transaksjonId: UUID,
val data: Map<Key, JsonElement>,
val svarKafkaKey: KafkaKey?,
val svarKafkaKey: KafkaKey,
val fnr: Fnr,
)

Expand All @@ -49,11 +48,13 @@ 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.haandter(json: Map<Key, JsonElement>): Map<Key, JsonElement> {
val arbeidsforhold =
Metrics.aaregRequest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -122,16 +123,18 @@ class HentArbeidsforholdRiverTest :
private object Mock {
fun innkommendeMelding(): HentArbeidsforholdMelding {
val fnr = Fnr.genererGyldig()
val svarKafkaKey = KafkaKey(fnr)

return HentArbeidsforholdMelding(
eventName = EventName.AKTIVE_ORGNR_REQUESTED,
behovType = BehovType.HENT_ARBEIDSFORHOLD,
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,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
)
Expand Down
4 changes: 0 additions & 4 deletions apps/altinn/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -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")
}
4 changes: 1 addition & 3 deletions apps/altinn/gradle.properties
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@ 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
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
Expand All @@ -29,12 +28,12 @@ data class Melding(
val behovType: BehovType,
val transaksjonId: UUID,
val data: Map<Key, JsonElement>,
val svarKafkaKey: KafkaKey?,
val svarKafkaKey: KafkaKey,
val fnr: Fnr,
)

class AltinnRiver(
private val altinnClient: AltinnClient,
private val altinnClient: Altinn3M2MClient,
) : ObjectRiver<Melding>() {
private val logger = logger()
private val sikkerLogger = sikkerLogger()
Expand All @@ -50,18 +49,17 @@ 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.haandter(json: Map<Key, JsonElement>): Map<Key, JsonElement> {
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(
Expand Down
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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)
Expand All @@ -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
}
Original file line number Diff line number Diff line change
@@ -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(),
)
}
Loading

0 comments on commit 5346032

Please sign in to comment.