Skip to content

Commit d7dde30

Browse files
committed
endepunkt for ordrekvittering
1 parent b27e6b7 commit d7dde30

File tree

3 files changed

+107
-2
lines changed

3 files changed

+107
-2
lines changed

src/main/kotlin/no/nav/hjelpemidler/Application.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import no.nav.helse.rapids_rivers.KafkaConfig
1212
import no.nav.helse.rapids_rivers.RapidApplication
1313
import no.nav.helse.rapids_rivers.RapidsConnection
1414
import no.nav.hjelpemidler.api.ordrelinjeAPI
15-
import no.nav.hjelpemidler.api.rekvisisjonAPI
15+
import no.nav.hjelpemidler.api.ordreAPI
1616
import no.nav.hjelpemidler.api.serviceforespørselAPI
1717
import no.nav.hjelpemidler.configuration.Configuration
1818
import java.net.InetAddress
@@ -66,7 +66,7 @@ fun main() {
6666
authenticate("oebsToken") {
6767
ordrelinjeAPI(context)
6868
serviceforespørselAPI(context)
69-
rekvisisjonAPI(context)
69+
ordreAPI(context)
7070
}
7171
}
7272
}.build()
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package no.nav.hjelpemidler.api
2+
3+
import io.ktor.http.HttpStatusCode
4+
import io.ktor.server.application.call
5+
import io.ktor.server.request.receive
6+
import io.ktor.server.routing.Route
7+
import io.ktor.server.routing.post
8+
import mu.KotlinLogging
9+
import no.nav.hjelpemidler.Context
10+
import java.time.LocalDateTime
11+
import java.util.UUID
12+
13+
private val logg = KotlinLogging.logger { }
14+
15+
fun Route.ordreAPI(context: Context) {
16+
post("/ordrekvittering") {
17+
val kvittering = call.receive<Ordrekvittering>()
18+
logg.info { "Mottok ordrekvittering, id=${kvittering.id}" }
19+
context.publish(
20+
kvittering.saksnummer,
21+
OrdrekvitteringMottatt(kvittering = kvittering)
22+
)
23+
call.response.status(HttpStatusCode.OK)
24+
}
25+
}
26+
27+
data class Ordrekvittering(
28+
val id: String,
29+
val saksnummer: String,
30+
val ordrenummer: String,
31+
val system: String,
32+
val status: String,
33+
)
34+
35+
data class OrdrekvitteringMottatt(
36+
val eventId: UUID = UUID.randomUUID(),
37+
val eventName: String = "hm-ordrekvittering-mottatt",
38+
val opprettet: LocalDateTime = LocalDateTime.now(),
39+
val kvittering: Ordrekvittering,
40+
)
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package no.nav.hjelpemidler.api
2+
3+
import io.ktor.client.request.bearerAuth
4+
import io.ktor.client.request.post
5+
import io.ktor.client.request.setBody
6+
import io.ktor.http.ContentType
7+
import io.ktor.http.HttpStatusCode
8+
import io.ktor.http.contentType
9+
import io.ktor.serialization.jackson.jackson
10+
import io.ktor.server.auth.Authentication
11+
import io.ktor.server.auth.authenticate
12+
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
13+
import io.ktor.server.testing.ApplicationTestBuilder
14+
import io.ktor.server.testing.testApplication
15+
import io.mockk.mockk
16+
import io.mockk.verify
17+
import no.nav.hjelpemidler.Context
18+
import no.nav.hjelpemidler.shouldBe
19+
import no.nav.hjelpemidler.token
20+
import kotlin.test.Test
21+
22+
internal class OrdreAPITest {
23+
24+
private val context = Context(mockk(relaxed = true))
25+
26+
@Test
27+
internal fun `sender ut ordrekvittering på rapid`() = testApplication {
28+
configure()
29+
val body = context.jsonMapper.writeValueAsString(
30+
Ordrekvittering(
31+
id = "1",
32+
saksnummer = "2",
33+
ordrenummer = "3",
34+
system = "HOTSAK",
35+
status = "ENTERED"
36+
)
37+
)
38+
client.post("/ordrekvittering") {
39+
bearerAuth("qwer1234")
40+
contentType(ContentType.Application.Json)
41+
setBody(body)
42+
}.apply {
43+
status shouldBe HttpStatusCode.OK
44+
verify {
45+
context.publish("2", match { it.contains(body) })
46+
}
47+
}
48+
}
49+
50+
private fun ApplicationTestBuilder.configure() {
51+
install(ContentNegotiation) {
52+
jackson()
53+
}
54+
install(Authentication) {
55+
token("oebsToken") {
56+
validate("qwer1234")
57+
}
58+
}
59+
routing {
60+
authenticate("oebsToken") {
61+
ordreAPI(context)
62+
}
63+
}
64+
}
65+
}

0 commit comments

Comments
 (0)