1+ package com.papsign.ktor.openapigen.routing
2+
3+ import com.papsign.ktor.openapigen.annotations.parameters.HeaderParam
4+ import com.papsign.ktor.openapigen.route.apiRouting
5+ import com.papsign.ktor.openapigen.route.path.normal.post
6+ import com.papsign.ktor.openapigen.route.response.respond
7+ import com.papsign.ktor.openapigen.route.route
8+ import installJackson
9+ import installOpenAPI
10+ import io.ktor.http.HttpHeaders
11+ import io.ktor.http.HttpMethod
12+ import io.ktor.routing.Routing
13+ import io.ktor.server.testing.contentType
14+ import io.ktor.server.testing.handleRequest
15+ import io.ktor.server.testing.setBody
16+ import io.ktor.server.testing.withTestApplication
17+ import org.junit.Assert.assertEquals
18+ import org.junit.Test
19+ import kotlin.test.assertTrue
20+
21+ class RoutingTest {
22+
23+ data class TestHeaderParams (@HeaderParam(" test param" ) val `Test -Header `: Long )
24+ data class TestBodyParams (val xyz : Long )
25+ data class TestResponse (val msg : String )
26+
27+ @Test
28+ fun testPostWithHeaderAndBodyParams () {
29+ val route = " /test"
30+ withTestApplication({
31+ installOpenAPI()
32+ installJackson()
33+ apiRouting {
34+ (this .ktorRoute as Routing ).trace { println (it.buildText()) }
35+ route(route) {
36+ post<TestHeaderParams , TestResponse , TestBodyParams > { params, body ->
37+ respond(TestResponse (" $params -> $body " ))
38+ }
39+ }
40+ }
41+ }) {
42+ handleRequest(HttpMethod .Post , route) {
43+ addHeader(HttpHeaders .ContentType , " application/json" )
44+ addHeader(HttpHeaders .Accept , " application/json" )
45+ addHeader(" Test-Header" , " 123" )
46+ setBody(" {\" xyz\" :456}" )
47+ }.apply {
48+ assertTrue { response.contentType().match(" application/json" ) }
49+ assertEquals(
50+ " {\" msg\" :\" ${TestHeaderParams (123 )} -> ${TestBodyParams (456 )} \" }" ,
51+ response.content
52+ )
53+ }
54+ }
55+ }
56+ }
0 commit comments