diff --git a/akka-docs/rst/java/code/docs/http/javadsl/server/directives/CookieDirectivesExamplesTest.java b/akka-docs/rst/java/code/docs/http/javadsl/server/directives/CookieDirectivesExamplesTest.java new file mode 100644 index 0000000000..cf38a1f12e --- /dev/null +++ b/akka-docs/rst/java/code/docs/http/javadsl/server/directives/CookieDirectivesExamplesTest.java @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2016-2016 Lightbend Inc. + */ +package docs.http.javadsl.server.directives; + +import akka.http.javadsl.model.HttpHeader; +import akka.http.javadsl.model.HttpRequest; +import akka.http.javadsl.model.headers.Cookie; +import akka.http.javadsl.model.headers.HttpCookie; +import akka.http.javadsl.model.headers.SetCookie; +import akka.http.javadsl.server.Rejections; +import akka.http.javadsl.server.Route; +import akka.http.javadsl.testkit.JUnitRouteTest; +import akka.http.scaladsl.model.DateTime; +import org.junit.Test; + +import java.util.Optional; +import java.util.OptionalLong; + +public class CookieDirectivesExamplesTest extends JUnitRouteTest { + + @Test + public void testCookie() { + //#cookie + final Route route = cookie("userName", nameCookie -> + complete("The logged in user is '" + nameCookie.value() + "'") + ); + + // tests: + testRoute(route).run(HttpRequest.GET("/").addHeader(Cookie.create("userName", "paul"))) + .assertEntity("The logged in user is 'paul'"); + // missing cookie + runRouteUnSealed(route, HttpRequest.GET("/")) + .assertRejections(Rejections.missingCookie("userName")); + testRoute(route).run(HttpRequest.GET("/")) + .assertEntity("Request is missing required cookie 'userName'"); + //#cookie + } + + @Test + public void testOptionalCookie() { + //#optionalCookie + final Route route = optionalCookie("userName", optNameCookie -> { + if (optNameCookie.isPresent()) { + return complete("The logged in user is '" + optNameCookie.get().value() + "'"); + } else { + return complete("No user logged in"); + } + } + ); + + // tests: + testRoute(route).run(HttpRequest.GET("/").addHeader(Cookie.create("userName", "paul"))) + .assertEntity("The logged in user is 'paul'"); + testRoute(route).run(HttpRequest.GET("/")) + .assertEntity("No user logged in"); + //#optionalCookie + } + + @Test + public void testDeleteCookie() { + //#deleteCookie + final Route route = deleteCookie("userName", () -> + complete("The user was logged out") + ); + + // tests: + final HttpHeader expected = SetCookie.create( + HttpCookie.create( + "userName", + "deleted", + Optional.of(DateTime.MinValue()), + OptionalLong.empty(), + Optional.empty(), + Optional.empty(), + false, + false, + Optional.empty())); + + testRoute(route).run(HttpRequest.GET("/")) + .assertEntity("The user was logged out") + .assertHeaderExists(expected); + //#deleteCookie + } + + @Test + public void testSetCookie() { + //#setCookie + final Route route = setCookie(HttpCookie.create("userName", "paul"), () -> + complete("The user was logged in") + ); + + // tests: + final HttpHeader expected = SetCookie.create(HttpCookie.create("userName", "paul")); + + testRoute(route).run(HttpRequest.GET("/")) + .assertEntity("The user was logged in") + .assertHeaderExists(expected); + //#setCookie + } + +} diff --git a/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/cookie.rst b/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/cookie.rst index 2b3ad3ef53..3509ca33f8 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/cookie.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/cookie.rst @@ -13,4 +13,5 @@ Use the :ref:`-optionalCookie-java-` directive instead if you want to support mi 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 `_. + +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/CookieDirectivesExamplesTest.java#cookie diff --git a/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/deleteCookie.rst b/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/deleteCookie.rst index 3dbc100934..daa7834e87 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/deleteCookie.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/deleteCookie.rst @@ -11,4 +11,5 @@ Use the :ref:`-setCookie-java-` directive to update a cookie. 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 `_. + +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/CookieDirectivesExamplesTest.java#deleteCookie diff --git a/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/optionalCookie.rst b/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/optionalCookie.rst index 2b4570f644..763920914b 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/optionalCookie.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/optionalCookie.rst @@ -12,4 +12,5 @@ Use the :ref:`-cookie-java-` directive instead if the inner route does not handl 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 `_. + +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/CookieDirectivesExamplesTest.java#optionalCookie diff --git a/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/setCookie.rst b/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/setCookie.rst index 5a71ce6670..d4bedb0179 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/setCookie.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/cookie-directives/setCookie.rst @@ -12,4 +12,5 @@ Use the :ref:`-deleteCookie-java-` directive to delete a cookie. 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 `_. + +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/CookieDirectivesExamplesTest.java#setCookie