package org.jooby.issues; import org.jooby.Results; import org.jooby.Session; import org.jooby.test.ServerFeature; import org.junit.Test; import com.typesafe.config.ConfigFactory; import com.typesafe.config.ConfigValueFactory; public class Issue466 extends ServerFeature { { use(ConfigFactory.empty().withValue("application.secret", ConfigValueFactory.fromAnyRef("1234Querty"))); cookieSession() .cookie() .maxAge(86400) .name("user"); get("/466/home", req -> { Session session = req.session(); return session.attributes(); }); get("/466/nosession", req -> { return "OK"; }); get("/466/emptysession", req -> { Session session = req.session(); return session.attributes(); }); get("/466/session", req -> { Session session = req.session(); session.set("foo", "bar"); return session.attributes(); }); get("/466/destroy", req -> { req.session().destroy(); return Results.redirect("/466/home"); }); } @Test public void shouldDestroyAllSessionData() throws Exception { request() .dontFollowRedirect() .get("/466/session") .expect("{foo=bar}"); request() .dontFollowRedirect() .get("/466/destroy") .execute() .header("Set-Cookie", "user=;Version=1;Path=/;HttpOnly;Max-Age=0;Expires=Thu, 01-Jan-1970 00:00:00 GMT"); } @Test public void shouldNotCreateSessionCookie() throws Exception { request() .dontFollowRedirect() .get("/466/nosession") .execute() .header("Set-Cookie", (String) null); } @Test public void shouldNotCreateEmptySessionCookie() throws Exception { request() .dontFollowRedirect() .get("/466/emptysession") .execute() .header("Set-Cookie", (String) null); } @Test public void shouldDestroyAllSessionDataFollowRedirect() throws Exception { request() .get("/466/session") .expect("{foo=bar}"); request() .get("/466/destroy") .expect("{}"); } }