=htp #18661 effectiveUri in Java testkit
Java testkit now uses effectiveUri to behave just like the Scala testkit so that the host header and path is joined. This allows for test calls that use just a relative URI.
This commit is contained in:
parent
630bd948d5
commit
19c8e557ba
6 changed files with 49 additions and 22 deletions
|
|
@ -0,0 +1,14 @@
|
|||
/**
|
||||
* Copyright (C) 2009-2015 Typesafe Inc. <http://www.typesafe.com>
|
||||
*/
|
||||
package akka.http.javadsl.testkit
|
||||
|
||||
import akka.http.javadsl.model.headers.Host
|
||||
|
||||
final case class DefaultHostInfo(private val host: Host, private val securedConnection: Boolean) {
|
||||
|
||||
def getHost(): Host = host
|
||||
|
||||
def isSecuredConnection(): Boolean = securedConnection
|
||||
|
||||
}
|
||||
|
|
@ -10,6 +10,7 @@ import scala.concurrent.duration._
|
|||
import akka.stream.Materializer
|
||||
import akka.http.scaladsl.server
|
||||
import akka.http.javadsl.model.HttpRequest
|
||||
import akka.http.javadsl.model.headers.Host
|
||||
import akka.http.javadsl.server.{ HttpApp, AllDirectives, Route, Directives }
|
||||
import akka.http.impl.util.JavaMapping.Implicits._
|
||||
import akka.http.impl.server.RouteImplementation
|
||||
|
|
@ -34,13 +35,27 @@ abstract class RouteTest extends AllDirectives {
|
|||
|
||||
protected def awaitDuration: FiniteDuration = 500.millis
|
||||
|
||||
def runRoute(route: Route, request: HttpRequest): TestResponse =
|
||||
runScalaRoute(ScalaRoute.seal(RouteImplementation(route)), request)
|
||||
def runRouteUnSealed(route: Route, request: HttpRequest): TestResponse =
|
||||
runScalaRoute(RouteImplementation(route), request)
|
||||
protected def defaultHostInfo: DefaultHostInfo = DefaultHostInfo(Host.create("example.com"), false)
|
||||
|
||||
private def runScalaRoute(scalaRoute: ScalaRoute, request: HttpRequest): TestResponse = {
|
||||
val result = scalaRoute(new server.RequestContextImpl(request.asScala, NoLogging, RoutingSettings(system)))
|
||||
def runRoute(route: Route, request: HttpRequest): TestResponse =
|
||||
runRoute(route, request, defaultHostInfo)
|
||||
|
||||
def runRoute(route: Route, request: HttpRequest, defaultHostInfo: DefaultHostInfo): TestResponse =
|
||||
runScalaRoute(ScalaRoute.seal(RouteImplementation(route)), request, defaultHostInfo)
|
||||
|
||||
def runRouteUnSealed(route: Route, request: HttpRequest): TestResponse =
|
||||
runRouteUnSealed(route, request, defaultHostInfo)
|
||||
|
||||
def runRouteUnSealed(route: Route, request: HttpRequest, defaultHostInfo: DefaultHostInfo): TestResponse =
|
||||
runScalaRoute(RouteImplementation(route), request, defaultHostInfo)
|
||||
|
||||
private def runScalaRoute(scalaRoute: ScalaRoute, request: HttpRequest, defaultHostInfo: DefaultHostInfo): TestResponse = {
|
||||
val effectiveRequest = request.asScala
|
||||
.withEffectiveUri(
|
||||
securedConnection = defaultHostInfo.isSecuredConnection(),
|
||||
defaultHostHeader = defaultHostInfo.getHost().asScala)
|
||||
|
||||
val result = scalaRoute(new server.RequestContextImpl(effectiveRequest, NoLogging, RoutingSettings(system)))
|
||||
|
||||
result.awaitResult(awaitDuration) match {
|
||||
case RouteResult.Complete(response) ⇒ createTestResponse(response)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue