Skip to content

Commit

Permalink
chore: bumped several libs and plugin (#183)
Browse files Browse the repository at this point in the history
  • Loading branch information
MikAoJk authored Oct 10, 2024
1 parent 0d43918 commit 4a18cc7
Show file tree
Hide file tree
Showing 10 changed files with 274 additions and 290 deletions.
10 changes: 5 additions & 5 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ val jacksonVersion = "2.18.0"
val jaxbApiVersion = "2.4.0-b180830.0359"
val jaxbRuntimeVersion = "2.4.0-b180830.0438"
val kluentVersion = "1.73"
val ktorVersion = "2.3.12"
val logbackVersion = "1.5.8"
val ktorVersion = "3.0.0"
val logbackVersion = "1.5.9"
val logstashEncoderVersion = "8.0"
val prometheusVersion = "0.16.0"
val cxfVersion = "3.6.4"
Expand All @@ -22,9 +22,9 @@ val javaxJaxwsApiVersion = "2.2.1"
val javaxActivationVersion = "1.1.1"
val jedisVersion = "5.2.0"
val testcontainersVersion = "1.20.2"
val mockkVersion = "1.13.12"
val mockkVersion = "1.13.13"
val nimbusdsVersion = "9.41.2"
val kotlinVersion = "2.0.20"
val kotlinVersion = "2.0.21"
val jaxbImplVersion = "2.3.3"
val wsApiVersion = "2.3.3"
val jakartaAnnotationApiVersion = "1.3.5"
Expand All @@ -38,7 +38,7 @@ val javaVersion = JvmTarget.JVM_21
plugins {
id("application")
id("io.mateo.cxf-codegen") version "1.0.2"
kotlin("jvm") version "2.0.20"
kotlin("jvm") version "2.0.21"
id("com.diffplug.spotless") version "6.25.0"
id("com.gradleup.shadow") version "8.3.3"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package no.nav.syfo.application.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
2 changes: 1 addition & 1 deletion src/main/kotlin/no/nav/syfo/plugins/NaisThings.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import io.ktor.http.HttpStatusCode
import io.ktor.server.application.Application
import io.ktor.server.application.ApplicationCallPipeline
import io.ktor.server.application.install
import io.ktor.server.plugins.callloging.CallLogging
import io.ktor.server.plugins.calllogging.*
import io.ktor.server.plugins.statuspages.StatusPages
import io.ktor.server.response.respond
import io.ktor.server.routing.routing
Expand Down
89 changes: 42 additions & 47 deletions src/test/kotlin/no/nav/syfo/SelfTest.kt
Original file line number Diff line number Diff line change
@@ -1,82 +1,77 @@
package no.nav.syfo

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 io.ktor.util.InternalAPI
import io.ktor.server.testing.*
import no.nav.syfo.application.ApplicationState
import no.nav.syfo.application.api.registerNaisApi
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test

internal class SelfTest {

@InternalAPI
@Test
internal fun `Returns ok on is_alive`() {
with(TestApplicationEngine()) {
start()
val applicationState = ApplicationState()
applicationState.ready = true
applicationState.alive = true
application.routing { registerNaisApi(applicationState) }

with(handleRequest(HttpMethod.Get, "/internal/is_alive")) {
assertEquals(HttpStatusCode.OK, response.status())
assertEquals("I'm alive! :)", response.content)
testApplication {
application {
val applicationState = ApplicationState()
applicationState.ready = true
applicationState.alive = true
routing { registerNaisApi(applicationState) }
}

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

assertEquals(HttpStatusCode.OK, response.status)
assertEquals("I'm alive! :)", response.bodyAsText())
}
}

@InternalAPI
@Test
internal fun `Returns ok in is_ready`() {
with(TestApplicationEngine()) {
start()
val applicationState = ApplicationState()
applicationState.ready = true
applicationState.alive = true
application.routing { registerNaisApi(applicationState) }

with(handleRequest(HttpMethod.Get, "/internal/is_ready")) {
assertEquals(HttpStatusCode.OK, response.status())
assertEquals("I'm ready! :)", response.content)
testApplication {
application {
val applicationState = ApplicationState()
applicationState.ready = true
applicationState.alive = true
routing { registerNaisApi(applicationState) }
}
val response = client.get("/internal/is_ready")
assertEquals(HttpStatusCode.OK, response.status)
assertEquals("I'm ready! :)", response.bodyAsText())
}
}

@InternalAPI
@Test
internal fun `Returns internal server error when liveness check fails`() {
with(TestApplicationEngine()) {
start()
val applicationState = ApplicationState()
applicationState.ready = false
applicationState.alive = false
application.routing { registerNaisApi(applicationState) }

with(handleRequest(HttpMethod.Get, "/internal/is_alive")) {
assertEquals(HttpStatusCode.InternalServerError, response.status())
assertEquals("I'm dead x_x", response.content)
testApplication {
application {
val applicationState = ApplicationState()
applicationState.ready = false
applicationState.alive = false
routing { registerNaisApi(applicationState) }
}

val response = client.get("/internal/is_alive")
assertEquals(HttpStatusCode.InternalServerError, response.status)
assertEquals("I'm dead x_x", response.bodyAsText())
}
}

@InternalAPI
@Test
internal fun `Returns internal server error when readyness check fails`() {
with(TestApplicationEngine()) {
start()
val applicationState = ApplicationState()
applicationState.ready = false
applicationState.alive = false
application.routing { registerNaisApi(applicationState) }
with(handleRequest(HttpMethod.Get, "/internal/is_ready")) {
assertEquals(HttpStatusCode.InternalServerError, response.status())
assertEquals("Please wait! I'm not ready :(", response.content)
testApplication {
application {
val applicationState = ApplicationState()
applicationState.ready = false
applicationState.alive = false
routing { registerNaisApi(applicationState) }
}
val response = client.get("/internal/is_ready")
assertEquals(HttpStatusCode.InternalServerError, response.status)
assertEquals("Please wait! I'm not ready :(", response.bodyAsText())
}
}
}
74 changes: 32 additions & 42 deletions src/test/kotlin/no/nav/syfo/application/AuthorizationTest.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package no.nav.syfo.application

import io.ktor.http.HttpMethod
import io.ktor.http.HttpStatusCode
import io.ktor.server.application.call
import io.ktor.client.request.*
import io.ktor.http.*
import io.ktor.http.HttpHeaders.Authorization
import io.ktor.server.auth.authenticate
import io.ktor.server.response.respond
import io.ktor.server.routing.get
import io.ktor.server.routing.routing
import io.ktor.server.testing.TestApplicationEngine
import io.ktor.server.testing.handleRequest
import io.ktor.server.testing.*
import java.net.ServerSocket
import java.time.LocalDateTime
import java.util.concurrent.TimeUnit
Expand All @@ -31,83 +29,75 @@ internal class AuthorizationTest {

@Test
internal fun `Uten token gir 401`() {
with(TestApplicationEngine()) {
testApplication {
setUpTestApplication()
setUpAuth()
application.routing {
routing {
authenticate("servicebrukerAADv2") {
get("/testApi") { call.respond(HttpStatusCode.OK) }
}
}
with(handleRequest(HttpMethod.Get, "/testApi")) {
response.status()?.shouldBeEqualTo(HttpStatusCode.Unauthorized)
}
val response = client.get("/testApi")

response.status.shouldBeEqualTo(HttpStatusCode.Unauthorized)
}
}

@Test
internal fun `Feil audience gir 401`() {
with(TestApplicationEngine()) {
testApplication {
setUpTestApplication()
setUpAuth()
application.routing {
routing {
authenticate("servicebrukerAADv2") {
get("/testApi") { call.respond(HttpStatusCode.OK) }
}
}
with(
handleRequest(HttpMethod.Get, "/testApi") {
addHeader(
"Authorization",
"Bearer ${genereateJWT(audience = "another audience")}",
)
},
) {
response.status()?.shouldBeEqualTo(HttpStatusCode.Unauthorized)
}
val response =
client.get("/testApi") {
header(Authorization, "Bearer ${genereateJWT(audience = "another audience")}")
}

response.status.shouldBeEqualTo(HttpStatusCode.Unauthorized)
}
}

@Test
internal fun `Utgått token gir 401`() {
with(TestApplicationEngine()) {
testApplication {
setUpTestApplication()
setUpAuth()
application.routing {
routing {
authenticate("servicebrukerAADv2") {
get("/testApi") { call.respond(HttpStatusCode.OK) }
}
}
with(
handleRequest(HttpMethod.Get, "/testApi") {
addHeader(
"Authorization",

val response =
client.get("/testApi") {
header(
Authorization,
"Bearer ${genereateJWT(expiry = LocalDateTime.now().minusMinutes(5))}",
)
},
) {
response.status()?.shouldBeEqualTo(HttpStatusCode.Unauthorized)
}
}

response.status.shouldBeEqualTo(HttpStatusCode.Unauthorized)
}
}

@Test
internal fun `Med gyldig token gir 200 OK`() {
with(TestApplicationEngine()) {
testApplication {
setUpTestApplication()
setUpAuth()
application.routing {
routing {
authenticate("servicebrukerAADv2") {
get("/testApi") { call.respond(HttpStatusCode.OK) }
}
}
with(
handleRequest(HttpMethod.Get, "/testApi") {
addHeader("Authorization", "Bearer ${genereateJWT()}")
},
) {
response.status()?.shouldBeEqualTo(HttpStatusCode.OK)
}
val response =
client.get("/testApi") { header(Authorization, "Bearer ${genereateJWT()}") }
response.status.shouldBeEqualTo(HttpStatusCode.OK)
}
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package no.nav.syfo.fastlegeinformasjon

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.*
import io.mockk.every
import io.mockk.mockk
Expand All @@ -23,38 +23,35 @@ class FastlegeinformasjonApiTest {

@Test
internal fun `ExportGPContracts returnerer faar bytearray`() {
with(TestApplicationEngine()) {
testApplication {
setUpTestApplication()
application.routing { registerFastlegeinformasjonApi(fastlegeinformasjonService) }
with(
handleRequest(HttpMethod.Get, "/fastlegeinformasjon") {
addHeader("kommunenr", "0301")
addHeader("Nav-CallId", "callId")
},
) {
response.status()?.shouldBeEqualTo(HttpStatusCode.OK)
val byteArray = response.content!!

byteArray.shouldBeEqualTo("Hello")
}
routing { registerFastlegeinformasjonApi(fastlegeinformasjonService) }

val response =
client.get("/fastlegeinformasjon") {
header("kommunenr", "0301")
header("Nav-CallId", "callId")
}

response.status.shouldBeEqualTo(HttpStatusCode.OK)
val byteArray = response.bodyAsText()

byteArray.shouldBeEqualTo("Hello")
}
}

@Test
internal fun `ExportGPContracts returnerer badrequest ved mangledene header kommunenr`() {
with(TestApplicationEngine()) {
testApplication {
setUpTestApplication()
application.routing { registerFastlegeinformasjonApi(fastlegeinformasjonService) }
with(
handleRequest(HttpMethod.Get, "/fastlegeinformasjon") {
addHeader("Nav-CallId", "callId")
},
) {
response.status()?.shouldBeEqualTo(HttpStatusCode.BadRequest)
val response = response.content!!

response.shouldBeEqualTo("Mangler header `kommunenr` med kommunenr")
}
routing { registerFastlegeinformasjonApi(fastlegeinformasjonService) }

val response = client.get("/fastlegeinformasjon") { header("Nav-CallId", "callId") }

response.status.shouldBeEqualTo(HttpStatusCode.BadRequest)
val responsebody = response.bodyAsText()

responsebody.shouldBeEqualTo("Mangler header `kommunenr` med kommunenr")
}
}
}
Loading

0 comments on commit 4a18cc7

Please sign in to comment.