2014-12-18 09:25:33 +01:00
|
|
|
/*
|
2016-02-23 12:58:39 +01:00
|
|
|
* Copyright (C) 2009-2016 Lightbend Inc. <http://www.lightbend.com>
|
2014-12-18 09:25:33 +01:00
|
|
|
*/
|
|
|
|
|
|
2015-05-11 23:05:18 +02:00
|
|
|
package docs.http.scaladsl.server
|
2014-12-18 09:25:33 +01:00
|
|
|
|
2015-04-24 18:03:07 +02:00
|
|
|
import akka.http.scaladsl.server._
|
|
|
|
|
import akka.http.scaladsl.testkit.ScalatestRouteTest
|
2014-12-18 09:25:33 +01:00
|
|
|
|
|
|
|
|
class DirectiveExamplesSpec extends RoutingSpec {
|
|
|
|
|
|
2015-05-11 23:05:18 +02:00
|
|
|
// format: OFF
|
|
|
|
|
|
|
|
|
|
"example-1" in {
|
2014-12-18 09:25:33 +01:00
|
|
|
val route: Route =
|
|
|
|
|
path("order" / IntNumber) { id =>
|
|
|
|
|
get {
|
|
|
|
|
complete {
|
|
|
|
|
"Received GET request for order " + id
|
|
|
|
|
}
|
|
|
|
|
} ~
|
2015-05-11 23:05:18 +02:00
|
|
|
put {
|
|
|
|
|
complete {
|
|
|
|
|
"Received PUT request for order " + id
|
2014-12-18 09:25:33 +01:00
|
|
|
}
|
2015-05-11 23:05:18 +02:00
|
|
|
}
|
2014-12-18 09:25:33 +01:00
|
|
|
}
|
|
|
|
|
verify(route) // hide
|
|
|
|
|
}
|
|
|
|
|
|
2015-05-11 23:05:18 +02:00
|
|
|
"example-2" in {
|
2014-12-18 09:25:33 +01:00
|
|
|
def innerRoute(id: Int): Route =
|
|
|
|
|
get {
|
|
|
|
|
complete {
|
|
|
|
|
"Received GET request for order " + id
|
|
|
|
|
}
|
|
|
|
|
} ~
|
2015-05-11 23:05:18 +02:00
|
|
|
put {
|
|
|
|
|
complete {
|
|
|
|
|
"Received PUT request for order " + id
|
2014-12-18 09:25:33 +01:00
|
|
|
}
|
2015-05-11 23:05:18 +02:00
|
|
|
}
|
2014-12-18 09:25:33 +01:00
|
|
|
|
|
|
|
|
val route: Route = path("order" / IntNumber) { id => innerRoute(id) }
|
|
|
|
|
verify(route) // hide
|
|
|
|
|
}
|
|
|
|
|
|
2015-05-11 23:05:18 +02:00
|
|
|
"example-3" in {
|
2014-12-18 09:25:33 +01:00
|
|
|
val route =
|
|
|
|
|
path("order" / IntNumber) { id =>
|
|
|
|
|
(get | put) { ctx =>
|
2015-05-11 23:05:18 +02:00
|
|
|
ctx.complete(s"Received ${ctx.request.method.name} request for order $id")
|
2014-12-18 09:25:33 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
verify(route) // hide
|
|
|
|
|
}
|
|
|
|
|
|
2015-05-11 23:05:18 +02:00
|
|
|
"example-4" in {
|
2014-12-18 09:25:33 +01:00
|
|
|
val route =
|
|
|
|
|
path("order" / IntNumber) { id =>
|
2015-05-11 23:05:18 +02:00
|
|
|
(get | put) {
|
|
|
|
|
extractMethod { m =>
|
|
|
|
|
complete(s"Received ${m.name} request for order $id")
|
|
|
|
|
}
|
2014-12-18 09:25:33 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
verify(route) // hide
|
|
|
|
|
}
|
|
|
|
|
|
2015-05-11 23:05:18 +02:00
|
|
|
"example-5" in {
|
2014-12-18 09:25:33 +01:00
|
|
|
val getOrPut = get | put
|
|
|
|
|
val route =
|
2015-05-11 23:05:18 +02:00
|
|
|
path("order" / IntNumber) { id =>
|
|
|
|
|
getOrPut {
|
|
|
|
|
extractMethod { m =>
|
|
|
|
|
complete(s"Received ${m.name} request for order $id")
|
|
|
|
|
}
|
2014-12-18 09:25:33 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
verify(route) // hide
|
|
|
|
|
}
|
|
|
|
|
|
2015-05-11 23:05:18 +02:00
|
|
|
"example-6" in {
|
|
|
|
|
val getOrPut = get | put
|
2014-12-18 09:25:33 +01:00
|
|
|
val route =
|
2015-05-11 23:05:18 +02:00
|
|
|
(path("order" / IntNumber) & getOrPut & extractMethod) { (id, m) =>
|
|
|
|
|
complete(s"Received ${m.name} request for order $id")
|
2014-12-18 09:25:33 +01:00
|
|
|
}
|
|
|
|
|
verify(route) // hide
|
|
|
|
|
}
|
|
|
|
|
|
2015-05-11 23:05:18 +02:00
|
|
|
"example-7" in {
|
|
|
|
|
val orderGetOrPutWithMethod =
|
|
|
|
|
path("order" / IntNumber) & (get | put) & extractMethod
|
2014-12-18 09:25:33 +01:00
|
|
|
val route =
|
2015-05-11 23:05:18 +02:00
|
|
|
orderGetOrPutWithMethod { (id, m) =>
|
|
|
|
|
complete(s"Received ${m.name} request for order $id")
|
2014-12-18 09:25:33 +01:00
|
|
|
}
|
|
|
|
|
verify(route) // hide
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def verify(route: Route) = {
|
|
|
|
|
Get("/order/42") ~> route ~> check { responseAs[String] shouldEqual "Received GET request for order 42" }
|
|
|
|
|
Put("/order/42") ~> route ~> check { responseAs[String] shouldEqual "Received PUT request for order 42" }
|
|
|
|
|
Get("/") ~> route ~> check { handled shouldEqual false }
|
|
|
|
|
}
|
|
|
|
|
}
|