Skip to content

Commit 16635d4

Browse files
blockvotemduesterhoeft
authored andcommitted
Fix no-content response (#5)
1 parent ed04c31 commit 16635d4

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

router/src/main/kotlin/io/moia/router/RequestHandler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ abstract class RequestHandler : RequestHandler<APIGatewayProxyRequestEvent, APIG
154154
// TODO add default accept type
155155
val accept = ContentType.parse(input.acceptHeader())
156156
return when {
157-
response.body is Unit -> APIGatewayProxyResponseEvent()
157+
// no-content response
158+
response.body == null && response.statusCode == 204 -> APIGatewayProxyResponseEvent()
158159
.withStatusCode(204)
159160
.withHeaders(response.headers)
160161
serializationHandlerChain.supports(accept, response) ->

router/src/test/kotlin/io/moia/router/RequestHandlerTest.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package io.moia.router
22

33
import assertk.assert
44
import assertk.assertions.isEqualTo
5+
import assertk.assertions.isNullOrEmpty
56
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent
67
import io.mockk.mockk
78
import io.moia.router.Router.Companion.router
@@ -262,6 +263,19 @@ class RequestHandlerTest {
262263
assert(response.statusCode).isEqualTo(404)
263264
}
264265

266+
@Test
267+
fun `Successful POST request should return status code 204`() {
268+
val response = testRequestHandler.handleRequest(
269+
POST("/no-content")
270+
.withHeader("Accept", "application/json")
271+
.withHeader("Content-Type", "application/json")
272+
.withBody("""{ "greeting": "some" }"""),
273+
mockk()
274+
)
275+
assert(response.statusCode).isEqualTo(204)
276+
assert(response.body).isNullOrEmpty()
277+
}
278+
265279
class TestRequestHandlerAuthorization : RequestHandler() {
266280
override val router = router {
267281
GET("/some") { _: Request<Unit> ->
@@ -353,6 +367,9 @@ class RequestHandlerTest {
353367
)
354368
}.toList())
355369
}
370+
POST("/no-content") { _: Request<TestRequest> ->
371+
ResponseEntity.noContent()
372+
}
356373
}
357374
}
358375
}

0 commit comments

Comments
 (0)