Skip to content

Commit

Permalink
Merge pull request #384 from navikt/oppdater_tilganger_felter_cleanup
Browse files Browse the repository at this point in the history
Oppdater tilganger felter cleanup
  • Loading branch information
kenglxn authored Nov 1, 2024
2 parents fb404ad + c5a1f57 commit cc5b8a5
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 69 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -87,38 +86,24 @@ data class AltinnTilganger(
) {
data class AltinnTilgang(
val orgnr: String,
val navn: String,
val organisasjonsform: String,
val altinn3Tilganger: Set<String>,
val altinn2Tilganger: Set<String>,
val underenheter: List<AltinnTilgang>,
val navn: String,
val organisasjonsform: String,
) {
val orgNr = orgnr
val name = navn
val organizationForm = organisasjonsform
}
)

@get:JsonIgnore
val organisasjonerFlattened : List<Organisasjon>
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<Organisasjon> {
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 <T> flatten(
e: AltinnTilgang,
mapFn: (AltinnTilgang) -> T?
): List<T> = listOfNotNull(
mapFn(e)
) + e.underenheter.flatMap { flatten(it, mapFn) }
Original file line number Diff line number Diff line change
Expand Up @@ -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<List<Organisasjon>>(
organisasjonerJson.inputStream.readAllBytes()
)
)
`when`(
it.hentAltinnTilganger()
).thenReturn(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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<Arguments> {
return listOf<Arguments>(
Arguments.of("4936", "1", 1),
Arguments.of("4936", "2", 0),
)
}
}
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,15 +155,9 @@ class UserInfoControllerTest {
"altinn2Tilganger": [
"3403:1"
],
"underenheter": [],
"orgNr": "10",
"name": "underenhet",
"organizationForm": "BEDR"
"underenheter": []
}
],
"orgNr": "1",
"name": "overenhet",
"organizationForm": "AS"
]
}
],
"tilganger": {
Expand Down

0 comments on commit cc5b8a5

Please sign in to comment.