Skip to content

Commit 340f3e9

Browse files
committed
Legg til aktor id route & tillat ident i prod
1 parent 4c550a1 commit 340f3e9

File tree

5 files changed

+74
-11
lines changed

5 files changed

+74
-11
lines changed

.nais/prod.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ spec:
6969
namespace: poao
7070
env:
7171
- name: IDENT_ALLOW_LIST
72-
value: "R154727,R156418,R158345,R158346,R160569,R165950,R165951,R165952,R150818,R150819,R155645,R162552,D159483,U143410"
72+
value: "R154727,R156418,R158345,R158346,R160569,R165950,R165951,R165952,R150818,R150819,R155645,R162552,D159483,U143410,R172987"
7373
- name: OPPFOLGING_URL
7474
value: "http://veilarboppfolging.poao/veilarboppfolging/api"
7575
- name: OPPFOLGING_SCOPE

src/main/kotlin/no/nav/api/pdl/PdlRoutes.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@ fun Route.configurePdlRoutes(pdlService: PdlService) {
2121
val fnr = call.deserializeFnr() ?: return@post call.respond(HttpStatusCode.BadRequest)
2222
call.respond(pdlService.hentPersonalia(fnr, payload))
2323
}
24+
route("aktorid") {
25+
install(NotarizedRoute()) {
26+
post = ApiV2.hentAktorId
27+
}
28+
post {
29+
val token = call.getJWT()
30+
val fnr = call.deserializeFnr() ?: return@post call.respond(HttpStatusCode.BadRequest)
31+
call.respond(pdlService.hentAktorid(fnr, token))
32+
}
33+
}
2434
}
2535
}
2636

@@ -41,6 +51,21 @@ private object ApiV2 {
4151
tags("PDL")
4252
canRespond(CommonModels.standardResponses)
4353
}
54+
55+
val hentAktorId = PostInfo.builder {
56+
summary("Hent aktor ID")
57+
description("Henter aktorid for en person")
58+
request {
59+
requestType(typeOf<FnrRequest>())
60+
description("Brukers ident")
61+
}
62+
response {
63+
responseCode(HttpStatusCode.OK)
64+
responseType(typeOf<PdlPersonalia>())
65+
description("identens tilhørende aktorid")
66+
}
67+
68+
}
4469
}
4570

4671
@Serializable

src/main/resources/pdl/schema.graphqls

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -749,7 +749,7 @@ input Criterion {
749749

750750
input SearchRule {
751751
# Sjekker om feltet finnes / at det ikke har en null verdi.
752-
exists:String
752+
exists:Boolean
753753
# Filtrerer bort treff hvor felt inneholder input verdi
754754
notEquals:String
755755
# Begrenser treff til kun de hvor felt har input verdi
@@ -759,7 +759,7 @@ input SearchRule {
759759
# Søk som gir treff også for små variasjoner i skrivemåte
760760
fuzzy:String
761761
# Søk som gir tilfeldig poengsum til hvert treff (kun ment til generering av testdata)
762-
random:String
762+
random:Float
763763
# Bruk "?" som wildcard for enkelt tegn, og "*" som wildcard for 0 eller flere tegn.
764764
wildcard:String
765765
# Gir treff når opgitt feltstarter med opgitt verdi.

src/main/resources/saf/schema.graphqls

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -528,17 +528,16 @@ type Dokumentvariant {
528528
filnavn: String
529529

530530
# Unik identifikator per fil.
531-
# * NB: Feltet skal kun brukes etter avtale med Team Dokument.
532-
filuuid: String @deprecated(reason: "Feltet er deprekert og vil bli fjernet i fremtiden. Feltet skal kun brukes etter avtale med Team Dokument.")
531+
# * NB: Feltet skal kun brukes etter avtale med Team Dokumentløsninger.
532+
filuuid: String @deprecated(reason: "Feltet er deprekert og vil bli fjernet i fremtiden. Feltet skal kun brukes etter avtale med Team Dokumentløsninger.")
533533

534-
# Dokumentets filtype, f.eks. PDFA, XML eller JPG. Gyldige verdier finnes på siden Fagarkiv - Filtype.
535-
# * NB: Informasjonen er ikke garantert å samsvare med dokumentets faktiske filtype, da dette ikke valideres under arkivering.
536-
# * NB: Verdien 'PDFA' mappes til 'PDF'
537-
# * NB: Feltet skal kun brukes etter avtale med Team Dokument.
538-
filtype: String @deprecated(reason: "Feltet er deprekert og er kun til internt bruk. Feltet skal kun brukes etter avtale med Team Dokument.")
534+
# Dokumentets filtype. PDF, JPEG, PNG, TIFF, XLSX, JSON, XML, AXML, DXML, RTF er verdier som kan returneres.
535+
# * Gyldige verdier finnes på siden Fagarkiv - Filtype (confluence). NB: Verdien 'PDFA' mappes til 'PDF'.
536+
# * Vær oppmerksom på at dette ikke er garantert å samsvare med dokumentets faktiske filtype, da feltet lenge ikke ble sjekket opp mot filinnholdet.
537+
filtype: String
539538

540539
# Dokumentets filstørrelse i bytes.
541-
filstoerrelse: Int @deprecated(reason: "Feltet er deprekert og er kun til internt bruk. Feltet skal kun brukes etter avtale med Team Dokument.")
540+
filstoerrelse: Int @deprecated(reason: "Feltet er deprekert og er kun til internt bruk. Feltet skal kun brukes etter avtale med Team Dokumentløsninger.")
542541

543542
# Sier hvorvidt saksbehandler som gjør oppslaget vil få tilgang til å åpne denne dokumentvarianten.
544543
# * Dersom verdien er false, vil tilgang bli avslått dersom saksbehandler forsøker å åpne dokumentet.

src/test/kotlin/no/nav/api/pdl/PdlTest.kt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,43 @@ internal class PdlTest {
5454
assertEquals(1, person.data?.hentPerson?.foedselsdato?.size)
5555
assertEquals(LocalDate(2020, 6, 6), person.data?.hentPerson?.foedselsdato?.get(0)?.foedselsdato)
5656
}
57+
58+
@Test
59+
fun `should be able to get aktorID for ident`() =
60+
runBlocking {
61+
val mockEngine =
62+
MockEngine { request ->
63+
val body = (request.body as TextContent).text
64+
assertTrue(body.contains("variables"))
65+
assertTrue(body.contains("hentIdenter"))
66+
respond(
67+
status = HttpStatusCode.OK,
68+
headers =
69+
headersOf(
70+
HttpHeaders.ContentType,
71+
"application/json",
72+
),
73+
content =
74+
"""
75+
{
76+
"data": {
77+
"hentIdenter": {
78+
"identer": [
79+
{ "ident": "123456789" }
80+
]
81+
}
82+
}
83+
}
84+
""".trimIndent(),
85+
)
86+
}
87+
val tokenClient = mockk<BoundedOnBehalfOfTokenClient>()
88+
every { tokenClient.exchangeOnBehalfOfToken("token") } returns "new_token"
89+
90+
val pdlClient = PdlClient("http://no.no", tokenClient, mockEngine)
91+
val identer = pdlClient.hentAktorid("10108000398", "token")
92+
93+
assertEquals(1, identer.data?.hentIdenter?.identer?.size)
94+
assertEquals("123456789", identer.data?.hentIdenter?.identer?.get(0)?.ident)
95+
}
5796
}

0 commit comments

Comments
 (0)