From 5826862ef39686d2cfe28d32c90c772f05b7dc95 Mon Sep 17 00:00:00 2001 From: Martine Enger Date: Mon, 6 Mar 2023 13:12:28 +0100 Subject: [PATCH] r Fjern all kode tilknyttet FormidlingsgruppeGateway - dette brukes ikke lenger --- README.md | 1 - nais/nais-dev-gcp.yaml | 4 - nais/nais-prod-gcp.yaml | 4 - .../FormidlingsgruppeGateway.kt | 9 -- .../adapter/ArenaOrdsTokenProviderClient.kt | 99 ------------ .../adapter/FormidlingsgruppeGatewayConfig.kt | 50 ------ .../adapter/FormidlingsgruppeGatewayImpl.kt | 32 ---- .../adapter/FormidlingsgruppeResponseDto.kt | 5 - .../adapter/FormidlingsgruppeRestClient.kt | 91 ----------- .../adapter/FormidlingshistorikkDto.kt | 10 -- .../adapter/FormidlingshistorikkMapper.kt | 15 -- .../formidlingsgruppe/adapter/README.md | 4 - .../config/ApplicationConfig.kt | 4 +- .../config/ServiceBeansConfig.kt | 1 - .../helsesjekk/HelsesjekkConfig.kt | 3 - .../ArenaOrdsTokenProviderClientTest.kt | 55 ------- .../adapter/FormidlingsgruppeGatewayConfig.kt | 18 --- .../adapter/FormidlingsgruppeGatewayTest.kt | 142 ------------------ .../adapter/FormidlingshistorikkMapperTest.kt | 49 ------ .../resources/arbeidsforhold/ordstoken.json | 5 - 20 files changed, 1 insertion(+), 600 deletions(-) delete mode 100644 src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeGateway.kt delete mode 100644 src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/ArenaOrdsTokenProviderClient.kt delete mode 100644 src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayConfig.kt delete mode 100644 src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayImpl.kt delete mode 100644 src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeResponseDto.kt delete mode 100644 src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeRestClient.kt delete mode 100644 src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingshistorikkDto.kt delete mode 100644 src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingshistorikkMapper.kt delete mode 100644 src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/README.md delete mode 100644 src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/ArenaOrdsTokenProviderClientTest.kt delete mode 100644 src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayConfig.kt delete mode 100644 src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayTest.kt delete mode 100644 src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingshistorikkMapperTest.kt delete mode 100644 src/test/resources/arbeidsforhold/ordstoken.json diff --git a/README.md b/README.md index 46388043b..576a04fc2 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,6 @@ Se https://miro.com/miroverse/the-bounded-context-canvas/ for eksempel ## Utgående kommunikasjon (outbound communication) | Melding | Query/Command/Event | Collaborator | | :--- | :--- | :--- | -| Arbeidssokerperioder | query (REST/GET) | [Arena ORDS](src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/README.md) | | Aktivering og reaktivering | Command (REST/POST) | veilarboppfolging (og Arena) | | Oppfølgingsstatus | Query (REST/GET) | veilarboppfolging (og Arena) | | Tilgangskontroll | --- | ABAC | diff --git a/nais/nais-dev-gcp.yaml b/nais/nais-dev-gcp.yaml index 2c056622e..19cf1b1a1 100644 --- a/nais/nais-dev-gcp.yaml +++ b/nais/nais-dev-gcp.yaml @@ -64,10 +64,6 @@ spec: value: dev-fss - name: ENHET_URL value: https://ereg-services-q1.dev-fss-pub.nais.io/ereg - - name: ARENA_ORDS_API - value: https://paw-proxy.dev-fss-pub.nais.io - - name: ARENA_ORDS_TOKEN_PROVIDER - value: https://paw-proxy.dev-fss-pub.nais.io - name: SPRING_PROFILES_ACTIVE value: gcp leaderElection: true diff --git a/nais/nais-prod-gcp.yaml b/nais/nais-prod-gcp.yaml index 5781319e2..a8a439ddb 100644 --- a/nais/nais-prod-gcp.yaml +++ b/nais/nais-prod-gcp.yaml @@ -64,10 +64,6 @@ spec: value: prod-fss - name: ENHET_URL value: https://ereg-services.prod-fss-pub.nais.io/ereg - - name: ARENA_ORDS_API - value: https://paw-proxy.prod-fss-pub.nais.io - - name: ARENA_ORDS_TOKEN_PROVIDER - value: https://paw-proxy.prod-fss-pub.nais.io - name: SPRING_PROFILES_ACTIVE value: gcp leaderElection: true diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeGateway.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeGateway.kt deleted file mode 100644 index 31ae56b3c..000000000 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/FormidlingsgruppeGateway.kt +++ /dev/null @@ -1,9 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe - -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.Arbeidssokerperioder -import no.nav.fo.veilarbregistrering.bruker.Foedselsnummer -import no.nav.fo.veilarbregistrering.bruker.Periode - -interface FormidlingsgruppeGateway { - fun finnArbeissokerperioder(foedselsnummer: Foedselsnummer, periode: Periode): Arbeidssokerperioder -} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/ArenaOrdsTokenProviderClient.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/ArenaOrdsTokenProviderClient.kt deleted file mode 100644 index 8e89a1fee..000000000 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/ArenaOrdsTokenProviderClient.kt +++ /dev/null @@ -1,99 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter - -import com.fasterxml.jackson.annotation.JsonAlias -import com.fasterxml.jackson.module.kotlin.readValue -import no.nav.fo.veilarbregistrering.config.objectMapper -import no.nav.fo.veilarbregistrering.config.requireProperty -import no.nav.fo.veilarbregistrering.http.defaultHttpClient -import okhttp3.HttpUrl -import okhttp3.MediaType -import okhttp3.Request -import okhttp3.RequestBody -import org.springframework.http.HttpHeaders -import java.io.IOException -import java.time.LocalDateTime -import java.time.temporal.ChronoUnit -import java.util.* - -class ArenaOrdsTokenProviderClient( - private val arenaOrdsUrl: String, - private val proxyTokenProvider: () -> String -) { - - private var tokenCache: TokenCache? = null - val token: String - get() { - if (tokenIsSoonExpired()) { - tokenCache = TokenCache(getRefreshedToken()) - } - return tokenCache!!.ordsToken.accessToken - } - - private fun getRefreshedToken(): OrdsToken { - val request = buildRequest() - return try { - defaultHttpClient().newCall(request).execute().use { response -> - when { - response.isSuccessful -> { - response.body()?.string() - ?.let { bodyString -> objectMapper.readValue(bodyString) } - ?: throw IOException("Token response body was null") - } - else -> throw IOException("Unexpected response code (${response.code()}) from ords token refresh") - } - } - } catch (e: IOException) { - throw RuntimeException(e) - } - } - - private fun buildRequest() = Request.Builder() - .url(HttpUrl.parse(arenaOrdsUrl)!!.newBuilder().addPathSegments("arena/token").build()) - .header(HttpHeaders.CACHE_CONTROL, "no-cache") - .header(HttpHeaders.AUTHORIZATION, "Bearer ${proxyTokenProvider()}") - .header("Downstream-Authorization", basicAuth) - .post( - RequestBody.create( - MediaType.get("application/x-www-form-urlencoded"), - "grant_type=client_credentials" - ) - ) - .build() - - private fun tokenIsSoonExpired(): Boolean { - return tokenCache == null || timeToRefresh().isBefore(LocalDateTime.now()) - } - - private fun timeToRefresh(): LocalDateTime { - return tokenCache!!.time.plus( - ( - tokenCache!!.ordsToken.expiresIn - MINIMUM_TIME_TO_EXPIRE_BEFORE_REFRESH).toLong(), - ChronoUnit.SECONDS - ) - } - - private class TokenCache(val ordsToken: OrdsToken) { - val time: LocalDateTime = LocalDateTime.now() - } - - data class OrdsToken( - @JsonAlias("access_token") - val accessToken: String, - - @JsonAlias("token_type") - val tokenType: String, - - @JsonAlias("expires_in") - val expiresIn: Int = 0 - ) - - companion object { - private const val MINIMUM_TIME_TO_EXPIRE_BEFORE_REFRESH = 60 - - private const val ARENA_ORDS_CLIENT_ID_PROPERTY = "ARENA_ORDS_CLIENT_ID" - private const val ARENA_ORDS_CLIENT_SECRET_PROPERTY = "ARENA_ORDS_CLIENT_SECRET" - private val username = requireProperty(ARENA_ORDS_CLIENT_ID_PROPERTY) - private val password = requireProperty(ARENA_ORDS_CLIENT_SECRET_PROPERTY) - private val basicAuth = "Basic ${Base64.getEncoder().encodeToString("$username:$password".toByteArray())}" - } -} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayConfig.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayConfig.kt deleted file mode 100644 index ea3ed5d5f..000000000 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayConfig.kt +++ /dev/null @@ -1,50 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter - -import no.nav.common.token_client.client.AzureAdMachineToMachineTokenClient -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeGateway -import no.nav.fo.veilarbregistrering.config.requireProperty -import no.nav.fo.veilarbregistrering.metrics.MetricsService -import org.springframework.context.annotation.Bean -import org.springframework.context.annotation.Configuration - -@Configuration -class FormidlingsgruppeGatewayConfig { - @Bean - fun arenaOrdsTokenProviderClient(tokenProvider: AzureAdMachineToMachineTokenClient): ArenaOrdsTokenProviderClient { - return ArenaOrdsTokenProviderClient(requireProperty(ARENA_ORDS_TOKEN_PROVIDER)) { - val pawProxyCluster = requireProperty("PAW_PROXY_CLUSTER") - tokenProvider.createMachineToMachineToken("api://$pawProxyCluster.paw.paw-proxy/.default") - } - } - - @Bean - fun formidlingsgruppeRestClient( - arenaOrdsTokenProviderClient: ArenaOrdsTokenProviderClient, - azureAdMachineToMachineTokenProvider: AzureAdMachineToMachineTokenClient, - metricsService: MetricsService - ): FormidlingsgruppeRestClient { - val proxyTokenProvider = { - val pawProxyCluster = requireProperty("PAW_PROXY_CLUSTER") - azureAdMachineToMachineTokenProvider.createMachineToMachineToken("api://$pawProxyCluster.paw.paw-proxy/.default") - } - val arenaTokenProvider = { arenaOrdsTokenProviderClient.token } - return FormidlingsgruppeRestClient( - requireProperty(ARENA_ORDS_API), - metricsService, - arenaTokenProvider, - proxyTokenProvider - ) - } - - @Bean - fun formidlingsgruppeGateway( - formidlingsgruppeRestClient: FormidlingsgruppeRestClient - ): FormidlingsgruppeGateway { - return FormidlingsgruppeGatewayImpl(formidlingsgruppeRestClient) - } - - companion object { - private const val ARENA_ORDS_TOKEN_PROVIDER = "ARENA_ORDS_TOKEN_PROVIDER" - private const val ARENA_ORDS_API = "ARENA_ORDS_API" - } -} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayImpl.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayImpl.kt deleted file mode 100644 index 1f3451a59..000000000 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayImpl.kt +++ /dev/null @@ -1,32 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter - -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.Arbeidssokerperiode -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.Arbeidssokerperioder -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeGateway -import no.nav.fo.veilarbregistrering.bruker.Foedselsnummer -import no.nav.fo.veilarbregistrering.bruker.Periode -import no.nav.fo.veilarbregistrering.log.logger - -class FormidlingsgruppeGatewayImpl( - private val formidlingsgruppeRestClient: FormidlingsgruppeRestClient -) : - FormidlingsgruppeGateway { - override fun finnArbeissokerperioder(foedselsnummer: Foedselsnummer, periode: Periode): Arbeidssokerperioder { - val formidlingsgruppeResponseDto = - formidlingsgruppeRestClient.hentFormidlingshistorikk(foedselsnummer, periode) - logger.info("Fikk følgende formidlingshistorikk fra Arena sin ORDS-tjeneste: $formidlingsgruppeResponseDto") - - val arbeidssokerperioder: List = - formidlingsgruppeResponseDto - ?.formidlingshistorikk - ?.filter(::erArbeidssoker) - ?.map(FormidlingshistorikkMapper::map) - ?: emptyList() - - return Arbeidssokerperioder(arbeidssokerperioder) - } - - private fun erArbeidssoker(formidlingshistorikkDto: FormidlingshistorikkDto): Boolean { - return formidlingshistorikkDto.formidlingsgruppeKode == "ARBS" - } -} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeResponseDto.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeResponseDto.kt deleted file mode 100644 index d82b061c3..000000000 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeResponseDto.kt +++ /dev/null @@ -1,5 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter - -data class FormidlingsgruppeResponseDto( - val formidlingshistorikk: List? -) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeRestClient.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeRestClient.kt deleted file mode 100644 index 3336ae41f..000000000 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeRestClient.kt +++ /dev/null @@ -1,91 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter - -import no.nav.common.health.HealthCheck -import no.nav.common.health.HealthCheckResult -import no.nav.common.health.HealthCheckUtils -import no.nav.common.utils.UrlUtils -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.UnauthorizedException -import no.nav.fo.veilarbregistrering.bruker.Foedselsnummer -import no.nav.fo.veilarbregistrering.bruker.Periode -import no.nav.fo.veilarbregistrering.config.objectMapper -import no.nav.fo.veilarbregistrering.http.RetryInterceptor -import no.nav.fo.veilarbregistrering.http.buildHttpClient -import no.nav.fo.veilarbregistrering.http.defaultHttpClient -import no.nav.fo.veilarbregistrering.log.logger -import no.nav.fo.veilarbregistrering.metrics.MetricsService -import no.nav.fo.veilarbregistrering.metrics.TimedMetric -import okhttp3.HttpUrl -import okhttp3.Request -import org.springframework.http.HttpHeaders -import org.springframework.http.HttpStatus -import java.util.concurrent.TimeUnit - -class FormidlingsgruppeRestClient internal constructor( - private val baseUrl: String, - metricsService: MetricsService, - private val arenaOrdsTokenProvider: () -> String, - private val proxyTokenProvider: () -> String -) : HealthCheck, TimedMetric(metricsService) { - - fun hentFormidlingshistorikk( - foedselsnummer: Foedselsnummer, - periode: Periode - ): FormidlingsgruppeResponseDto? { - val request = buildRequest(foedselsnummer, periode) - return utfoer(request) - } - - private fun buildRequest(foedselsnummer: Foedselsnummer, periode: Periode): Request { - return Request.Builder() - .url( - HttpUrl.parse(baseUrl)!!.newBuilder() - .addPathSegments("arena/api/v1/person/arbeidssoeker/formidlingshistorikk") - .addQueryParameter("fnr", foedselsnummer.stringValue()) - .addQueryParameter("fraDato", periode.fraDatoSomUtcString()) - .addQueryParameter("tilDato", periode.tilDatoSomUtcString()) - .build() - ) - .header(HttpHeaders.AUTHORIZATION, "Bearer ${proxyTokenProvider()}") - .header("Downstream-Authorization", "Bearer ${arenaOrdsTokenProvider()}") - .build() - } - - private fun utfoer(request: Request): FormidlingsgruppeResponseDto? { - val httpClient = buildHttpClient { - readTimeout(HTTP_READ_TIMEOUT.toLong(), TimeUnit.MILLISECONDS) - addInterceptor(RetryInterceptor()) - } - return doTimedCall { - httpClient.newCall(request).execute().use { - when (val status = HttpStatus.valueOf(it.code())) { - HttpStatus.OK -> { - it.body()?.string()?.let { objectMapper.readValue(it, FormidlingsgruppeResponseDto::class.java) - } ?: throw RuntimeException("Unexpected empty body") - } - HttpStatus.NO_CONTENT -> { - logger.info("Mottok en 204 fra arena/api/v1/person/arbeidssoeker/formidlingshistorikk") - null - } - HttpStatus.NOT_FOUND -> { - //TODO: Denne blir erstattet av NO_CONTENT - kjører meg begge i en overgang - logger.info("Mottok en 404 fra arena/api/v1/person/arbeidssoeker/formidlingshistorikk") - null - } - HttpStatus.UNAUTHORIZED -> throw UnauthorizedException("Hent formidlingshistorikk fra Arena feilet med 401 - UNAUTHORIZED") - else -> throw RuntimeException("Hent formidlingshistorikk fra Arena feilet med statuskode: $status") - } - } - } - } - - override fun checkHealth(): HealthCheckResult { - val path = "arena/ping" - return HealthCheckUtils.pingUrl(UrlUtils.joinPaths(baseUrl, path), defaultHttpClient()) - } - - companion object { - private const val HTTP_READ_TIMEOUT = 120000 - } - - override fun value() = "arenaords" -} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingshistorikkDto.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingshistorikkDto.kt deleted file mode 100644 index 5b34180e3..000000000 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingshistorikkDto.kt +++ /dev/null @@ -1,10 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter - -import java.time.LocalDate - -data class FormidlingshistorikkDto( - val formidlingsgruppeKode: String, - val modDato: String, - val fraDato: LocalDate, - val tilDato: LocalDate? -) diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingshistorikkMapper.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingshistorikkMapper.kt deleted file mode 100644 index f53f40757..000000000 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingshistorikkMapper.kt +++ /dev/null @@ -1,15 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter - -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.Arbeidssokerperiode -import no.nav.fo.veilarbregistrering.bruker.Periode - -internal object FormidlingshistorikkMapper { - fun map(formidlingshistorikkDto: FormidlingshistorikkDto): Arbeidssokerperiode { - return Arbeidssokerperiode( - Periode( - formidlingshistorikkDto.fraDato, - formidlingshistorikkDto.tilDato - ) - ) - } -} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/README.md b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/README.md deleted file mode 100644 index 4901bdae4..000000000 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/README.md +++ /dev/null @@ -1,4 +0,0 @@ -Arena ORDS - Arbeidssoker/formidlingshistorikk -https://confluence.adeo.no/pages/viewpage.action?pageId=371707502 - -Tjenesten benyttes som et supplement til Kafka-topic for å få tilgang til historiske endringer. \ No newline at end of file diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/config/ApplicationConfig.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/config/ApplicationConfig.kt index eb4d2da8c..3fece22a7 100644 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/config/ApplicationConfig.kt +++ b/src/main/kotlin/no/nav/fo/veilarbregistrering/config/ApplicationConfig.kt @@ -2,15 +2,14 @@ package no.nav.fo.veilarbregistrering.config import no.nav.fo.veilarbregistrering.aktorIdCache.AktorIdCacheConfig import no.nav.fo.veilarbregistrering.arbeidsforhold.adapter.ArbeidsforholdGatewayConfig -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter.FormidlingsgruppeGatewayConfig import no.nav.fo.veilarbregistrering.autentisering.AuthenticationConfig import no.nav.fo.veilarbregistrering.autentisering.tokenveksling.TokenExchangeConfig import no.nav.fo.veilarbregistrering.autorisasjon.AutorisasjonConfig import no.nav.fo.veilarbregistrering.bruker.krr.KrrConfig import no.nav.fo.veilarbregistrering.bruker.pdl.PdlOppslagConfig -import no.nav.fo.veilarbregistrering.config.filters.FilterConfig import no.nav.fo.veilarbregistrering.config.db.DatabaseConfig import no.nav.fo.veilarbregistrering.config.db.RepositoryConfig +import no.nav.fo.veilarbregistrering.config.filters.FilterConfig import no.nav.fo.veilarbregistrering.enhet.adapter.EnhetGatewayConfig import no.nav.fo.veilarbregistrering.featuretoggle.UnleashConfig import no.nav.fo.veilarbregistrering.helsesjekk.HelsesjekkConfig @@ -44,7 +43,6 @@ import org.springframework.scheduling.annotation.EnableScheduling PdlOppslagConfig::class, EnhetGatewayConfig::class, KrrConfig::class, - FormidlingsgruppeGatewayConfig::class, PubliseringSchedulerConfig::class, HelsesjekkConfig::class, ObjectMapperConfig::class, diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/config/ServiceBeansConfig.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/config/ServiceBeansConfig.kt index cef62a6e5..dc959611e 100644 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/config/ServiceBeansConfig.kt +++ b/src/main/kotlin/no/nav/fo/veilarbregistrering/config/ServiceBeansConfig.kt @@ -8,7 +8,6 @@ import no.nav.fo.veilarbregistrering.arbeidsforhold.ArbeidsforholdGateway import no.nav.fo.veilarbregistrering.arbeidsforhold.resources.ArbeidsforholdResource import no.nav.fo.veilarbregistrering.arbeidssoker.ArbeidssokerperiodeRepository import no.nav.fo.veilarbregistrering.arbeidssoker.ArbeidssokerperiodeService -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeGateway import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeMottakService import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeRepository import no.nav.fo.veilarbregistrering.arbeidssoker.meldekort.MeldekortMottakService diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/helsesjekk/HelsesjekkConfig.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/helsesjekk/HelsesjekkConfig.kt index 7420c2ed7..20a2cd804 100644 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/helsesjekk/HelsesjekkConfig.kt +++ b/src/main/kotlin/no/nav/fo/veilarbregistrering/helsesjekk/HelsesjekkConfig.kt @@ -6,7 +6,6 @@ import no.nav.common.health.selftest.SelfTestCheck import no.nav.common.health.selftest.SelfTestChecks import no.nav.common.health.selftest.SelfTestMeterBinder import no.nav.fo.veilarbregistrering.arbeidsforhold.adapter.AaregRestClient -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter.FormidlingsgruppeRestClient import no.nav.fo.veilarbregistrering.bruker.krr.DigDirKrrProxyClient import no.nav.fo.veilarbregistrering.bruker.pdl.PdlOppslagClient import no.nav.fo.veilarbregistrering.config.db.DatabaseHelsesjekk @@ -26,7 +25,6 @@ class HelsesjekkConfig { veilarbPep: Pep, unleashClient: UnleashClient, oppfolgingClient: OppfolgingClient, - formidlingsgruppeRestClient: FormidlingsgruppeRestClient, krrClient: DigDirKrrProxyClient, aaregRestClient: AaregRestClient, enhetRestClient: EnhetRestClient, @@ -39,7 +37,6 @@ class HelsesjekkConfig { SelfTestCheck("Ping mot ABAC tilgangskontroll", true, veilarbPep.abacClient), SelfTestCheck("Ping mot Unleash (tilbyr feature-toggles)", false, unleashClient), SelfTestCheck("Ping Oppfolging", false, oppfolgingClient), - SelfTestCheck("Ping Arena med ORDS-tjenesten", false, formidlingsgruppeRestClient), SelfTestCheck("Ping Kontakt og reservasjonsregisteret (KRR)", false, krrClient), SelfTestCheck("Ping Arbeid og arbeidstager registeret (Aareg)", false, aaregRestClient), SelfTestCheck("Ping Enhetsregisteret", false, enhetRestClient), diff --git a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/ArenaOrdsTokenProviderClientTest.kt b/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/ArenaOrdsTokenProviderClientTest.kt deleted file mode 100644 index 465a8a77d..000000000 --- a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/ArenaOrdsTokenProviderClientTest.kt +++ /dev/null @@ -1,55 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter - -import no.nav.fo.veilarbregistrering.FileToJson -import org.assertj.core.api.Assertions -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.ExtendWith -import org.mockserver.integration.ClientAndServer -import org.mockserver.junit.jupiter.MockServerExtension -import org.mockserver.model.HttpRequest -import org.mockserver.model.HttpResponse -import org.mockserver.model.MediaType -import java.util.* - -@ExtendWith(MockServerExtension::class) -class ArenaOrdsTokenProviderClientTest(private val mockServer: ClientAndServer) { - - @BeforeEach - fun setup() { - println(mockServer) - mockServer.reset() - System.setProperty("ARENA_ORDS_CLIENT_ID", "1") - System.setProperty("ARENA_ORDS_CLIENT_SECRET", "1") - System.setProperty("NAIS_CLUSTER_NAME", "dev-gcp") - } - - @Test - fun `Should get a token`() { - val client = buildClient() - - mockServer.`when`( - HttpRequest.request() - .withMethod("POST") - .withHeader("Authorization", mockAuth) - .withHeader("Downstream-Authorization", mockBasicAuth) - .withContentType(MediaType.APPLICATION_FORM_URLENCODED.withCharset("utf-8")) - .withBody("grant_type=client_credentials") - ).respond( - HttpResponse.response() - .withStatusCode(200) - .withBody(FileToJson.toJson("/arbeidsforhold/ordstoken.json"), MediaType.JSON_UTF_8) - ) - - val token = client.token - Assertions.assertThat(token).isNotNull - } - - - private fun buildClient(): ArenaOrdsTokenProviderClient = mockServer.remoteAddress().let { - ArenaOrdsTokenProviderClient("http://${it.hostName}:${it.port}") { "testToken" } - } -} - -private val mockBasicAuth: String = "Basic ${Base64.getEncoder().encodeToString("1:1".toByteArray())}" -private const val mockAuth = "Bearer testToken" diff --git a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayConfig.kt b/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayConfig.kt deleted file mode 100644 index 4f6de625f..000000000 --- a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayConfig.kt +++ /dev/null @@ -1,18 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter - -import io.mockk.mockk -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeGateway -import org.springframework.context.annotation.Bean -import org.springframework.context.annotation.Configuration - -@Configuration -class FormidlingsgruppeGatewayConfig { - - @Bean - fun formidlingsgruppeRestClient(): FormidlingsgruppeRestClient = mockk() - - @Bean - fun formidlingsgruppeGateway(formidlingsgruppeRestClient: FormidlingsgruppeRestClient): FormidlingsgruppeGateway { - return FormidlingsgruppeGatewayImpl(formidlingsgruppeRestClient) - } -} diff --git a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayTest.kt b/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayTest.kt deleted file mode 100644 index f6644249c..000000000 --- a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingsgruppeGatewayTest.kt +++ /dev/null @@ -1,142 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter - -import io.mockk.mockk -import no.nav.fo.veilarbregistrering.FileToJson -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeGateway -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.ArbeidssokerperiodeTestdataBuilder -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.ArbeidssokerperioderTestdataBuilder.Companion.arbeidssokerperioder -import no.nav.fo.veilarbregistrering.bruker.Foedselsnummer -import no.nav.fo.veilarbregistrering.bruker.Periode -import no.nav.fo.veilarbregistrering.log.CallId.leggTilCallId -import org.assertj.core.api.Assertions.assertThat -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.ExtendWith -import org.mockserver.integration.ClientAndServer -import org.mockserver.junit.jupiter.MockServerExtension -import org.mockserver.model.HttpRequest -import org.mockserver.model.HttpResponse.response -import org.mockserver.model.MediaType -import java.time.LocalDate - -@ExtendWith(MockServerExtension::class) -class FormidlingsgruppeGatewayTest(private val mockServer: ClientAndServer) { - - private lateinit var formidlingsgruppeGateway: FormidlingsgruppeGateway - - @BeforeEach - fun setup() { - System.setProperty("NAIS_CLUSTER_NAME", "dev-gcp") - leggTilCallId() - mockServer.reset() - formidlingsgruppeGateway = FormidlingsgruppeGatewayImpl(buildClient()) - } - - private fun buildClient(): FormidlingsgruppeRestClient { - val baseUrl = "http://" + mockServer.remoteAddress().address.hostName + ":" + mockServer.remoteAddress().port - return FormidlingsgruppeRestClient( - baseUrl, - mockk(relaxed = true), - {"proxyTokenProvider"}) { "arenaOrdsTokenProvider" } - } - - @Test - fun `skal hente formidlingsgruppe for gitt person og filtrere bort formidlingshistorikk med IARBS og ISERV`() { - val json = FileToJson.toJson("/arbeidssoker/formidlingshistorikk.json") - - mockServer.`when`( - HttpRequest - .request() - .withMethod("GET") - .withPath("/arena/api/v1/person/arbeidssoeker/formidlingshistorikk")) - .respond(response() - .withStatusCode(200) - .withBody(json, MediaType.JSON_UTF_8)) - - val arbeidssokerperioder = formidlingsgruppeGateway.finnArbeissokerperioder( - Foedselsnummer("12345612345"), - Periode( - LocalDate.of(2020, 1, 10), - LocalDate.of(2020, 1, 11))) - - assertThat(arbeidssokerperioder).isEqualTo( - arbeidssokerperioder() - .arbeidssokerperiode( - ArbeidssokerperiodeTestdataBuilder - .arbeidssokerperiode() - .fra(LocalDate.of(2020, 1, 12)) - .til(LocalDate.of(2020, 2, 20))) - .arbeidssokerperiode( - ArbeidssokerperiodeTestdataBuilder - .arbeidssokerperiode() - .fra(LocalDate.of(2020, 3, 12)) - .til(null)) - .build()) - } - - @Test - fun `skal parse formidlingsgruppe for person uten historikk`() { - val json = FileToJson.toJson("/arbeidssoker/formidlingshistorikk_missing.json") - - mockServer.`when`( - HttpRequest - .request() - .withMethod("GET") - .withPath("/arena/api/v1/person/arbeidssoeker/formidlingshistorikk") - ) - .respond( - response() - .withStatusCode(200) - .withBody(json, MediaType.JSON_UTF_8) - ) - - formidlingsgruppeGateway.finnArbeissokerperioder( - Foedselsnummer("12345612345"), - Periode( - LocalDate.of(2020, 1, 10), - LocalDate.of(2020, 1, 11))) - } - - @Test - fun `skal parse formidlingsgruppe for person med null historikk`() { - val json = FileToJson.toJson("/arbeidssoker/formidlingshistorikk_null.json") - - mockServer.`when`( - HttpRequest - .request() - .withMethod("GET") - .withPath("/arena/api/v1/person/arbeidssoeker/formidlingshistorikk") - ) - .respond( - response() - .withStatusCode(200) - .withBody(json, MediaType.JSON_UTF_8) - ) - - formidlingsgruppeGateway.finnArbeissokerperioder( - Foedselsnummer("12345612345"), - Periode( - LocalDate.of(2020, 1, 10), - LocalDate.of(2020, 1, 11))) - } - - @Test - fun `skal gi empty for ukjent person`() { - mockServer.`when`( - HttpRequest - .request() - .withMethod("GET") - .withPath("/arena/api/v1/person/arbeidssoeker/formidlingshistorikk") - .withQueryStringParameter("fnr", "11118035157")) - .respond(response() - .withStatusCode(404)) - - val arbeidssokerperioder = formidlingsgruppeGateway.finnArbeissokerperioder( - Foedselsnummer("11118035157"), - Periode( - LocalDate.of(2020, 1, 10), - LocalDate.of(2020, 1, 11))) - - assertThat(arbeidssokerperioder.asList()).isEmpty() - } -} diff --git a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingshistorikkMapperTest.kt b/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingshistorikkMapperTest.kt deleted file mode 100644 index 13a1a4484..000000000 --- a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/formidlingsgruppe/adapter/FormidlingshistorikkMapperTest.kt +++ /dev/null @@ -1,49 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter - -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter.FormidlingshistorikkDto -import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.adapter.FormidlingshistorikkMapper -import no.nav.fo.veilarbregistrering.arbeidssoker.perioder.Arbeidssokerperiode -import no.nav.fo.veilarbregistrering.bruker.Periode -import org.junit.jupiter.api.Test -import java.time.LocalDate -import kotlin.test.assertEquals - -class FormidlingshistorikkMapperTest { - - @Test - fun `skal mappe Formidlingshistorikk med avsluttet periode`() { - val actualFormidlingshistorikk = FormidlingshistorikkDto( - "ARBS", - "2020-02-20 12:03:24", - LocalDate.of(2020, 1, 12), - LocalDate.of(2020, 2, 20) - ) - - val expectedArbeidssøkerperiode = Arbeidssokerperiode( - Periode( - LocalDate.of(2020, 1, 12), - LocalDate.of(2020, 2, 20) - ) - ) - assertEquals(expectedArbeidssøkerperiode, FormidlingshistorikkMapper.map(actualFormidlingshistorikk)) - } - - @Test - fun `skal mappe Formidlingshistorikk med åpen periode`() { - val actualFormidlingshistorikk2 = FormidlingshistorikkDto( - "ARBS", - "2020-03-12 14:23:42", - LocalDate.of(2020, 3, 12), - null - ) - - val expectedArbeidssøkerperiode2 = Arbeidssokerperiode( - Periode( - LocalDate.of(2020, 3, 12), - null - ) - ) - - assertEquals(expectedArbeidssøkerperiode2, FormidlingshistorikkMapper.map(actualFormidlingshistorikk2)) - } -} diff --git a/src/test/resources/arbeidsforhold/ordstoken.json b/src/test/resources/arbeidsforhold/ordstoken.json deleted file mode 100644 index 98dff2696..000000000 --- a/src/test/resources/arbeidsforhold/ordstoken.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "access_token": "ordstoken", - "token_type": "ords", - "expires_in": 123 -} \ No newline at end of file