-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Legg til endepunkt for å sjekke om foresatte har innsynsrett (#823)
* lag endepunkt for å avgjøre om fåresatte er har innsynsrett eller ikke * Lagt til tester for å finne ut alder av ekster bruker * Sørg for at test brukere får tilfeldig fnr * Rydda opp koden
- Loading branch information
1 parent
725b06e
commit b2e3c02
Showing
4 changed files
with
147 additions
and
2 deletions.
There are no files selected for viewing
49 changes: 49 additions & 0 deletions
49
src/main/kotlin/no/nav/veilarbaktivitet/foresatteinnsynsrett/InnsynrettController.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package no.nav.veilarbaktivitet.foresatteinnsynsrett | ||
|
||
import no.nav.poao.dab.spring_a2_annotations.auth.AuthorizeFnr | ||
import no.nav.poao.dab.spring_auth.IAuthService | ||
import org.springframework.http.HttpStatus | ||
import org.springframework.web.bind.annotation.GetMapping | ||
import org.springframework.web.bind.annotation.RequestMapping | ||
import org.springframework.web.bind.annotation.RestController | ||
import org.springframework.web.server.ResponseStatusException | ||
import java.time.LocalDate | ||
import java.time.Period | ||
|
||
|
||
@RestController | ||
@RequestMapping("/api/ekstern/innsynsrett") | ||
class InnsynrettController(private val authService: IAuthService) { | ||
|
||
@GetMapping() | ||
@AuthorizeFnr(auditlogMessage = "sjekker foresatte innsynsrett") | ||
fun foresatteHarInnsynsrett(): InnsynsrettDTO { | ||
val fnr = if (authService.erEksternBruker()) { | ||
authService.getLoggedInnUser() | ||
} else { | ||
throw ResponseStatusException(HttpStatus.FORBIDDEN) | ||
} | ||
|
||
return InnsynsrettDTO(foresatteHarInnsynsrett = isUnder18(fnr.get())) // Adjust return value as needed | ||
} | ||
|
||
data class InnsynsrettDTO( | ||
val foresatteHarInnsynsrett: Boolean | ||
) | ||
|
||
fun isUnder18(fnr: String): Boolean { | ||
val dag = fnr.substring(0, 2).toInt() | ||
val måned = fnr.substring(2, 4).toInt() | ||
val år = fnr.substring(4, 6).toInt() | ||
|
||
val indexTilSifferSomBestemerÅrHundre = 6 | ||
val århundre = if (Integer.parseInt(fnr[indexTilSifferSomBestemerÅrHundre].toString()) < 4) 1900 else 2000 | ||
val fødselsår = århundre + år | ||
|
||
val fødselsdato = LocalDate.of(fødselsår, måned, dag) | ||
val dagensdato = LocalDate.now() | ||
val alder = Period.between(fødselsdato, dagensdato).years | ||
|
||
return alder < 18 | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
89 changes: 89 additions & 0 deletions
89
src/test/kotlin/no/nav/veilarbaktivitet/foresatteinnsynsrett/InnsynrettControllerTest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
package no.nav.veilarbaktivitet.foresatteinnsynsrett | ||
|
||
import no.nav.veilarbaktivitet.SpringBootTestBase | ||
import no.nav.veilarbaktivitet.mock_nav_modell.BrukerOptions | ||
import org.assertj.core.api.Assertions.assertThat | ||
import org.junit.jupiter.api.Test | ||
|
||
|
||
import java.time.LocalDate | ||
|
||
|
||
internal class InnsynrettControllerTest: SpringBootTestBase() { | ||
@Test | ||
fun `for bruker som er over 18 har ikke foresatte innsynsrett`() { | ||
val fødselsdato = LocalDate.now().minusYears(18) | ||
val brukerOptions = BrukerOptions.happyBruker().toBuilder().fnr("${fødselsdato.tilFødselsDato()}60000").build() | ||
val bruker = navMockService.createHappyBruker(brukerOptions) | ||
|
||
val response = bruker | ||
.createRequest() | ||
.get( "http://localhost:$port/veilarbaktivitet/api/ekstern/innsynsrett") | ||
.then() | ||
.assertThat() | ||
.statusCode(200) | ||
.extract() | ||
.response() | ||
.`as`(InnsynrettController.InnsynsrettDTO::class.java) | ||
|
||
assertThat(response.foresatteHarInnsynsrett).isFalse() | ||
} | ||
|
||
@Test | ||
fun `for bruker som er under 18 har foresatte innsynsrett`() { | ||
val fødselsdato = LocalDate.now().minusYears(18).plusDays(1) | ||
val brukerOptions = BrukerOptions.happyBruker().toBuilder().fnr("${fødselsdato.tilFødselsDato()}60000").build() | ||
val bruker = navMockService.createHappyBruker(brukerOptions) | ||
|
||
val response = bruker | ||
.createRequest() | ||
.get( "http://localhost:$port/veilarbaktivitet/api/ekstern/innsynsrett") | ||
.then() | ||
.assertThat() | ||
.statusCode(200) | ||
.extract() | ||
.response() | ||
.`as`(InnsynrettController.InnsynsrettDTO::class.java) | ||
|
||
assertThat(response.foresatteHarInnsynsrett).isTrue() | ||
} | ||
|
||
@Test | ||
fun `for bruker som er født på 1900 tallet har foresatte aldri innsynsrett`() { | ||
|
||
val brukerOptions = BrukerOptions.happyBruker().toBuilder().fnr("01012320000").build() | ||
val bruker = navMockService.createHappyBruker(brukerOptions) | ||
|
||
val response = bruker | ||
.createRequest() | ||
.get( "http://localhost:$port/veilarbaktivitet/api/ekstern/innsynsrett") | ||
.then() | ||
.assertThat() | ||
.statusCode(200) | ||
.extract() | ||
.response() | ||
.`as`(InnsynrettController.InnsynsrettDTO::class.java) | ||
|
||
assertThat(response.foresatteHarInnsynsrett).isFalse() | ||
} | ||
|
||
@Test | ||
fun `veilleder skal ikke kunne sjekke om foresatte har innsynsrett`() { | ||
val bruker = navMockService.createHappyBruker() | ||
val veileder = navMockService.createVeileder("Z123456" ,bruker) | ||
|
||
veileder | ||
.createRequest() | ||
.get( "http://localhost:$port/veilarbaktivitet/api/ekstern/innsynsrett") | ||
.then() | ||
.assertThat() | ||
.statusCode(403) | ||
} | ||
|
||
fun LocalDate.tilFødselsDato(): String { | ||
val dag = this.dayOfMonth.toString().padStart(2, '0') | ||
val måned = this.monthValue.toString().padStart(2, '0') | ||
val år = this.year.toString().substring(2) | ||
return "$dag$måned$år" | ||
} | ||
} |