=doc add custom ValidationRejection handling to samples

This commit is contained in:
2beaucoup 2015-12-21 15:19:38 +01:00
parent dcfa56e547
commit 565b480b2e
2 changed files with 10 additions and 1 deletions

View file

@ -25,6 +25,9 @@ object MyRejectionHandler {
.handle { case AuthorizationFailedRejection
complete((Forbidden, "You're out of your depth!"))
}
.handle { case ValidationRejection(msg, _)
complete((InternalServerError, "That wasn't valid! " + msg))
}
.handleAll[MethodRejection] { methodRejections
val names = methodRejections.map(_.supported.name)
complete((MethodNotAllowed, s"Can't do that! Supported: ${names mkString " or "}!"))

View file

@ -32,11 +32,13 @@ class ExecutionDirectivesExamplesSpec extends RoutingSpec {
"handleRejections" in {
val totallyMissingHandler = RejectionHandler.newBuilder()
.handleNotFound { complete((StatusCodes.NotFound, "Oh man, what you are looking for is long gone.")) }
.handle { case ValidationRejection(msg, _) => complete((StatusCodes.InternalServerError, msg)) }
.result()
val route =
pathPrefix("handled") {
handleRejections(totallyMissingHandler) {
path("existing")(complete("This path exists"))
path("existing")(complete("This path exists")) ~
path("boom")(reject(new ValidationRejection("This didn't work.")))
}
}
@ -52,5 +54,9 @@ class ExecutionDirectivesExamplesSpec extends RoutingSpec {
status shouldEqual StatusCodes.NotFound
responseAs[String] shouldEqual "Oh man, what you are looking for is long gone."
}
Get("/handled/boom") ~> route ~> check {
status shouldEqual StatusCodes.InternalServerError
responseAs[String] shouldEqual "This didn't work."
}
}
}