diff --git a/src/main/kotlin/no/nav/arbeidsgiver/min_side/services/altinn/AltinnService.kt b/src/main/kotlin/no/nav/arbeidsgiver/min_side/services/altinn/AltinnService.kt index 44edf428..fb9e3d63 100644 --- a/src/main/kotlin/no/nav/arbeidsgiver/min_side/services/altinn/AltinnService.kt +++ b/src/main/kotlin/no/nav/arbeidsgiver/min_side/services/altinn/AltinnService.kt @@ -7,6 +7,7 @@ import com.github.benmanes.caffeine.cache.Caffeine import no.nav.arbeidsgiver.min_side.clients.retryInterceptor import no.nav.arbeidsgiver.min_side.controller.AuthenticatedUserHolder import no.nav.arbeidsgiver.min_side.models.Organisasjon +import no.nav.arbeidsgiver.min_side.services.altinn.AltinnTilganger.AltinnTilgang import no.nav.arbeidsgiver.min_side.services.tokenExchange.TokenExchangeClient import org.springframework.beans.factory.annotation.Value import org.springframework.boot.web.client.RestTemplateBuilder @@ -51,8 +52,6 @@ class AltinnService( } } - fun hentOrganisasjoner() = hentAltinnTilganger().organisasjonerFlattened - fun harTilgang(orgnr: String, tjeneste: String) = hentAltinnTilganger().harTilgang(orgnr, tjeneste) fun harOrganisasjon(orgnr: String) = hentAltinnTilganger().harOrganisasjon(orgnr) @@ -87,38 +86,24 @@ data class AltinnTilganger( ) { data class AltinnTilgang( val orgnr: String, + val navn: String, + val organisasjonsform: String, val altinn3Tilganger: Set, val altinn2Tilganger: Set, val underenheter: List, - val navn: String, - val organisasjonsform: String, - ) { - val orgNr = orgnr - val name = navn - val organizationForm = organisasjonsform - } + ) @get:JsonIgnore - val organisasjonerFlattened : List - get() = hierarki.flatMap { flattenUnderOrganisasjoner(it) } + val orgnrFlattened = hierarki.flatMap { flatten(it) { e -> e.orgnr } } - fun harOrganisasjon(orgnr: String) = - organisasjonerFlattened.any { it.organizationNumber == orgnr } + fun harOrganisasjon(orgnr: String) = orgnrFlattened.any { it == orgnr } fun harTilgang(orgnr: String, tjeneste: String) = orgNrTilTilganger[orgnr]?.contains(tjeneste) ?: false - - private fun flattenUnderOrganisasjoner( - altinnTilgang: AltinnTilgang, - parentOrgNr: String? = null - ): List { - val parent = Organisasjon( - name = altinnTilgang.name, - parentOrganizationNumber = parentOrgNr, - organizationForm = altinnTilgang.organizationForm, - organizationNumber = altinnTilgang.orgNr - ) - val children = altinnTilgang.underenheter.flatMap { flattenUnderOrganisasjoner(it, parent.organizationNumber) } - return listOf(parent) + children - } } +private fun flatten( + e: AltinnTilgang, + mapFn: (AltinnTilgang) -> T? +): List = listOfNotNull( + mapFn(e) +) + e.underenheter.flatMap { flatten(it, mapFn) } diff --git a/src/test/kotlin/no/nav/arbeidsgiver/min_side/LocalDittNavArbeidsgiverApplication.kt b/src/test/kotlin/no/nav/arbeidsgiver/min_side/LocalDittNavArbeidsgiverApplication.kt index f71dbc52..0815658e 100644 --- a/src/test/kotlin/no/nav/arbeidsgiver/min_side/LocalDittNavArbeidsgiverApplication.kt +++ b/src/test/kotlin/no/nav/arbeidsgiver/min_side/LocalDittNavArbeidsgiverApplication.kt @@ -33,12 +33,6 @@ class LocalDittNavArbeidsgiverApplication : DittNavArbeidsgiverApplication() { @Value("classpath:mock/altinntilganger.json") altinntilganger: Resource, ): AltinnService { return mock(AltinnService::class.java).also { - `when`(it.hentOrganisasjoner()) - .thenReturn( - objectMapper.readValue>( - organisasjonerJson.inputStream.readAllBytes() - ) - ) `when`( it.hentAltinnTilganger() ).thenReturn( diff --git a/src/test/kotlin/no/nav/arbeidsgiver/min_side/controller/AltinnTilgangSoknadControllerTest.kt b/src/test/kotlin/no/nav/arbeidsgiver/min_side/controller/AltinnTilgangSoknadControllerTest.kt index 2ba8bc4c..74453130 100644 --- a/src/test/kotlin/no/nav/arbeidsgiver/min_side/controller/AltinnTilgangSoknadControllerTest.kt +++ b/src/test/kotlin/no/nav/arbeidsgiver/min_side/controller/AltinnTilgangSoknadControllerTest.kt @@ -5,7 +5,6 @@ import no.nav.arbeidsgiver.min_side.config.SecurityConfig import no.nav.arbeidsgiver.min_side.controller.SecurityMockMvcUtil.Companion.jwtWithPid import no.nav.arbeidsgiver.min_side.models.AltinnTilgangssøknad import no.nav.arbeidsgiver.min_side.models.AltinnTilgangssøknadsskjema -import no.nav.arbeidsgiver.min_side.models.Organisasjon import no.nav.arbeidsgiver.min_side.services.altinn.AltinnService import org.junit.jupiter.api.Test import org.mockito.Mockito.`when` @@ -144,11 +143,7 @@ class AltinnTilgangSoknadControllerTest { serviceEdition = AltinnTilgangSoknadController.tjenester.first().second, ) - `when`(altinnService.hentOrganisasjoner()).thenReturn( - listOf( - Organisasjon(organizationNumber = "314", name = "Organisasjon", organizationForm = "BEDR") - ) - ) + `when`(altinnService.harOrganisasjon("314")).thenReturn(true) `when`(altinnTilgangssøknadClient.sendSøknad("42", skjema)).thenThrow( HttpClientErrorException( org.springframework.http.HttpStatus.BAD_REQUEST, diff --git a/src/test/kotlin/no/nav/arbeidsgiver/min_side/services/altinn/AltinnTilgangerServiceTest.kt b/src/test/kotlin/no/nav/arbeidsgiver/min_side/services/altinn/AltinnTilgangerServiceTest.kt index afc34a10..b21d7625 100644 --- a/src/test/kotlin/no/nav/arbeidsgiver/min_side/services/altinn/AltinnTilgangerServiceTest.kt +++ b/src/test/kotlin/no/nav/arbeidsgiver/min_side/services/altinn/AltinnTilgangerServiceTest.kt @@ -1,9 +1,10 @@ package no.nav.arbeidsgiver.min_side.services.altinn import no.nav.arbeidsgiver.min_side.controller.AuthenticatedUserHolder +import no.nav.arbeidsgiver.min_side.services.altinn.AltinnTilganger.AltinnTilgang import no.nav.arbeidsgiver.min_side.services.tokenExchange.TokenExchangeClient import no.nav.arbeidsgiver.min_side.services.tokenExchange.TokenXToken -import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Test import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.Arguments @@ -50,17 +51,42 @@ class AltinnTilgangerServiceTest { withSuccess(altinnTilgangerResponse, APPLICATION_JSON) ) - val organisasjoner = altinnTilgangerService.hentOrganisasjoner() - - assertTrue(organisasjoner.size == 2) - - val parent = organisasjoner.first({ it.organizationNumber == "810825472" }) - val underenhet = organisasjoner.first({ it.organizationNumber == "910825496" }) - - assertTrue(parent.name == "Arbeids- og Velferdsetaten") - assertTrue(underenhet.name == "SLEMMESTAD OG STAVERN REGNSKAP") - assertTrue(parent.organizationForm == "ORGL") - assertTrue(underenhet.organizationForm == "BEDR") + val tilganger = altinnTilgangerService.hentAltinnTilganger() + + assertFalse(tilganger.isError) + assertTrue(tilganger.hierarki.size == 1) + assertEquals( + AltinnTilganger( + isError = false, + hierarki = listOf( + AltinnTilgang( + orgnr = "810825472", + navn = "Arbeids- og Velferdsetaten", + organisasjonsform = "ORGL", + altinn3Tilganger = emptySet(), + altinn2Tilganger = emptySet(), + underenheter = listOf( + AltinnTilgang( + orgnr = "910825496", + navn = "SLEMMESTAD OG STAVERN REGNSKAP", + organisasjonsform = "BEDR", + altinn3Tilganger = setOf("test-fager"), + altinn2Tilganger = setOf("4936:1"), + underenheter = emptyList(), + ) + ) + ) + ), + orgNrTilTilganger = mapOf( + "910825496" to setOf("test-fager", "4936:1") + ), + tilgangTilOrgNr = mapOf( + "test-fager" to setOf("910825496"), + "4936:1" to setOf("910825496") + ) + ), + tilganger, + ) } @Test @@ -80,16 +106,6 @@ class AltinnTilgangerServiceTest { val organisasjoner = altinnTilgangerService.hentAltinnTilganger() assertTrue(organisasjoner.tilgangTilOrgNr.containsKey("4936:1")) } - - companion object { - @JvmStatic - fun `basert på tilgagner testdata`(): List { - return listOf( - Arguments.of("4936", "1", 1), - Arguments.of("4936", "2", 0), - ) - } - } } diff --git a/src/test/kotlin/no/nav/arbeidsgiver/min_side/userinfo/UserInfoControllerTest.kt b/src/test/kotlin/no/nav/arbeidsgiver/min_side/userinfo/UserInfoControllerTest.kt index bf6e931a..bf0b4c5f 100644 --- a/src/test/kotlin/no/nav/arbeidsgiver/min_side/userinfo/UserInfoControllerTest.kt +++ b/src/test/kotlin/no/nav/arbeidsgiver/min_side/userinfo/UserInfoControllerTest.kt @@ -155,15 +155,9 @@ class UserInfoControllerTest { "altinn2Tilganger": [ "3403:1" ], - "underenheter": [], - "orgNr": "10", - "name": "underenhet", - "organizationForm": "BEDR" + "underenheter": [] } - ], - "orgNr": "1", - "name": "overenhet", - "organizationForm": "AS" + ] } ], "tilganger": {