This commit is contained in:
parent
16e8f8f54a
commit
0263774f82
5 changed files with 133 additions and 6 deletions
|
|
@ -0,0 +1,125 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2016-2016 Lightbend Inc. <http://www.lightbend.com>
|
||||||
|
*/
|
||||||
|
package docs.http.javadsl.server.directives;
|
||||||
|
|
||||||
|
import akka.http.javadsl.model.HttpEntities;
|
||||||
|
import akka.http.javadsl.model.HttpRequest;
|
||||||
|
import akka.http.javadsl.model.Uri;
|
||||||
|
import akka.http.javadsl.model.headers.ContentType;
|
||||||
|
import akka.http.javadsl.model.ContentTypes;
|
||||||
|
import akka.http.javadsl.model.HttpResponse;
|
||||||
|
import akka.http.javadsl.model.StatusCodes;
|
||||||
|
import akka.http.javadsl.server.Rejections;
|
||||||
|
import akka.http.javadsl.server.Route;
|
||||||
|
import akka.http.javadsl.testkit.JUnitRouteTest;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
public class RouteDirectivesExamplesTest extends JUnitRouteTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testComplete() {
|
||||||
|
//#complete
|
||||||
|
final Route route = route(
|
||||||
|
path("a", () -> complete(HttpResponse.create().withEntity("foo"))),
|
||||||
|
path("b", () -> complete(StatusCodes.OK)),
|
||||||
|
path("c", () -> complete(StatusCodes.CREATED, "bar")),
|
||||||
|
path("d", () -> complete(StatusCodes.get(201), "bar")),
|
||||||
|
path("e", () ->
|
||||||
|
complete(StatusCodes.CREATED,
|
||||||
|
Collections.singletonList(ContentType.create(ContentTypes.TEXT_PLAIN_UTF8)),
|
||||||
|
HttpEntities.create("bar"))),
|
||||||
|
path("f", () ->
|
||||||
|
complete(StatusCodes.get(201),
|
||||||
|
Collections.singletonList(ContentType.create(ContentTypes.TEXT_PLAIN_UTF8)),
|
||||||
|
HttpEntities.create("bar"))),
|
||||||
|
path("g", () -> complete("baz"))
|
||||||
|
);
|
||||||
|
|
||||||
|
// tests:
|
||||||
|
testRoute(route).run(HttpRequest.GET("/a"))
|
||||||
|
.assertStatusCode(StatusCodes.OK)
|
||||||
|
.assertEntity("foo");
|
||||||
|
|
||||||
|
testRoute(route).run(HttpRequest.GET("/b"))
|
||||||
|
.assertStatusCode(StatusCodes.OK)
|
||||||
|
.assertEntity("OK");
|
||||||
|
|
||||||
|
testRoute(route).run(HttpRequest.GET("/c"))
|
||||||
|
.assertStatusCode(StatusCodes.CREATED)
|
||||||
|
.assertEntity("bar");
|
||||||
|
|
||||||
|
testRoute(route).run(HttpRequest.GET("/d"))
|
||||||
|
.assertStatusCode(StatusCodes.CREATED)
|
||||||
|
.assertEntity("bar");
|
||||||
|
|
||||||
|
testRoute(route).run(HttpRequest.GET("/e"))
|
||||||
|
.assertStatusCode(StatusCodes.CREATED)
|
||||||
|
.assertHeaderExists(ContentType.create(ContentTypes.TEXT_PLAIN_UTF8))
|
||||||
|
.assertEntity("bar");
|
||||||
|
|
||||||
|
testRoute(route).run(HttpRequest.GET("/f"))
|
||||||
|
.assertStatusCode(StatusCodes.CREATED)
|
||||||
|
.assertHeaderExists(ContentType.create(ContentTypes.TEXT_PLAIN_UTF8))
|
||||||
|
.assertEntity("bar");
|
||||||
|
|
||||||
|
testRoute(route).run(HttpRequest.GET("/g"))
|
||||||
|
.assertStatusCode(StatusCodes.OK)
|
||||||
|
.assertEntity("baz");
|
||||||
|
//#complete
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testReject() {
|
||||||
|
//#reject
|
||||||
|
final Route route = route(
|
||||||
|
path("a", this::reject), // don't handle here, continue on
|
||||||
|
path("a", () -> complete("foo")),
|
||||||
|
path("b", () -> reject(Rejections.validationRejection("Restricted!")))
|
||||||
|
);
|
||||||
|
|
||||||
|
// tests:
|
||||||
|
testRoute(route).run(HttpRequest.GET("/a"))
|
||||||
|
.assertEntity("foo");
|
||||||
|
|
||||||
|
runRouteUnSealed(route, HttpRequest.GET("/b"))
|
||||||
|
.assertRejections(Rejections.validationRejection("Restricted!"));
|
||||||
|
//#reject
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRedirect() {
|
||||||
|
//#redirect
|
||||||
|
final Route route = pathPrefix("foo", () ->
|
||||||
|
route(
|
||||||
|
pathSingleSlash(() -> complete("yes")),
|
||||||
|
pathEnd(() -> redirect(Uri.create("/foo/"), StatusCodes.PERMANENT_REDIRECT))
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// tests:
|
||||||
|
testRoute(route).run(HttpRequest.GET("/foo/"))
|
||||||
|
.assertEntity("yes");
|
||||||
|
|
||||||
|
testRoute(route).run(HttpRequest.GET("/foo"))
|
||||||
|
.assertStatusCode(StatusCodes.PERMANENT_REDIRECT)
|
||||||
|
.assertEntity("The request, and all future requests should be repeated using <a href=\"/foo/\">this URI</a>.");
|
||||||
|
//#redirect
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFailWith() {
|
||||||
|
//#failWith
|
||||||
|
final Route route = path("foo", () ->
|
||||||
|
failWith(new RuntimeException("Oops."))
|
||||||
|
);
|
||||||
|
|
||||||
|
// tests:
|
||||||
|
testRoute(route).run(HttpRequest.GET("/foo"))
|
||||||
|
.assertStatusCode(StatusCodes.INTERNAL_SERVER_ERROR)
|
||||||
|
.assertEntity("There was an internal server error.");
|
||||||
|
//#failWith
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,4 +17,5 @@ Please note that the ``complete`` directive has multiple variants, like
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
TODO: Example snippets for JavaDSL are subject to community contributions! Help us complete the docs, read more about it here: `write example snippets for Akka HTTP Java DSL #20466 <https://github.com/akka/akka/issues/20466>`_.
|
|
||||||
|
.. includecode:: ../../../../code/docs/http/javadsl/server/directives/RouteDirectivesExamplesTest.java#complete
|
||||||
|
|
|
||||||
|
|
@ -24,4 +24,5 @@ exception.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
TODO: Example snippets for JavaDSL are subject to community contributions! Help us complete the docs, read more about it here: `write example snippets for Akka HTTP Java DSL #20466 <https://github.com/akka/akka/issues/20466>`_.
|
|
||||||
|
.. includecode:: ../../../../code/docs/http/javadsl/server/directives/RouteDirectivesExamplesTest.java#failWith
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,8 @@ Completes the request with a redirection response to a given targer URI and of a
|
||||||
``redirect`` is a convenience helper for completing the request with a redirection response.
|
``redirect`` is a convenience helper for completing the request with a redirection response.
|
||||||
It is equivalent to this snippet relying on the ``complete`` directive:
|
It is equivalent to this snippet relying on the ``complete`` directive:
|
||||||
|
|
||||||
TODO: Example snippets for JavaDSL are subject to community contributions! Help us complete the docs, read more about it here: `write example snippets for Akka HTTP Java DSL #20466 <https://github.com/akka/akka/issues/20466>`_.
|
|
||||||
|
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
TODO: Example snippets for JavaDSL are subject to community contributions! Help us complete the docs, read more about it here: `write example snippets for Akka HTTP Java DSL #20466 <https://github.com/akka/akka/issues/20466>`_.
|
|
||||||
|
.. includecode:: ../../../../code/docs/http/javadsl/server/directives/RouteDirectivesExamplesTest.java#redirect
|
||||||
|
|
|
||||||
|
|
@ -19,4 +19,5 @@ modifier for "filtering out" certain cases.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
TODO: Example snippets for JavaDSL are subject to community contributions! Help us complete the docs, read more about it here: `write example snippets for Akka HTTP Java DSL #20466 <https://github.com/akka/akka/issues/20466>`_.
|
|
||||||
|
.. includecode:: ../../../../code/docs/http/javadsl/server/directives/RouteDirectivesExamplesTest.java#reject
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue