Skip to content

Commit 5d785ee

Browse files
committed
Oppdaterte feilhåndtering til å stemme med RCF, endret bekreftelse-api til å benytte generert API modell
1 parent fc772a6 commit 5d785ee

39 files changed

+279
-183
lines changed

Diff for: apps/bekreftelse-api/build.gradle.kts

+43-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2-
31
plugins {
42
kotlin("jvm")
53
id("org.openapi.generator")
@@ -90,6 +88,22 @@ application {
9088
mainClass.set("no.nav.paw.bekreftelse.api.ApplicationKt")
9189
}
9290

91+
sourceSets {
92+
main {
93+
kotlin {
94+
srcDir("${layout.buildDirectory.get()}/generated/src/main/kotlin")
95+
}
96+
}
97+
}
98+
99+
tasks.named("compileKotlin") {
100+
dependsOn("openApiValidate", "openApiGenerate")
101+
}
102+
103+
tasks.named("compileTestKotlin") {
104+
dependsOn("openApiValidate", "openApiGenerate")
105+
}
106+
93107
tasks.withType<Test>().configureEach {
94108
useJUnitPlatform()
95109
}
@@ -102,6 +116,33 @@ tasks.withType(Jar::class) {
102116
}
103117
}
104118

119+
val openApiDocFile = "${layout.projectDirectory}/src/main/resources/openapi/documentation.yaml"
120+
121+
openApiValidate {
122+
inputSpec = openApiDocFile
123+
}
124+
125+
openApiGenerate {
126+
generatorName = "kotlin"
127+
inputSpec = openApiDocFile
128+
outputDir = "${layout.buildDirectory.get()}/generated/"
129+
packageName = "no.nav.paw.bekreftelse.api"
130+
configOptions = mapOf(
131+
"serializationLibrary" to "jackson",
132+
"enumPropertyNaming" to "original",
133+
)
134+
globalProperties = mapOf(
135+
"apis" to "none",
136+
"models" to ""
137+
)
138+
typeMappings = mapOf(
139+
"DateTime" to "Instant"
140+
)
141+
importMappings = mapOf(
142+
"Instant" to "java.time.Instant"
143+
)
144+
}
145+
105146
jib {
106147
from.image = "$baseImage:$jvmMajorVersion"
107148
to.image = "${image ?: project.name}:${project.version}"

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/context/JsonbColumnType.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package no.nav.paw.bekreftelse.api.context
22

3-
import no.nav.paw.bekreftelse.api.model.BekreftelserTable.registerColumn
3+
import no.nav.paw.bekreftelse.api.models.BekreftelserTable.registerColumn
44
import org.jetbrains.exposed.sql.IColumnType
55
import org.postgresql.util.PGobject
66

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/exception/DataIkkeFunnetForIdException.kt

+6-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ package no.nav.paw.bekreftelse.api.exception
22

33
import io.ktor.http.HttpStatusCode
44
import no.nav.paw.error.exception.ServerResponseException
5+
import no.nav.paw.error.model.ErrorType
56

67
class DataIkkeFunnetForIdException(message: String) :
7-
ServerResponseException(HttpStatusCode.BadRequest, "PAW_DATA_IKKE_FUNNET_FOR_ID", message)
8+
ServerResponseException(
9+
HttpStatusCode.BadRequest,
10+
ErrorType.domain("bekreftelse").error("ikke-funnet-for-id").build(),
11+
message
12+
)

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/exception/DataTilhoererIkkeBrukerException.kt

+6-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ package no.nav.paw.bekreftelse.api.exception
22

33
import io.ktor.http.HttpStatusCode
44
import no.nav.paw.error.exception.ServerResponseException
5+
import no.nav.paw.error.model.ErrorType
56

67
class DataTilhoererIkkeBrukerException(message: String) :
7-
ServerResponseException(HttpStatusCode.BadRequest, "PAW_DATA_TILHOERER_IKKE_BRUKER", message)
8+
ServerResponseException(
9+
HttpStatusCode.BadRequest,
10+
ErrorType.domain("bekreftelse").error("tilhører-ikke-bruker").build(),
11+
message
12+
)

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/model/MottaBekreftelseRequest.kt

-10
This file was deleted.

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/model/TilgjengeligBekreftelse.kt

-11
This file was deleted.

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/model/TilgjengeligeBekreftelserRequest.kt

-5
This file was deleted.

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/model/BekreftelseRow.kt renamed to apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/models/BekreftelseRow.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.nav.paw.bekreftelse.api.model
1+
package no.nav.paw.bekreftelse.api.models
22

33
import no.nav.paw.bekreftelse.internehendelser.BekreftelseTilgjengelig
44
import org.jetbrains.exposed.sql.ResultRow

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/model/BekreftelserTable.kt renamed to apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/models/BekreftelserTable.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.nav.paw.bekreftelse.api.model
1+
package no.nav.paw.bekreftelse.api.models
22

33
import no.nav.paw.bekreftelse.api.utils.JsonbSerde
44
import org.jetbrains.exposed.sql.Table

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/model/Converters.kt renamed to apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/models/Converters.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package no.nav.paw.bekreftelse.api.model
1+
package no.nav.paw.bekreftelse.api.models
22

33
import no.nav.paw.bekreftelse.internehendelser.BekreftelseTilgjengelig
44
import no.nav.paw.bekreftelse.melding.v1.Bekreftelse
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
package no.nav.paw.bekreftelse.api.model
1+
package no.nav.paw.bekreftelse.api.models
22

3-
typealias TilgjengeligBekreftelserResponse = List<TilgjengeligBekreftelse>
3+
typealias TilgjengeligBekreftelserResponse = List<TilgjengeligBekreftelse>

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/policy/SluttbrukerAccessPolicy.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class SluttbrukerAccessPolicy(
2020
is Sluttbruker -> {
2121
// TODO Håndtere verge
2222
if (identitetsnummer != null && identitetsnummer != bruker.ident) {
23-
return Deny("Sluttbruke kan ikke hente data for annen bruker")
23+
return Deny("Sluttbruker har ikke tilgang til data for annen bruker")
2424
}
2525
return Permit("Sluttbruker har tilgang")
2626
}

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/repository/BekreftelseRepository.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package no.nav.paw.bekreftelse.api.repository
22

3-
import no.nav.paw.bekreftelse.api.model.BekreftelseRow
4-
import no.nav.paw.bekreftelse.api.model.BekreftelserTable
5-
import no.nav.paw.bekreftelse.api.model.asBekreftelseRow
3+
import no.nav.paw.bekreftelse.api.models.BekreftelseRow
4+
import no.nav.paw.bekreftelse.api.models.BekreftelserTable
5+
import no.nav.paw.bekreftelse.api.models.asBekreftelseRow
66
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
77
import org.jetbrains.exposed.sql.and
88
import org.jetbrains.exposed.sql.deleteWhere

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/routes/BekreftelseRoutes.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import io.ktor.server.routing.get
99
import io.ktor.server.routing.post
1010
import io.ktor.server.routing.route
1111
import no.nav.paw.bekreftelse.api.context.ApplicationContext
12-
import no.nav.paw.bekreftelse.api.model.MottaBekreftelseRequest
13-
import no.nav.paw.bekreftelse.api.model.TilgjengeligeBekreftelserRequest
12+
import no.nav.paw.bekreftelse.api.models.MottaBekreftelseRequest
13+
import no.nav.paw.bekreftelse.api.models.TilgjengeligeBekreftelserRequest
1414
import no.nav.paw.bekreftelse.api.utils.hentSluttbrukerIdentitet
1515
import no.nav.paw.security.authentication.model.asIdentitetsnummer
1616
import no.nav.paw.security.authentication.token.AzureAd

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/routes/SwaggerRoutes.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ import io.ktor.server.plugins.swagger.swaggerUI
44
import io.ktor.server.routing.Route
55

66
fun Route.swaggerRoutes() {
7-
swaggerUI(path = "docs", swaggerFile = "openapi/api.yaml")
7+
swaggerUI(path = "docs", swaggerFile = "openapi/documentation.yaml")
88
}

Diff for: apps/bekreftelse-api/src/main/kotlin/no/nav/paw/bekreftelse/api/services/BekreftelseService.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import no.nav.paw.bekreftelse.api.config.ApplicationConfig
88
import no.nav.paw.bekreftelse.api.config.ServerConfig
99
import no.nav.paw.bekreftelse.api.exception.DataIkkeFunnetForIdException
1010
import no.nav.paw.bekreftelse.api.exception.DataTilhoererIkkeBrukerException
11-
import no.nav.paw.bekreftelse.api.model.MottaBekreftelseRequest
12-
import no.nav.paw.bekreftelse.api.model.TilgjengeligBekreftelserResponse
13-
import no.nav.paw.bekreftelse.api.model.asBekreftelse
14-
import no.nav.paw.bekreftelse.api.model.asBekreftelseBruker
15-
import no.nav.paw.bekreftelse.api.model.asBekreftelseRow
16-
import no.nav.paw.bekreftelse.api.model.asTilgjengeligBekreftelse
11+
import no.nav.paw.bekreftelse.api.models.MottaBekreftelseRequest
12+
import no.nav.paw.bekreftelse.api.models.TilgjengeligBekreftelserResponse
13+
import no.nav.paw.bekreftelse.api.models.asBekreftelse
14+
import no.nav.paw.bekreftelse.api.models.asBekreftelseBruker
15+
import no.nav.paw.bekreftelse.api.models.asBekreftelseRow
16+
import no.nav.paw.bekreftelse.api.models.asTilgjengeligBekreftelse
1717
import no.nav.paw.bekreftelse.api.producer.BekreftelseKafkaProducer
1818
import no.nav.paw.bekreftelse.api.repository.BekreftelseRepository
1919
import no.nav.paw.bekreftelse.api.utils.buildLogger

Diff for: apps/bekreftelse-api/src/main/resources/openapi/api.yaml renamed to apps/bekreftelse-api/src/main/resources/openapi/documentation.yaml

+32-15
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ servers:
1111
paths:
1212
/api/v1/tilgjengelige-bekreftelser:
1313
get:
14+
operationId: getTilgjengeligBekreftelser
1415
description: "Endepunkt for å hende tilgjengelige bekreftelser for innlogget sluttbruker"
1516
parameters:
1617
- name: "traceparent"
@@ -34,6 +35,7 @@ paths:
3435
schema:
3536
$ref: "#/components/schemas/ProblemDetails"
3637
post:
38+
operationId: postTilgjengeligBekreftelser
3739
description: "Endepunkt for å hende tilgjengelige bekreftelser for en arbeidssøker"
3840
parameters:
3941
- name: "traceparent"
@@ -56,6 +58,12 @@ paths:
5658
application/json:
5759
schema:
5860
$ref: "#/components/schemas/TilgjengeligBekreftelserResponse"
61+
"400":
62+
description: "Bad Request"
63+
content:
64+
application/json:
65+
schema:
66+
$ref: "#/components/schemas/ProblemDetails"
5967
"403":
6068
description: "Forbidden"
6169
content:
@@ -64,6 +72,7 @@ paths:
6472
$ref: "#/components/schemas/ProblemDetails"
6573
/api/v1/bekreftelse:
6674
post:
75+
operationId: postMottaBekreftelse
6776
description: "Endepunkt for å registrere en bekreftelse for en arbeidssøker"
6877
parameters:
6978
- name: "traceparent"
@@ -77,11 +86,17 @@ paths:
7786
content:
7887
application/json:
7988
schema:
80-
$ref: "#/components/schemas/BekreftelseRequest"
89+
$ref: "#/components/schemas/MottaBekreftelseRequest"
8190
required: true
8291
responses:
8392
"200":
8493
description: "OK"
94+
"400":
95+
description: "Bad Request"
96+
content:
97+
application/json:
98+
schema:
99+
$ref: "#/components/schemas/ProblemDetails"
85100
"403":
86101
description: "Forbidden"
87102
content:
@@ -90,6 +105,7 @@ paths:
90105
$ref: "#/components/schemas/ProblemDetails"
91106
/internal/isAlive:
92107
get:
108+
operationId: getIsAlive
93109
description: "Service is alive probe"
94110
responses:
95111
"503":
@@ -106,6 +122,7 @@ paths:
106122
$ref: "#/components/schemas/HealthStatus"
107123
/internal/isReady:
108124
get:
125+
operationId: getIsReady
109126
description: "Service is ready probe"
110127
responses:
111128
"503":
@@ -122,6 +139,7 @@ paths:
122139
$ref: "#/components/schemas/HealthStatus"
123140
/internal/metrics:
124141
get:
142+
operationId: getMetrics
125143
description: "Prometheus metrics"
126144
responses:
127145
"200":
@@ -137,8 +155,6 @@ components:
137155
properties:
138156
identitetsnummer:
139157
type: "string"
140-
required:
141-
- "identitetsnummer"
142158
example:
143159
identitetsnummer: "01017012345"
144160
TilgjengeligBekreftelserResponse:
@@ -170,7 +186,7 @@ components:
170186
bekreftelseId: "ec6b5a10-b67c-42c1-b6e7-a642c36bd78e"
171187
gjelderFra: "2020-01-01T11:22:33.444Z"
172188
gjelderTil: "2020-02-02T11:22:33.444Z"
173-
BekreftelseRequest:
189+
MottaBekreftelseRequest:
174190
type: "object"
175191
properties:
176192
identitetsnummer:
@@ -183,7 +199,6 @@ components:
183199
vilFortsetteSomArbeidssoeker:
184200
type: "boolean"
185201
required:
186-
- "identitetsnummer"
187202
- "bekreftelseId"
188203
- "harJobbetIDennePerioden"
189204
- "vilFortsetteSomArbeidssoeker"
@@ -195,31 +210,33 @@ components:
195210
ProblemDetails:
196211
type: object
197212
properties:
198-
type:
213+
id:
199214
type: "string"
200-
code:
215+
format: "uuid"
216+
type:
201217
type: "string"
218+
format: "uri"
219+
status:
220+
type: "integer"
202221
title:
203222
type: "string"
204-
status:
205-
type: "number"
206223
detail:
207224
type: "string"
208225
instance:
209226
type: "string"
210227
required:
228+
- id
211229
- type
212-
- code
213-
- title
214230
- status
231+
- title
215232
- detail
216233
- instance
217234
example:
218-
type: "about:blank"
219-
code: "BRUKER_HAR_IKKE_TILGANG"
220-
title: "Forbidden"
235+
id: "3cd944fb-6187-41a8-91b2-b172f2baf890"
236+
type: "urn:paw:sikkerhet:bruker-har-ikke-tilgang"
221237
status: 403
222-
detail: "Access denied"
238+
title: "Forbidden"
239+
detail: "Bruker har ikke tilgang"
223240
instance: "/api/endpoint"
224241
HealthStatus:
225242
type: "string"

Diff for: apps/bekreftelse-api/src/test/kotlin/no/nav/paw/bekreftelse/api/plugin/TestDataPlugin.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import io.ktor.server.application.hooks.MonitoringEvent
77
import io.ktor.server.application.install
88
import io.ktor.server.application.log
99
import io.ktor.util.KtorDsl
10-
import no.nav.paw.bekreftelse.api.model.BekreftelseRow
10+
import no.nav.paw.bekreftelse.api.models.BekreftelseRow
1111
import no.nav.paw.bekreftelse.api.plugins.custom.FlywayMigrationCompleted
1212
import no.nav.paw.bekreftelse.api.repository.BekreftelseRepository
1313
import no.nav.paw.bekreftelse.api.test.TestData

0 commit comments

Comments
 (0)