Skip to content

Commit

Permalink
chore: bumped to ktor 3.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
MikAoJk committed Nov 7, 2024
1 parent 610cd05 commit 8c4d2fb
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 50 deletions.
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ val caffeineVersion = "3.1.8"
val coroutinesVersion = "1.9.0"
val jacksonVersion = "2.18.0"
val kluentVersion = "1.73"
val ktorVersion = "2.3.12"
val ktorVersion = "3.0.0"
val logbackVersion = "1.5.8"
val logstashEncoderVersion = "8.0"
val prometheusVersion = "0.16.0"
Expand All @@ -26,7 +26,7 @@ plugins {
id("application")
kotlin("jvm") version "2.0.20"
id("com.diffplug.spotless") version "6.25.0"
id("com.github.johnrengelman.shadow") version "8.1.1"
id("com.gradleup.shadow") version "8.3.3"
}

application {
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/no/nav/syfo/Application.kt
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ fun harTilgang(credentials: JWTCredential, clientId: String): Boolean {
return credentials.payload.audience.contains(clientId)
}

fun unauthorized(credentials: JWTCredential): Principal? {
fun unauthorized(credentials: JWTCredential): Unit? {
logger.warn(
"Auth: Unexpected audience for jwt {}, {}",
StructuredArguments.keyValue("issuer", credentials.payload.issuer),
Expand Down
6 changes: 3 additions & 3 deletions src/main/kotlin/no/nav/syfo/metrics/MonitorHttpRequests.kt
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package no.nav.syfo.metrics

import io.ktor.server.application.ApplicationCall
import io.ktor.server.application.*
import io.ktor.server.request.path
import io.ktor.util.pipeline.PipelineContext
import io.ktor.util.pipeline.*

fun monitorHttpRequests(): suspend PipelineContext<Unit, ApplicationCall>.(Unit) -> Unit {
fun monitorHttpRequests(): PipelineInterceptor<Unit, PipelineCall> {
return {
val label = context.request.path()
val timer = HTTP_HISTOGRAM.labels(label).startTimer()
Expand Down
100 changes: 56 additions & 44 deletions src/test/kotlin/no/nav/syfo/application/api/SelftestSpek.kt
Original file line number Diff line number Diff line change
@@ -1,67 +1,79 @@
package no.nav.syfo.application.api
package no.nav.syfo

import io.kotest.core.spec.style.FunSpec
import io.ktor.http.HttpMethod
import io.ktor.client.request.*
import io.ktor.client.statement.*
import io.ktor.http.HttpStatusCode
import io.ktor.server.routing.routing
import io.ktor.server.testing.TestApplicationEngine
import io.ktor.server.testing.handleRequest
import no.nav.syfo.ApplicationState
import io.ktor.server.testing.*
import no.nav.syfo.nais.isalive.naisIsAliveRoute
import no.nav.syfo.nais.isready.naisIsReadyRoute
import org.amshove.kluent.shouldBeEqualTo

object SelftestSpek :
FunSpec({
context("Successfull liveness and readyness tests") {
with(TestApplicationEngine()) {
start()
val applicationState = ApplicationState()
applicationState.ready = true
applicationState.alive = true
application.routing {
naisIsAliveRoute(applicationState)
naisIsReadyRoute(applicationState)
}

class SelftestSpek :
FunSpec(
{
context("Successfull liveness and readyness tests") {
test("Returns ok on is_alive") {
with(handleRequest(HttpMethod.Get, "/internal/is_alive")) {
response.status() shouldBeEqualTo HttpStatusCode.OK
response.content shouldBeEqualTo "I'm alive! :)"
testApplication {
application {
val applicationState = ApplicationState()
applicationState.ready = true
applicationState.alive = true
routing { naisIsAliveRoute(applicationState) }
}

val response = client.get("/internal/is_alive")

response.status shouldBeEqualTo HttpStatusCode.OK
response.bodyAsText() shouldBeEqualTo "I'm alive! :)"
}
}
test("Returns ok in is_ready") {
with(handleRequest(HttpMethod.Get, "/internal/is_ready")) {
response.status() shouldBeEqualTo HttpStatusCode.OK
response.content shouldBeEqualTo "I'm ready! :)"
testApplication {
application {
val applicationState = ApplicationState()
applicationState.ready = true
applicationState.alive = true
routing { naisIsReadyRoute(applicationState) }
}

val response = client.get("/internal/is_ready")
response.status shouldBeEqualTo HttpStatusCode.OK
response.bodyAsText() shouldBeEqualTo "I'm ready! :)"
}
}
}
}
context("Unsuccessful liveness and readyness") {
with(TestApplicationEngine()) {
start()
val applicationState = ApplicationState()
applicationState.ready = false
applicationState.alive = false
application.routing {
naisIsAliveRoute(applicationState)
naisIsReadyRoute(applicationState)
}

context("Unsuccessful liveness and readyness") {
test("Returns internal server error when liveness check fails") {
with(handleRequest(HttpMethod.Get, "/internal/is_alive")) {
response.status() shouldBeEqualTo HttpStatusCode.InternalServerError
response.content shouldBeEqualTo "I'm dead x_x"
testApplication {
application {
val applicationState = ApplicationState()
applicationState.ready = false
applicationState.alive = false
routing { naisIsAliveRoute(applicationState) }
}
val response = client.get("/internal/is_alive")

response.status shouldBeEqualTo HttpStatusCode.InternalServerError
response.bodyAsText() shouldBeEqualTo "I'm dead x_x"
}
}

test("Returns internal server error when readyness check fails") {
with(handleRequest(HttpMethod.Get, "/internal/is_ready")) {
response.status() shouldBeEqualTo HttpStatusCode.InternalServerError
response.content shouldBeEqualTo "Please wait! I'm not ready :("
testApplication {
application {
val applicationState = ApplicationState()
applicationState.ready = false
applicationState.alive = false
routing { naisIsReadyRoute(applicationState) }
}
val response = client.get("/internal/is_ready")

response.status shouldBeEqualTo HttpStatusCode.InternalServerError
response.bodyAsText() shouldBeEqualTo "Please wait! I'm not ready :("
}
}
}
}
})
},
)

0 comments on commit 8c4d2fb

Please sign in to comment.