Merge pull request #18742 from johanandren/wip-18661-make-java-testkit-consistent-with-scala-johanandren
=htp #18661 EffectiveUri in Java Testkit
This commit is contained in:
commit
098375571c
6 changed files with 49 additions and 22 deletions
|
|
@ -32,7 +32,7 @@ public class HeaderRequestValsExampleTest extends JUnitRouteTest {
|
|||
final HttpRequest request =
|
||||
HttpRequest
|
||||
.GET("http://akka.io/")
|
||||
.addHeader(Host.create("akka.io", 80));
|
||||
.addHeader(Host.create("akka.io"));
|
||||
testRoute(route).run(request).assertEntity("Host header was: akka.io");
|
||||
|
||||
//#by-class
|
||||
|
|
|
|||
|
|
@ -18,9 +18,6 @@ import org.junit.Test;
|
|||
|
||||
public class HostDirectivesExamplesTest extends JUnitRouteTest {
|
||||
|
||||
//FIXME The GET requests should work with HttpRequest.GET("/").addHeader(Host.create
|
||||
// instead of absolute paths. That is tracked by issue: https://github.com/akka/akka/issues/18661
|
||||
|
||||
@Test
|
||||
public void testListOfHost() {
|
||||
//#host1
|
||||
|
|
@ -28,7 +25,7 @@ public class HostDirectivesExamplesTest extends JUnitRouteTest {
|
|||
Arrays.asList("api.company.com", "rest.company.com"),
|
||||
completeWithStatus(StatusCodes.OK));
|
||||
|
||||
testRoute(matchListOfHosts).run(HttpRequest.GET("http://api.company.com/"))
|
||||
testRoute(matchListOfHosts).run(HttpRequest.GET("/").addHeader(Host.create("api.company.com")))
|
||||
.assertStatusCode(StatusCodes.OK);
|
||||
//#host1
|
||||
}
|
||||
|
|
@ -39,10 +36,10 @@ public class HostDirectivesExamplesTest extends JUnitRouteTest {
|
|||
final Route shortOnly = host(hostname -> hostname.length() < 10,
|
||||
completeWithStatus(StatusCodes.OK));
|
||||
|
||||
testRoute(shortOnly).run(HttpRequest.GET("http://short.com/"))
|
||||
testRoute(shortOnly).run(HttpRequest.GET("/").addHeader(Host.create("short.com")))
|
||||
.assertStatusCode(StatusCodes.OK);
|
||||
|
||||
testRoute(shortOnly).run(HttpRequest.GET("http://verylonghostname.com/"))
|
||||
testRoute(shortOnly).run(HttpRequest.GET("/").addHeader(Host.create("verylonghostname.com")))
|
||||
.assertStatusCode(StatusCodes.NOT_FOUND);
|
||||
//#host2
|
||||
}
|
||||
|
|
@ -55,7 +52,7 @@ public class HostDirectivesExamplesTest extends JUnitRouteTest {
|
|||
final Route route = handleWith1(host,
|
||||
(ctx, hn) -> ctx.complete("Hostname: " + hn));
|
||||
|
||||
testRoute(route).run(HttpRequest.GET("http://company.com:9090/"))
|
||||
testRoute(route).run(HttpRequest.GET("/").addHeader(Host.create("company.com", 9090)))
|
||||
.assertEntity("Hostname: company.com");
|
||||
//#extractHostname
|
||||
}
|
||||
|
|
@ -79,10 +76,10 @@ public class HostDirectivesExamplesTest extends JUnitRouteTest {
|
|||
|
||||
final Route route = route(hostPrefixRoute, hostPartRoute);
|
||||
|
||||
testRoute(route).run(HttpRequest.GET("http://api.company.com/"))
|
||||
testRoute(route).run(HttpRequest.GET("/").addHeader(Host.create("api.company.com")))
|
||||
.assertStatusCode(StatusCodes.OK).assertEntity("Extracted prefix: api");
|
||||
|
||||
testRoute(route).run(HttpRequest.GET("http://public.mycompany.com/"))
|
||||
testRoute(route).run(HttpRequest.GET("/").addHeader(Host.create("public.mycompany.com")))
|
||||
.assertStatusCode(StatusCodes.OK)
|
||||
.assertEntity("You came through my company");
|
||||
//#matchAndExtractHost
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -49,14 +49,14 @@ public class HandlerExampleDocTest extends JUnitRouteTest {
|
|||
TestRoute r = testRoute(new TestHandler().createRoute());
|
||||
r.run(HttpRequest.GET("/test"))
|
||||
.assertStatusCode(200)
|
||||
.assertEntity("This was a GET request to /test");
|
||||
.assertEntity("This was a GET request to http://example.com/test");
|
||||
|
||||
r.run(HttpRequest.POST("/test"))
|
||||
.assertStatusCode(404);
|
||||
|
||||
r.run(HttpRequest.POST("/abc"))
|
||||
.assertStatusCode(200)
|
||||
.assertEntity("This was a POST request to /abc");
|
||||
.assertEntity("This was a POST request to http://example.com/abc");
|
||||
//#simple-handler-example-full
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
package akka.http.javadsl.server.directives;
|
||||
|
||||
import akka.http.javadsl.model.StatusCodes;
|
||||
import akka.http.javadsl.model.headers.Host;
|
||||
import akka.http.javadsl.server.values.PathMatcher;
|
||||
import org.junit.Test;
|
||||
|
||||
|
|
@ -337,9 +338,9 @@ public class PathDirectivesTest extends JUnitRouteTest {
|
|||
redirectToTrailingSlashIfMissing(StatusCodes.FOUND, complete("Ok"))
|
||||
);
|
||||
|
||||
route.run(HttpRequest.GET("/home"))
|
||||
route.run(HttpRequest.GET("/home").addHeader(Host.create("example.com")))
|
||||
.assertStatusCode(302)
|
||||
.assertHeaderExists("Location", "/home/");
|
||||
.assertHeaderExists("Location", "http://example.com/home/");
|
||||
|
||||
route.run(HttpRequest.GET("/home/"))
|
||||
.assertStatusCode(200)
|
||||
|
|
@ -353,9 +354,9 @@ public class PathDirectivesTest extends JUnitRouteTest {
|
|||
redirectToNoTrailingSlashIfPresent(StatusCodes.FOUND, complete("Ok"))
|
||||
);
|
||||
|
||||
route.run(HttpRequest.GET("/home/"))
|
||||
route.run(HttpRequest.GET("/home/").addHeader(Host.create("example.com")))
|
||||
.assertStatusCode(302)
|
||||
.assertHeaderExists("Location", "/home");
|
||||
.assertHeaderExists("Location", "http://example.com/home");
|
||||
|
||||
route.run(HttpRequest.GET("/home"))
|
||||
.assertStatusCode(200)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue