diff --git a/deploy/preprod.yaml b/deploy/preprod.yaml index 7c9f0dbee..1dd33de83 100644 --- a/deploy/preprod.yaml +++ b/deploy/preprod.yaml @@ -74,29 +74,34 @@ spec: - host: udi-proxy.dev-fss-pub.nais.io - host: aareg-services-q1.dev-fss-pub.nais.io - host: ereg-services.dev.intern.nav.no - - host: medlemskap-medl-proxy.dev-fss-pub.nais.io + - host: medlemskap-medl-api.dev-fss-pub.nais.io + - host: oppgave.dev-fss-pub.nais.io env: - name: SECURITY_TOKEN_SERVICE_URL value: https://api-gw-q1.oera.no/sts/SecurityTokenServiceProvider/ - name: SECURITY_TOKEN_SERVICE_REST_URL value: https://api-gw-q1.oera.no/security-token-service - name: MEDL2_BASE_URL - value: https://medlemskap-medl-proxy.dev-fss-pub.nais.io + value: https://medlemskap-medl-api.dev-fss-pub.nais.io - name: AAREG_BASE_URL value: https://aareg-services-q1.dev-fss-pub.nais.io/api - name: SAF_BASE_URL value: https://saf.dev-fss-pub.nais.io/graphql - name: OPPGAVE_BASE_URL - value: https://api-gw-q1.oera.no/oppgave + value: https://oppgave.dev-fss-pub.nais.io - name: PDL_BASE_URL value: https://pdl-api.dev-fss-pub.nais.io/graphql - name: EREG_BASE_URL value: https://api-gw-q1.oera.no/ereg-services/api - name: UDI_BASE_URL value: https://udi-proxy.dev-fss-pub.nais.io + - name: AZURE_SCOPE_OPPGAVE + value: api://dev-fss.oppgavehandtering.oppgave/.default - name: AZURE_SCOPE_UDI value: api://dev-fss.medlemskap.udi-proxy/.default - name: AZURE_SCOPE_MEDL value: api://dev-fss.team-rocket.medlemskap-medl-api/.default - name: AZURE_SCOPE_PDL - value: api://dev-fss.pdl.pdl-api/.default \ No newline at end of file + value: api://dev-fss.pdl.pdl-api/.default + - name: AZURE_SCOPE_AAREG + value: api://dev-fss.arbeidsforhold.aareg-services-nais/.default \ No newline at end of file diff --git a/deploy/prod.yaml b/deploy/prod.yaml index 50e0d96cb..bff96b28c 100644 --- a/deploy/prod.yaml +++ b/deploy/prod.yaml @@ -65,7 +65,8 @@ spec: - host: udi-proxy.prod-fss-pub.nais.io - host: aareg-services.prod-fss-pub.nais.io - host: ereg-services.dev.intern.nav.no - - host: medlemskap-medl-proxy.prod-fss-pub.nais.io + - host: medlemskap-medl-api.prod-fss-pub.nais.io + - host: oppgave.prod-fss-pub.nais.io kafka: pool: nav-prod @@ -75,22 +76,26 @@ spec: - name: SECURITY_TOKEN_SERVICE_REST_URL value: https://api-gw.oera.no/security-token-service - name: MEDL2_BASE_URL - value: https://medlemskap-medl-proxy.prod-fss-pub.nais.io + value: https://medlemskap-medl-api.prod-fss-pub.nais.io - name: AAREG_BASE_URL value: https://aareg-services.prod-fss-pub.nais.io/api - name: SAF_BASE_URL value: https://saf.prod-fss-pub.nais.io/graphql - name: OPPGAVE_BASE_URL - value: https://api-gw.oera.no/oppgave + value: https://oppgave.prod-fss-pub.nais.io - name: PDL_BASE_URL value: https://pdl-api.prod-fss-pub.nais.io/graphql - name: EREG_BASE_URL value: https://api-gw.oera.no/ereg-services/api - name: UDI_BASE_URL value: https://udi-proxy.prod-fss-pub.nais.io + - name: AZURE_SCOPE_OPPGAVE + value: api://prod-fss.oppgavehandtering.oppgave/.default - name: AZURE_SCOPE_UDI value: api://prod-fss.medlemskap.udi-proxy/.default - name: AZURE_SCOPE_MEDL value: api://prod-fss.team-rocket.medlemskap-medl-api/.default - name: AZURE_SCOPE_PDL - value: api://prod-fss.pdl.pdl-api/.default \ No newline at end of file + value: api://prod-fss.pdl.pdl-api/.default + - name: AZURE_SCOPE_AAREG + value: api://prod-fss.arbeidsforhold.aareg-services-nais/.default \ No newline at end of file diff --git a/pdl-client/src/main/resources/pdl/hentPerson.graphql b/pdl-client/src/main/resources/pdl/hentPerson.graphql index 7ff7a845f..f70de01ef 100644 --- a/pdl-client/src/main/resources/pdl/hentPerson.graphql +++ b/pdl-client/src/main/resources/pdl/hentPerson.graphql @@ -38,6 +38,29 @@ query($ident: ID!, $bostedHistorikk: Boolean!, $statsborgerskapHistorikk: Boolea historisk } }, + opphold(historikk: true){ + type + oppholdFra + oppholdTil + metadata{ + historisk + master + endringer{ + type, + kilde, + registrert, + registrertAv, + systemkilde + } + } + folkeregistermetadata { + aarsak, + ajourholdstidspunkt, + gyldighetstidspunkt, + opphoerstidspunkt, + kilde + } + }, doedsfall{ doedsdato }, @@ -71,9 +94,11 @@ query($ident: ID!, $bostedHistorikk: Boolean!, $statsborgerskapHistorikk: Boolea historisk }, folkeregistermetadata { + aarsak ajourholdstidspunkt, gyldighetstidspunkt, - opphoerstidspunkt + opphoerstidspunkt, + kilde } }, utflyttingFraNorge{ diff --git a/src/main/kotlin/no/nav/medlemskap/HttpServer.kt b/src/main/kotlin/no/nav/medlemskap/HttpServer.kt index 086063262..8b4f70945 100644 --- a/src/main/kotlin/no/nav/medlemskap/HttpServer.kt +++ b/src/main/kotlin/no/nav/medlemskap/HttpServer.kt @@ -12,8 +12,6 @@ import io.ktor.server.plugins.callid.* import io.ktor.server.plugins.callloging.* import io.ktor.server.plugins.contentnegotiation.* import io.ktor.server.plugins.statuspages.* -import io.ktor.server.request.* -import io.ktor.server.response.* import io.ktor.server.routing.* import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics @@ -35,7 +33,6 @@ import no.nav.medlemskap.config.getAadConfig import no.nav.medlemskap.domene.Datagrunnlag import no.nav.medlemskap.domene.Request import no.nav.medlemskap.routes.* -import org.slf4j.event.* import org.slf4j.event.Level import java.util.* @@ -102,7 +99,9 @@ createHttpServer( val requestContextService = RequestContextService() if (useAuthentication) { routing { - naisRoutes(readinessCheck = { applicationState.initialized }, livenessCheck = { applicationState.running }, collectorRegistry = CollectorRegistry.defaultRegistry) + naisRoutes( + readinessCheck = { applicationState.initialized }, livenessCheck = { applicationState.running }, collectorRegistry = CollectorRegistry.defaultRegistry + ) if (services.configuration.cluster == "dev-gcp") setupSwaggerDocApi() evalueringRoute(services, configuration, requestContextService, createDatagrunnlag) reglerRoute() diff --git a/src/main/kotlin/no/nav/medlemskap/clients/RestClients.kt b/src/main/kotlin/no/nav/medlemskap/clients/RestClients.kt index 89af36994..f58d1b864 100644 --- a/src/main/kotlin/no/nav/medlemskap/clients/RestClients.kt +++ b/src/main/kotlin/no/nav/medlemskap/clients/RestClients.kt @@ -29,10 +29,10 @@ class RestClients( private val httpClient = cioHttpClient - fun aaReg(endpointUrl: String) = AaRegClient(endpointUrl, configuration.sts.username, stsClientRest, httpClient, configuration.register.aaRegApiKey, aaRegRetry) + fun aaReg(endpointUrl: String) = AaRegClient(endpointUrl, azureAdClient, httpClient, configuration, configuration.register.aaRegApiKey, aaRegRetry) fun medl2(endpointBaseUrl: String) = MedlClient(endpointBaseUrl, azureAdClient, configuration, httpClient, medlRetry) fun saf(endpointBaseUrl: String) = SafClient(endpointBaseUrl, stsClientRest, configuration.sts.username, httpClient, configuration.register.safApiKey, safRetry) - fun oppgaver(endpointBaseUrl: String) = OppgaveClient(endpointBaseUrl, stsClientRest, httpClient, configuration.register.oppgaveApiKey, oppgaveRetry) + fun oppgaver(endpointBaseUrl: String) = OppgaveClient(endpointBaseUrl, azureAdClient, configuration, httpClient, oppgaveRetry) fun pdl(endpointBaseURl: String) = PdlClient(endpointBaseURl, azureAdClient, configuration, configuration.sts.username, httpClient, pdlRetry, configuration.register.pdlApiKey) fun ereg(endpointBaseUrl: String) = EregClient(endpointBaseUrl, httpClient, configuration, configuration.register.eregApiKey, eregRetry) fun udi(endpointBaseUrl: String) = UdiClient(endpointBaseUrl, azureAdClient, httpClient, udiRetry) diff --git a/src/main/kotlin/no/nav/medlemskap/clients/aareg/AaRegClient.kt b/src/main/kotlin/no/nav/medlemskap/clients/aareg/AaRegClient.kt index 254308244..893c382cf 100644 --- a/src/main/kotlin/no/nav/medlemskap/clients/aareg/AaRegClient.kt +++ b/src/main/kotlin/no/nav/medlemskap/clients/aareg/AaRegClient.kt @@ -7,16 +7,17 @@ import io.ktor.client.plugins.* import io.ktor.client.request.* import io.ktor.http.* import mu.KotlinLogging +import no.nav.medlemskap.clients.azuread.AzureAdClient import no.nav.medlemskap.clients.runWithRetryAndMetrics -import no.nav.medlemskap.clients.sts.StsRestClient +import no.nav.medlemskap.config.Configuration import java.time.LocalDate import java.time.format.DateTimeFormatter class AaRegClient( private val baseUrl: String, - private val username: String, - private val stsClient: StsRestClient, + private val azureAdClient: AzureAdClient, private val httpClient: HttpClient, + private val configuration: Configuration, private val aaRegApiKey: String, private val retry: Retry? = null ) { @@ -27,16 +28,15 @@ class AaRegClient( } suspend fun hentArbeidsforhold(fnr: String, callId: String, fraOgMed: LocalDate? = null, tilOgMed: LocalDate? = null): List { - val oidcToken = stsClient.oidcToken() + val token = azureAdClient.hentToken(configuration.register.aaregScope) return runCatching { runWithRetryAndMetrics("AaReg", "ArbeidsforholdV1", retry) { httpClient.get() { url("$baseUrl/v1/arbeidstaker/arbeidsforhold") - header(HttpHeaders.Authorization, "Bearer $oidcToken") + header(HttpHeaders.Authorization, "Bearer ${token.token}") header(HttpHeaders.Accept, ContentType.Application.Json) header("Nav-Call-Id", callId) header("Nav-Personident", fnr) - header("Nav-Consumer-Token", "Bearer $oidcToken") header("x-nav-apiKey", aaRegApiKey) fraOgMed?.let { parameter("ansettelsesperiodeFom", fraOgMed.tilIsoFormat()) } tilOgMed?.let { parameter("ansettelsesperiodeTom", tilOgMed.tilIsoFormat()) } @@ -63,16 +63,15 @@ class AaRegClient( } suspend fun hentArbeidsforholdV2(fnr: String, callId: String, fraOgMed: LocalDate? = null, tilOgMed: LocalDate? = null): List { - val oidcToken = stsClient.oidcToken() + val token = azureAdClient.hentToken(configuration.register.aaregScope) return runCatching { runWithRetryAndMetrics("AaReg", "ArbeidsforholdV2", retry) { httpClient.get() { url("$baseUrl/v2/arbeidstaker/arbeidsforhold") - header(HttpHeaders.Authorization, "Bearer $oidcToken") + header(HttpHeaders.Authorization, "Bearer ${token.token}") header(HttpHeaders.Accept, ContentType.Application.Json) header("Nav-Call-Id", callId) header("Nav-Personident", fnr) - header("Nav-Consumer-Token", "Bearer $oidcToken") header("x-nav-apiKey", aaRegApiKey) parameter("historikk", "true") parameter("arbeidsforholdstatus", "AKTIV,AVSLUTTET,FREMTIDIG") diff --git a/src/main/kotlin/no/nav/medlemskap/clients/inntekt/InntektClient.kt b/src/main/kotlin/no/nav/medlemskap/clients/inntekt/InntektClient.kt deleted file mode 100644 index 754e573d7..000000000 --- a/src/main/kotlin/no/nav/medlemskap/clients/inntekt/InntektClient.kt +++ /dev/null @@ -1,82 +0,0 @@ -package no.nav.medlemskap.clients.inntekt - -import io.github.resilience4j.retry.Retry -import io.ktor.client.HttpClient -import io.ktor.client.call.* -import io.ktor.client.plugins.* -import io.ktor.client.request.* -import io.ktor.client.statement.HttpResponse -import io.ktor.http.ContentType -import io.ktor.http.HttpHeaders -import mu.KotlinLogging -import no.nav.medlemskap.clients.runWithRetryAndMetrics -import no.nav.medlemskap.clients.sts.StsRestClient -import no.nav.medlemskap.config.Configuration -import java.time.LocalDate -import java.time.format.DateTimeFormatter - -class InntektClient( - private val baseUrl: String, - private val stsClient: StsRestClient, - private val configuration: Configuration, - private val httpClient: HttpClient, - private val retry: Retry? = null -) { - - private val logger = KotlinLogging.logger { } - - suspend fun hentInntektListe(ident: String, callId: String, fraOgMed: LocalDate? = null, tilOgMed: LocalDate? = null): InntektskomponentResponse { - val token = stsClient.oidcToken() - return runCatching { - runWithRetryAndMetrics("Inntekt", "HentinntektlisteV1", retry) { - httpClient.post() { - url("$baseUrl/rs/api/v1/hentinntektliste") - header(HttpHeaders.Authorization, "Bearer $token") - header(HttpHeaders.ContentType, ContentType.Application.Json) - header("Nav-Consumer-Id", configuration.sts.username) - header("Nav-Call-Id", callId) - setBody( - HentInntektListeRequest( - ident = Ident(ident, "NATURLIG_IDENT"), - ainntektsfilter = "MedlemskapA-inntekt", - maanedFom = fraOgMed?.tilAarOgMnd(), - maanedTom = tilOgMed?.tilAarOgMnd(), - formaal = "Medlemskap" - ) - ) // Må diskutere med Helle om vi skal bruke Medlemskap eller sykepenger som formål - }.body() - } - }.fold( - onSuccess = { it }, - onFailure = { error -> - when (error) { - is ClientRequestException -> { - if (error.response.status.value == 400) { - InntektskomponentResponse(listOf(), Ident(ident, "")) - } else { - throw error - } - } - is ServerResponseException -> { - if (error.response.status.value == 500) { - InntektskomponentResponse(listOf(), Ident(ident, "")) - } else { - throw error - } - } - else -> throw error - } - } - ) - } - - private fun LocalDate.tilAarOgMnd() = this.format(DateTimeFormatter.ofPattern("yyyy-MM")) - - suspend fun healthCheck(): HttpResponse { - return httpClient.options { - url("$baseUrl") - header(HttpHeaders.ContentType, ContentType.Application.Json) - header("Nav-Consumer-Id", configuration.sts.username) - } - } -} diff --git a/src/main/kotlin/no/nav/medlemskap/clients/inntekt/InntektDomene.kt b/src/main/kotlin/no/nav/medlemskap/clients/inntekt/InntektDomene.kt deleted file mode 100644 index 40c1a99b3..000000000 --- a/src/main/kotlin/no/nav/medlemskap/clients/inntekt/InntektDomene.kt +++ /dev/null @@ -1,155 +0,0 @@ -package no.nav.medlemskap.clients.inntekt - -import java.math.BigDecimal -import java.time.LocalDate -import java.time.LocalDateTime -import java.time.YearMonth - -data class HentInntektListeRequest( - val ident: Ident, - val ainntektsfilter: String, - val maanedFom: String?, - val maanedTom: String?, - val formaal: String -) - -data class InntektskomponentResponse( - val arbeidsInntektMaaned: List?, - - val ident: Ident? -) - -data class ArbeidsinntektMaaned( - val aarMaaned: YearMonth?, - val avvikListe: List?, - val arbeidsInntektInformasjon: ArbeidsInntektInformasjon? -) - -data class Avvik( - val ident: Ident?, - val opplysningspliktig: Ident?, - val virksomhet: Ident?, - val avvikPeriode: YearMonth?, - val tekst: String? - -) - -data class Ident( - val identifikator: String?, - val aktoerType: String? -) - -data class ArbeidsInntektInformasjon( - val arbeidsforholdListe: List?, - val inntektListe: List?, - val forskuddstrekkListe: List?, - val fradragListe: List? - -) - -data class ArbeidsforholdFrilanser( - val antallTimerPerUkeSomEnFullStillingTilsvarer: Double?, - val arbeidstidsordning: String?, - val avloenningstype: String?, - val sisteDatoForStillingsprosentendring: LocalDate?, - val sisteLoennsendring: LocalDate?, - val frilansPeriodeFom: LocalDate?, - val frilansPeriodeTom: LocalDate?, - val stillingsprosent: Double?, - val yrke: String?, - val arbeidsforholdID: String?, - val arbeidsforholdIDnav: String?, - val arbeidsforholdstype: String?, - val arbeidsgiver: Ident?, - val arbeidstaker: Ident? -) - -data class Arbeidsforhold( - val antallTimerPerUkeSomEnFullStillingTilsvarer: Double?, - val arbeidstidsordning: String?, - val avloenningstype: String?, - val sisteDatoForStillingsprosentendring: YearMonth?, - val sisteLoennsendring: YearMonth?, - val frilansperiodeFom: LocalDate?, - val frilansperiodeTom: LocalDate?, - val stillingsprosent: Double?, - val yrke: String?, - val arbeidsforholdID: String?, - val arbeidsforholdIDnav: String?, - val arbeidsforholdType: String?, - val arbeidsgiver: Ident?, - val arbeidstaker: Ident? -) - -data class Inntekt( - val inntektType: String?, - val beloep: Double?, - val fordel: String?, - val inntektskilde: String?, - val inntektsperiodetype: String?, - val inntektsstatus: String?, - val leveringstidspunkt: YearMonth?, - val utbetaltIMaaned: YearMonth?, - val arbeidsforholdREF: String?, - val opplysningspliktig: Ident?, - val virksomhet: Ident?, - val inntektsmottaker: Ident?, - val inngaarIGrunnlagForTrekk: Boolean?, - val utloeserArbeidsgiveravgift: Boolean?, - val informasjonsstatus: String?, - val beskrivelse: String?, - val skatteOgAvgiftsregel: String?, - val opptjeningsland: String?, - val opptjeningsperiodeFom: LocalDate?, - val opptjeningsperiodeTom: LocalDate?, - val skattemessigBosattLand: String?, - val tilleggsinformasjon: Tilleggsinformasjon? - -) - -enum class InntektType { - LOENNSINNTEKT, - NAERINGSINNTEKT, - PENSJON_ELLER_TRYGD, - YTELSE_FRA_OFFENTLIGE -} - -enum class TilleggsinformasjonDetaljerType { - ALDERSUFOEREETTERLATTEAVTALEFESTETOGKRIGSPENSJON, - BARNEPENSJONOGUNDERHOLDSBIDRAG, - BONUSFRAFORSVARET, - ETTERBETALINGSPERIODE, - INNTJENINGSFORHOLD, - REISEKOSTOGLOSJI, - SVALBARDINNTEKT -} - -data class Forskuddstrekk( - val beloep: Int?, - val beskrivelse: String?, - val leveringstidspunkt: LocalDateTime?, - val opplysningspliktig: Ident?, - val utbetaler: Ident?, - val forskuddstrekkGjelder: Ident? -) - -data class Fradrag( - val beloep: BigDecimal?, - val beskrivelse: String?, - val fradragsperiode: String?, - val leveringstidspunkt: LocalDateTime?, - val inntektspliktig: Ident?, - val utbetaler: Ident?, - val fradragGjelder: Ident? -) - -data class Tilleggsinformasjon( - val kategori: String?, - val tilleggsinformasjonDetaljer: TilleggsinformasjonDetaljer? -) - -data class TilleggsinformasjonDetaljer( - val detaljerType: TilleggsinformasjonDetaljerType? -) - -// val versjon: String diff --git a/src/main/kotlin/no/nav/medlemskap/clients/oppgave/OppgaveClient.kt b/src/main/kotlin/no/nav/medlemskap/clients/oppgave/OppgaveClient.kt index 898dca256..2e9a18651 100644 --- a/src/main/kotlin/no/nav/medlemskap/clients/oppgave/OppgaveClient.kt +++ b/src/main/kotlin/no/nav/medlemskap/clients/oppgave/OppgaveClient.kt @@ -6,8 +6,9 @@ import io.ktor.client.call.* import io.ktor.client.request.* import io.ktor.http.* import mu.KotlinLogging +import no.nav.medlemskap.clients.azuread.AzureAdClient import no.nav.medlemskap.clients.runWithRetryAndMetrics -import no.nav.medlemskap.clients.sts.StsRestClient +import no.nav.medlemskap.config.Configuration private const val TEMA_MEDLEMSKAP = "MED" private const val TEMA_UNNTAK_FRA_MEDLEMSKAP = "UFM" @@ -15,9 +16,9 @@ private const val TEMA_TRYGDEAVGIFT = "TRY" class OppgaveClient( private val baseUrl: String, - private val stsClient: StsRestClient, + private val azureAdClient: AzureAdClient, + private val configuration: Configuration, private val httpClient: HttpClient, - private val oppgaveApiKey: String, private val retry: Retry? = null ) { @@ -26,13 +27,12 @@ class OppgaveClient( } suspend fun hentOppgaver(aktorIder: List, callId: String): FinnOppgaverResponse { - val token = stsClient.oidcToken() + val token = azureAdClient.hentToken(configuration.register.oppgaveScope) return runWithRetryAndMetrics("Oppgave", "OppgaverV1", retry) { httpClient.get() { url("$baseUrl/api/v1/oppgaver") - header(HttpHeaders.Authorization, "Bearer $token") + header(HttpHeaders.Authorization, "Bearer ${token.token}") header("X-Correlation-Id", callId) - header("x-nav-apiKey", oppgaveApiKey) aktorIder.forEach { parameter("aktoerId", it) } parameter("tema", TEMA_MEDLEMSKAP) parameter("tema", TEMA_UNNTAK_FRA_MEDLEMSKAP) diff --git a/src/main/kotlin/no/nav/medlemskap/config/Configuration.kt b/src/main/kotlin/no/nav/medlemskap/config/Configuration.kt index 10ae6fd6d..717ff392f 100644 --- a/src/main/kotlin/no/nav/medlemskap/config/Configuration.kt +++ b/src/main/kotlin/no/nav/medlemskap/config/Configuration.kt @@ -42,9 +42,11 @@ private val defaultProperties = ConfigurationMap( "UDI_BASE_URL" to "", "UDI_PROXY_API_KEY" to "", "UDI_PROXY_CLIENT_ID" to "", + "AZURE_SCOPE_OPPGAVE" to "", "AZURE_SCOPE_UDI" to "", "AZURE_SCOPE_MEDL" to "", - "AZURE_SCOPE_PDL" to "" + "AZURE_SCOPE_PDL" to "", + "AZURE_SCOPE_AAREG" to "" ) ) @@ -91,6 +93,8 @@ data class Configuration( val eregApiKey: String = "EREG_API_KEY".configProperty(), val udiProxyApiKey: String = "UDI_PROXY_API_KEY".configProperty(), // Venter på bestilling - legges inn i secrets val udiBaseUrl: String = "UDI_BASE_URL".configProperty(), + val oppgaveScope: String = "AZURE_SCOPE_OPPGAVE".configProperty(), + val aaregScope: String = "AZURE_SCOPE_AAREG".configProperty(), val udiScope: String = "AZURE_SCOPE_UDI".configProperty(), val medlScope: String = "AZURE_SCOPE_MEDL".configProperty(), val pdlScope: String = "AZURE_SCOPE_PDL".configProperty() diff --git a/src/main/kotlin/no/nav/medlemskap/domene/personhistorikk/Folkeregistermetadata.kt b/src/main/kotlin/no/nav/medlemskap/domene/personhistorikk/Folkeregistermetadata.kt index d930d9531..eea663cc6 100644 --- a/src/main/kotlin/no/nav/medlemskap/domene/personhistorikk/Folkeregistermetadata.kt +++ b/src/main/kotlin/no/nav/medlemskap/domene/personhistorikk/Folkeregistermetadata.kt @@ -5,5 +5,6 @@ import java.time.LocalDateTime data class Folkeregistermetadata( val ajourholdstidspunkt: LocalDateTime?, val gyldighetstidspunkt: LocalDateTime?, - val opphoerstidspunkt: LocalDateTime? + val opphoerstidspunkt: LocalDateTime?, + val aarsak: String? ) diff --git a/src/main/kotlin/no/nav/medlemskap/domene/personhistorikk/Opphold.kt b/src/main/kotlin/no/nav/medlemskap/domene/personhistorikk/Opphold.kt new file mode 100644 index 000000000..1d3478722 --- /dev/null +++ b/src/main/kotlin/no/nav/medlemskap/domene/personhistorikk/Opphold.kt @@ -0,0 +1,43 @@ +package no.nav.medlemskap.domene.personhistorikk + +import java.time.LocalDate +import java.time.LocalDateTime + +data class Opphold( + val type: OppholdstillatelseType, + val oppholdFra: LocalDate?, + val oppholdTil: LocalDate?, + val medtadata: OppholdMetadata, + val folkeregistermetadata: Folkeregistermetadata +) + +enum class OppholdstillatelseType { + MIDLERTIDIG, + PERMANENT, + OPPLYSNING_MANGLER, + __UNKNOWN_VALUE +} + +data class OppholdMetadata( + val historisk: Boolean, + val master: String, + val endringer: List +) + +data class Endring( + val type: Endringstype, + val kilde: String, + val registrert: LocalDateTime, + val registrertAv: String, + val systemkilde: String + +) +enum class Endringstype { + OPPRETT, + KORRIGER, + OPPHOER, + /** + * This is a default enum value that will be used when attempting to deserialize unknown value. + */ + __UNKNOWN_VALUE, +} diff --git a/src/main/kotlin/no/nav/medlemskap/domene/personhistorikk/Personhistorikk.kt b/src/main/kotlin/no/nav/medlemskap/domene/personhistorikk/Personhistorikk.kt index 1c85caa96..6edbd2425 100644 --- a/src/main/kotlin/no/nav/medlemskap/domene/personhistorikk/Personhistorikk.kt +++ b/src/main/kotlin/no/nav/medlemskap/domene/personhistorikk/Personhistorikk.kt @@ -14,7 +14,8 @@ data class Personhistorikk( val doedsfall: List, val innflyttingTilNorge: List, val utflyttingFraNorge: List, - val navn: List + val navn: List, + val oppholdstilatelser: List = emptyList() ) { fun erBrukerDoed(): Boolean { diff --git a/src/main/kotlin/no/nav/medlemskap/services/inntekt/Inntekt.kt b/src/main/kotlin/no/nav/medlemskap/services/inntekt/Inntekt.kt deleted file mode 100644 index 9b743ce30..000000000 --- a/src/main/kotlin/no/nav/medlemskap/services/inntekt/Inntekt.kt +++ /dev/null @@ -1,9 +0,0 @@ -package no.nav.medlemskap.domene - -data class Inntekt( - val arbeidsforhold: List -) - -data class InntektArbeidsforhold( - val yrke: String? -) diff --git a/src/main/kotlin/no/nav/medlemskap/services/inntekt/InntektMapper.kt b/src/main/kotlin/no/nav/medlemskap/services/inntekt/InntektMapper.kt deleted file mode 100644 index 254613c38..000000000 --- a/src/main/kotlin/no/nav/medlemskap/services/inntekt/InntektMapper.kt +++ /dev/null @@ -1,10 +0,0 @@ -package no.nav.medlemskap.services.inntekt - -import no.nav.medlemskap.clients.inntekt.InntektskomponentResponse -import no.nav.medlemskap.domene.Inntekt -import no.nav.medlemskap.domene.InntektArbeidsforhold - -// Todo Bruker foreløpig ingen data fra inntekstkomponenten -fun mapInntektResultat(@Suppress("UNUSED_PARAMETER") inntekt: InntektskomponentResponse): List { - return listOf(Inntekt(arbeidsforhold = listOf(InntektArbeidsforhold("yrke")))) -} diff --git a/src/main/kotlin/no/nav/medlemskap/services/inntekt/InntektService.kt b/src/main/kotlin/no/nav/medlemskap/services/inntekt/InntektService.kt deleted file mode 100644 index 1391ed8fb..000000000 --- a/src/main/kotlin/no/nav/medlemskap/services/inntekt/InntektService.kt +++ /dev/null @@ -1,10 +0,0 @@ -package no.nav.medlemskap.services.inntekt - -import no.nav.medlemskap.clients.inntekt.InntektClient -import java.time.LocalDate - -class InntektService(private val inntektClient: InntektClient) { - - suspend fun hentInntektListe(ident: String, callId: String, fraOgMed: LocalDate?, tilOgMed: LocalDate?) = - mapInntektResultat(inntektClient.hentInntektListe(ident, callId, fraOgMed, tilOgMed)) -} diff --git a/src/main/kotlin/no/nav/medlemskap/services/pdl/mapper/PdlMapper.kt b/src/main/kotlin/no/nav/medlemskap/services/pdl/mapper/PdlMapper.kt index e82ffbce8..fd69a45a7 100644 --- a/src/main/kotlin/no/nav/medlemskap/services/pdl/mapper/PdlMapper.kt +++ b/src/main/kotlin/no/nav/medlemskap/services/pdl/mapper/PdlMapper.kt @@ -6,11 +6,13 @@ import no.nav.medlemskap.clients.pdl.generated.DateTime import no.nav.medlemskap.clients.pdl.generated.hentperson.* import no.nav.medlemskap.common.exceptions.DetteSkalAldriSkje import no.nav.medlemskap.domene.personhistorikk.* +import no.nav.medlemskap.domene.personhistorikk.Endring import no.nav.medlemskap.domene.personhistorikk.Folkeregistermetadata import no.nav.medlemskap.domene.personhistorikk.ForelderBarnRelasjon import no.nav.medlemskap.domene.personhistorikk.InnflyttingTilNorge import no.nav.medlemskap.domene.personhistorikk.Metadata import no.nav.medlemskap.domene.personhistorikk.Navn +import no.nav.medlemskap.domene.personhistorikk.Opphold import no.nav.medlemskap.domene.personhistorikk.Sivilstand import no.nav.medlemskap.domene.personhistorikk.Statsborgerskap import no.nav.medlemskap.domene.personhistorikk.UtflyttingFraNorge @@ -35,6 +37,7 @@ object PdlMapper { val innflyttingTilNorge: List = mapInnflyttingTilNorge(person.innflyttingTilNorge) val utflyttingFraNorge: List = mapUtflyttingFraNorge(person.utflyttingFraNorge) val navn: List = mapNavn(person.navn) + val opphold: List = mapOppholdsTilatelser(person.opphold) return Personhistorikk( statsborgerskap = statsborgerskap, @@ -46,10 +49,48 @@ object PdlMapper { doedsfall = doedsfall, innflyttingTilNorge = innflyttingTilNorge, utflyttingFraNorge = utflyttingFraNorge, - navn = navn + navn = navn, + oppholdstilatelser = opphold + ) } + private fun mapOppholdsTilatelser(opphold: List): List { + + return opphold.map { + Opphold( + type = OppholdstillatelseType.valueOf(it.type.name), + oppholdFra = mapDate(it.oppholdFra), + oppholdTil = mapDate(it.oppholdTil), + medtadata = OppholdMetadata(it.metadata.historisk, it.metadata.master, mapEnringer(it.metadata.endringer)), + folkeregistermetadata = mapFolkeregistermetadata(it.folkeregistermetadata) + ) + } + } + + private fun mapDateTime(registrert: String): LocalDateTime { + return LocalDateTime.parse(registrert) + } + + private fun mapEnringer(endringer: List): List { + return endringer.map { + Endring( + type = Endringstype.valueOf(it.type.name), + kilde = it.kilde, + registrert = mapDateTime(it.registrert), + registrertAv = it.registrertAv, + systemkilde = it.systemkilde + ) + } + } + + private fun mapDate(dato: String?): LocalDate? { + if (dato != null) { + return LocalDate.parse(dato) + } + return null + } + private fun mapInnflyttingTilNorge(innflyttingTilNorge: List): List { return innflyttingTilNorge.map { InnflyttingTilNorge( @@ -65,7 +106,8 @@ object PdlMapper { return Folkeregistermetadata( ajourholdstidspunkt = parseNullableDateTimeFraPDL(folkeregistermetadata?.ajourholdstidspunkt), gyldighetstidspunkt = parseNullableDateTimeFraPDL(folkeregistermetadata?.gyldighetstidspunkt), - opphoerstidspunkt = parseNullableDateTimeFraPDL(folkeregistermetadata?.opphoerstidspunkt) + opphoerstidspunkt = parseNullableDateTimeFraPDL(folkeregistermetadata?.opphoerstidspunkt), + aarsak = folkeregistermetadata?.aarsak ) } diff --git a/src/main/resources/lovme.yaml b/src/main/resources/lovme.yaml index 97a157b02..282609ee9 100644 --- a/src/main/resources/lovme.yaml +++ b/src/main/resources/lovme.yaml @@ -660,6 +660,10 @@ components: type: array items: $ref: "#/components/schemas/Navn" + oppholdstilatelser: + type: array + items: + nullable: true PersonhistorikkBarn: properties: ident: diff --git a/src/test/kotlin/no/nav/medlemskap/clients/aareg/AaregClientTest.kt b/src/test/kotlin/no/nav/medlemskap/clients/aareg/AaregClientTest.kt index 35d57e424..ad4534903 100644 --- a/src/test/kotlin/no/nav/medlemskap/clients/aareg/AaregClientTest.kt +++ b/src/test/kotlin/no/nav/medlemskap/clients/aareg/AaregClientTest.kt @@ -7,18 +7,21 @@ import com.github.tomakehurst.wiremock.client.WireMock.equalTo import com.github.tomakehurst.wiremock.core.WireMockConfiguration import io.ktor.client.plugins.* import io.ktor.http.* +import io.ktor.serialization.* import io.mockk.coEvery import io.mockk.mockk import kotlinx.coroutines.runBlocking -import no.nav.medlemskap.clients.sts.StsRestClient +import no.nav.medlemskap.clients.azuread.AzureAdClient import no.nav.medlemskap.common.cioHttpClient +import no.nav.medlemskap.config.Configuration import org.junit.jupiter.api.* import java.time.LocalDate import java.time.LocalDateTime class AaregClientTest { - val username = "Stian" + private val config = Configuration() + companion object { val server: WireMockServer = WireMockServer(WireMockConfiguration.options().dynamicPort()) @@ -44,8 +47,8 @@ class AaregClientTest { fun `tester response`() { val callId = "12345" - val stsClient: StsRestClient = mockk() - coEvery { stsClient.oidcToken() } returns "dummytoken" + val azureAdClient: AzureAdClient = mockk() + coEvery { azureAdClient.hentToken(config.register.aaregScope).token } returns "dummytoken" WireMock.stubFor( queryMapping.willReturn( @@ -56,7 +59,7 @@ class AaregClientTest { ) ) - val client = createAaRegClient(stsClient) + val client = createAaRegClient(azureAdClient) val response = runBlocking { client.hentArbeidsforhold("26104635775", callId, LocalDate.of(2010, 1, 1), LocalDate.of(2016, 1, 1)) } @@ -89,8 +92,8 @@ class AaregClientTest { @Test fun `tester ServerResponseException`() { val callId = "12345" - val stsClient: StsRestClient = mockk() - coEvery { stsClient.oidcToken() } returns "dummytoken" + val azureAdClient: AzureAdClient = mockk() + coEvery { azureAdClient.hentToken(config.register.aaregScope).token } returns "dummytoken" WireMock.stubFor( queryMapping.willReturn( @@ -100,7 +103,7 @@ class AaregClientTest { ) ) - val client = AaRegClient(server.baseUrl(), username, stsClient, cioHttpClient, "123") + val client = AaRegClient(server.baseUrl(), azureAdClient, cioHttpClient, config, "123") Assertions.assertThrows(ServerResponseException::class.java) { runBlocking { client.hentArbeidsforhold("26104635775", callId, LocalDate.of(2010, 1, 1), LocalDate.of(2016, 1, 1)) } @@ -110,8 +113,8 @@ class AaregClientTest { @Test fun `tester ClientRequestException`() { val callId = "12345" - val stsClient: StsRestClient = mockk() - coEvery { stsClient.oidcToken() } returns "dummytoken" + val azureAdClient: AzureAdClient = mockk() + coEvery { azureAdClient.hentToken(config.register.aaregScope).token } returns "dummytoken" WireMock.stubFor( queryMapping.willReturn( @@ -122,7 +125,7 @@ class AaregClientTest { ) ) - val client = createAaRegClient(stsClient) + val client = createAaRegClient(azureAdClient) Assertions.assertThrows(ClientRequestException::class.java) { runBlocking { client.hentArbeidsforhold("26104635775", callId, LocalDate.of(2010, 1, 1), LocalDate.of(2016, 1, 1)) } @@ -132,8 +135,8 @@ class AaregClientTest { @Test fun `404 gir tom liste`() { val callId = "12345" - val stsClient: StsRestClient = mockk() - coEvery { stsClient.oidcToken() } returns "dummytoken" + val azureAdClient: AzureAdClient = mockk() + coEvery { azureAdClient.hentToken(config.register.aaregScope).token } returns "dummytoken" WireMock.stubFor( queryMapping.willReturn( @@ -144,17 +147,17 @@ class AaregClientTest { ) ) - val client = createAaRegClient(stsClient) + val client = createAaRegClient(azureAdClient) val response = runBlocking { client.hentArbeidsforhold("26104635775", callId, LocalDate.of(2010, 1, 1), LocalDate.of(2016, 1, 1)) } Assertions.assertEquals(0, response.size) } - private fun createAaRegClient(stsClient: StsRestClient): AaRegClient { + private fun createAaRegClient(azureAdClient: AzureAdClient): AaRegClient { return AaRegClient( baseUrl = server.baseUrl(), - username = username, - stsClient = stsClient, + azureAdClient = azureAdClient, + configuration = config, httpClient = cioHttpClient, aaRegApiKey = "123" ) @@ -747,7 +750,6 @@ class AaregClientTest { private val queryMapping: MappingBuilder = WireMock.get(WireMock.urlPathEqualTo("/v1/arbeidstaker/arbeidsforhold")) .withHeader(HttpHeaders.Authorization, equalTo("Bearer dummytoken")) - .withHeader("Nav-Consumer-Token", equalTo("Bearer dummytoken")) .withHeader("Nav-Personident", equalTo("26104635775")) .withHeader("Nav-Call-Id", equalTo("12345")) .withQueryParam("ansettelsesperiodeFom", equalTo("2010-01-01")) diff --git a/src/test/kotlin/no/nav/medlemskap/clients/inntekt/InntektClientTest.kt b/src/test/kotlin/no/nav/medlemskap/clients/inntekt/InntektClientTest.kt deleted file mode 100644 index 28ce0bb56..000000000 --- a/src/test/kotlin/no/nav/medlemskap/clients/inntekt/InntektClientTest.kt +++ /dev/null @@ -1,219 +0,0 @@ -package no.nav.medlemskap.clients.inntekt - -import assertk.assertThat -import assertk.assertions.isEqualTo -import assertk.assertions.isNotNull -import com.github.tomakehurst.wiremock.WireMockServer -import com.github.tomakehurst.wiremock.client.MappingBuilder -import com.github.tomakehurst.wiremock.client.WireMock -import com.github.tomakehurst.wiremock.client.WireMock.* -import com.github.tomakehurst.wiremock.core.WireMockConfiguration -import io.ktor.client.plugins.* -import io.ktor.http.ContentType -import io.ktor.http.HttpHeaders -import io.ktor.http.HttpStatusCode -import io.mockk.coEvery -import io.mockk.mockk -import kotlinx.coroutines.runBlocking -import no.nav.medlemskap.clients.sts.StsRestClient -import no.nav.medlemskap.common.cioHttpClient -import no.nav.medlemskap.config.Configuration -import org.junit.jupiter.api.* -import org.junit.jupiter.api.Assertions.assertEquals -import java.time.LocalDate -import java.time.YearMonth - -class InntektClientTest { - - companion object { - val server: WireMockServer = WireMockServer(WireMockConfiguration.options().dynamicPort()) - - @BeforeAll - @JvmStatic - fun start() { - server.start() - } - - @AfterAll - @JvmStatic - fun stop() { - server.stop() - } - } - - @BeforeEach - fun configure() { - WireMock.configureFor(server.port()) - } - - @Test - fun `tester response`() { - val callId = "12345" - - val stsClient: StsRestClient = mockk() - coEvery { stsClient.oidcToken() } returns "dummytoken" - - stubFor( - queryMapping.willReturn( - aResponse() - .withStatus(HttpStatusCode.OK.value) - .withHeader(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - .withBody(inntektResponse) - ) - ) - - val client = InntektClient(server.baseUrl(), stsClient, config, cioHttpClient) - - val response = runBlocking { client.hentInntektListe("10108000398", callId, LocalDate.of(2016, 1, 1), LocalDate.of(2016, 8, 1)) } - println(response) - - assertEquals(YearMonth.of(2016, 1), response.arbeidsInntektMaaned?.get(0)?.aarMaaned) - assertEquals("LOENNSINNTEKT", response.arbeidsInntektMaaned?.get(0)?.arbeidsInntektInformasjon?.inntektListe?.get(0)?.inntektType) - assertEquals(25000.0, response.arbeidsInntektMaaned?.get(0)?.arbeidsInntektInformasjon?.inntektListe?.get(0)?.beloep) - assertEquals(YearMonth.of(2020, 1), response.arbeidsInntektMaaned?.get(0)?.arbeidsInntektInformasjon?.inntektListe?.get(0)?.leveringstidspunkt) - assertEquals(null, response.arbeidsInntektMaaned?.get(0)?.avvikListe) - } - - @Test - fun `tester ServerResponseException`() { - val callId = "12345" - val stsClient: StsRestClient = mockk() - coEvery { stsClient.oidcToken() } returns "dummytoken" - - WireMock.stubFor( - queryMapping.willReturn( - WireMock.aResponse() - .withStatus(HttpStatusCode.InternalServerError.value) - .withHeader(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - - ) - ) - val client = InntektClient(server.baseUrl(), stsClient, config, cioHttpClient) - -// Assertions.assertThrows(ServerResponseException::class.java) { -// // runBlocking { client.hentInntektListe("10108000398", callId, LocalDate.of(2016, 1, 1), LocalDate.of(2016, 8, 1)) } -// // } - - val response = runBlocking { client.hentInntektListe("10108000398", callId, LocalDate.of(2016, 1, 1), LocalDate.of(2016, 8, 1)) } - assertThat(response.arbeidsInntektMaaned).isNotNull() - assertThat(response.arbeidsInntektMaaned!!.size).isEqualTo(0) - } - - @Test - fun `tester ClientRequestException`() { - val callId = "12345" - val stsClient: StsRestClient = mockk() - coEvery { stsClient.oidcToken() } returns "dummytoken" - - WireMock.stubFor( - queryMapping.willReturn( - WireMock.aResponse() - .withStatus(HttpStatusCode.Forbidden.value) - .withHeader(HttpHeaders.ContentType, ContentType.Application.Json.toString()) - - ) - ) - - val client = InntektClient(server.baseUrl(), stsClient, config, cioHttpClient) - - Assertions.assertThrows(ClientRequestException::class.java) { - runBlocking { client.hentInntektListe("10108000398", callId, LocalDate.of(2016, 1, 1), LocalDate.of(2016, 8, 1)) } - } - } - - private val config = Configuration() - - private val inntektRequest = - """ - { - "ident": { - "identifikator": "10108000398", - "aktoerType": "NATURLIG_IDENT" - }, - "ainntektsfilter": "MedlemskapA-inntekt", - "maanedFom": "2016-01", - "maanedTom": "2016-08", - "formaal": "Medlemskap" - } - """.trimIndent() - - private val queryMapping: MappingBuilder = post(urlPathEqualTo("/rs/api/v1/hentinntektliste")) - .withHeader(HttpHeaders.Accept, equalTo("application/json")) - .withHeader(HttpHeaders.ContentType, equalTo("application/json")) - .withHeader(HttpHeaders.Authorization, equalTo("Bearer dummytoken")) - .withHeader("Nav-Consumer-Id", equalTo("test")) - .withHeader("Nav-Call-Id", equalTo("12345")) - .withRequestBody(equalToJson(inntektRequest)) - - private val inntektResponse = - """ - { - "arbeidsInntektMaaned": [ - { - "aarMaaned": "2016-01", - "arbeidsInntektInformasjon": { - "inntektListe": [ - { - "inntektType": "LOENNSINNTEKT", - "beloep": 25000, - "fordel": "kontantytelse", - "inntektskilde": "A-ordningen", - "inntektsperiodetype": "Maaned", - "inntektsstatus": "LoependeInnrapportert", - "leveringstidspunkt": "2020-01", - "utbetaltIMaaned": "2016-01", - "opplysningspliktig": { - "identifikator": "873152362", - "aktoerType": "ORGANISASJON" - }, - "virksomhet": { - "identifikator": "873152362", - "aktoerType": "ORGANISASJON" - }, - "inntektsmottaker": { - "identifikator": "10108000398", - "aktoerType": "NATURLIG_IDENT" - }, - "inngaarIGrunnlagForTrekk": true, - "utloeserArbeidsgiveravgift": true, - "informasjonsstatus": "InngaarAlltid", - "beskrivelse": "fastloenn", - "skatteOgAvgiftsregel": "nettoloenn" - }, - { - "inntektType": "LOENNSINNTEKT", - "beloep": 25000, - "fordel": "kontantytelse", - "inntektskilde": "A-ordningen", - "inntektsperiodetype": "Maaned", - "inntektsstatus": "LoependeInnrapportert", - "leveringstidspunkt": "2020-01", - "utbetaltIMaaned": "2016-01", - "opplysningspliktig": { - "identifikator": "973063804", - "aktoerType": "ORGANISASJON" - }, - "virksomhet": { - "identifikator": "973063804", - "aktoerType": "ORGANISASJON" - }, - "inntektsmottaker": { - "identifikator": "10108000398", - "aktoerType": "NATURLIG_IDENT" - }, - "inngaarIGrunnlagForTrekk": true, - "utloeserArbeidsgiveravgift": true, - "informasjonsstatus": "InngaarAlltid", - "beskrivelse": "fastloenn" - } - ] - } - } - ], - "ident": { - "identifikator": "10108000398", - "aktoerType": "NATURLIG_IDENT" - } - } - """.trimIndent() -} diff --git a/src/test/kotlin/no/nav/medlemskap/clients/oppgave/OppgaveClientTest.kt b/src/test/kotlin/no/nav/medlemskap/clients/oppgave/OppgaveClientTest.kt index 6d88090b7..7d664b39d 100644 --- a/src/test/kotlin/no/nav/medlemskap/clients/oppgave/OppgaveClientTest.kt +++ b/src/test/kotlin/no/nav/medlemskap/clients/oppgave/OppgaveClientTest.kt @@ -9,14 +9,18 @@ import io.ktor.http.* import io.mockk.coEvery import io.mockk.mockk import kotlinx.coroutines.runBlocking -import no.nav.medlemskap.clients.sts.StsRestClient +import no.nav.medlemskap.clients.Token +import no.nav.medlemskap.clients.azuread.AzureAdClient import no.nav.medlemskap.common.cioHttpClient +import no.nav.medlemskap.config.Configuration import org.junit.jupiter.api.* import org.junit.jupiter.api.Assertions.assertEquals import java.time.LocalDate class OppgaveClientTest { + private val config = Configuration() + companion object { val server: WireMockServer = WireMockServer(WireMockConfiguration.options().dynamicPort()) @@ -42,8 +46,8 @@ class OppgaveClientTest { fun `henter oppgaver`() { val callId = "123456" - val stsClient: StsRestClient = mockk() - coEvery { stsClient.oidcToken() } returns "dummytoken" + val azureAdClient: AzureAdClient = mockk() + coEvery { azureAdClient.hentToken(config.register.oppgaveScope) } returns Token("dummytoken", "", 1) stubFor( oppgaveRequestMapping @@ -55,7 +59,7 @@ class OppgaveClientTest { ) ) - val oppgaveclient = createOppgaveClient(stsClient) + val oppgaveclient = createOppgaveClient(azureAdClient) val oppgaveResponse = runBlocking { oppgaveclient.hentOppgaver(listOf("1234567890"), callId) } val oppgave = oppgaveResponse.oppgaver[0] @@ -73,8 +77,8 @@ class OppgaveClientTest { @Test fun `tester ServerResponseException`() { val callId = "123456" - val stsClient: StsRestClient = mockk() - coEvery { stsClient.oidcToken() } returns "dummytoken" + val azureAdClient: AzureAdClient = mockk() + coEvery { azureAdClient.hentToken(config.register.oppgaveScope) } returns Token("dummytoken", "", 1) stubFor( oppgaveRequestMapping.willReturn( @@ -85,7 +89,7 @@ class OppgaveClientTest { ) ) - val oppgaveclient = createOppgaveClient(stsClient) + val oppgaveclient = createOppgaveClient(azureAdClient) Assertions.assertThrows(ServerResponseException::class.java) { runBlocking { oppgaveclient.hentOppgaver(listOf("1234567890"), callId) } @@ -95,8 +99,8 @@ class OppgaveClientTest { @Test fun `tester ClientRequestException`() { val callId = "123456" - val stsClient: StsRestClient = mockk() - coEvery { stsClient.oidcToken() } returns "dummytoken" + val azureAdClient: AzureAdClient = mockk() + coEvery { azureAdClient.hentToken(config.register.oppgaveScope) } returns Token("dummytoken", "", 1) stubFor( oppgaveRequestMapping.willReturn( @@ -107,15 +111,15 @@ class OppgaveClientTest { ) ) - val oppgaveclient = createOppgaveClient(stsClient) + val oppgaveclient = createOppgaveClient(azureAdClient) Assertions.assertThrows(ClientRequestException::class.java) { runBlocking { oppgaveclient.hentOppgaver(listOf("1234567890"), callId) } } } - private fun createOppgaveClient(stsClient: StsRestClient): OppgaveClient { - return OppgaveClient(server.baseUrl(), stsClient, cioHttpClient, "123") + private fun createOppgaveClient(azureAdClient: AzureAdClient): OppgaveClient { + return OppgaveClient(server.baseUrl(), azureAdClient, config, cioHttpClient) } } diff --git a/src/test/kotlin/no/nav/medlemskap/clients/pdl/PdlClientHentPersonTest.kt b/src/test/kotlin/no/nav/medlemskap/clients/pdl/PdlClientHentPersonTest.kt index a985b0af2..efab8f359 100644 --- a/src/test/kotlin/no/nav/medlemskap/clients/pdl/PdlClientHentPersonTest.kt +++ b/src/test/kotlin/no/nav/medlemskap/clients/pdl/PdlClientHentPersonTest.kt @@ -139,6 +139,7 @@ class PdlClientHentPersonTest { } } ], + "opphold":[], "adressebeskyttelse": [], "sivilstand": [ { diff --git a/src/test/kotlin/no/nav/medlemskap/clients/pdl/mapper/PdlClientHentEktefelleTest.kt b/src/test/kotlin/no/nav/medlemskap/clients/pdl/mapper/PdlClientHentEktefelleTest.kt index 1ff44b8be..adf5a2d99 100644 --- a/src/test/kotlin/no/nav/medlemskap/clients/pdl/mapper/PdlClientHentEktefelleTest.kt +++ b/src/test/kotlin/no/nav/medlemskap/clients/pdl/mapper/PdlClientHentEktefelleTest.kt @@ -83,6 +83,7 @@ class PdlClientHentEktefelleTest { "minRolleForPerson": "FAR" } ], + "opphold":[], "statsborgerskap": [ { "land": "NOR", diff --git a/src/test/kotlin/no/nav/medlemskap/cucumber/steps/pdl/PdlMapperSteps.kt b/src/test/kotlin/no/nav/medlemskap/cucumber/steps/pdl/PdlMapperSteps.kt index 83adabd69..ea777931a 100644 --- a/src/test/kotlin/no/nav/medlemskap/cucumber/steps/pdl/PdlMapperSteps.kt +++ b/src/test/kotlin/no/nav/medlemskap/cucumber/steps/pdl/PdlMapperSteps.kt @@ -203,7 +203,8 @@ class PdlMapperSteps : No { adressebeskyttelse = adressebeskyttelse, innflyttingTilNorge = innflyttingTilNorge, utflyttingFraNorge = utflyttingFraNorge, - navn = navn + navn = navn, + opphold = emptyList() ) } } diff --git a/src/test/resources/testpersoner/bakoverkompatibeltest/forventetRespons.json b/src/test/resources/testpersoner/bakoverkompatibeltest/forventetRespons.json index ef8a199b6..25d362bc2 100644 --- a/src/test/resources/testpersoner/bakoverkompatibeltest/forventetRespons.json +++ b/src/test/resources/testpersoner/bakoverkompatibeltest/forventetRespons.json @@ -57,7 +57,8 @@ "fornavn" : "Test", "mellomnavn" : null, "etternavn" : "Person" - } ] + } ], + "oppholdstilatelser" : [ ] }, "medlemskap" : [ { "dekning" : "dekning",