|
38 | 38 | import java.time.Instant; |
39 | 39 | import java.time.ZoneId; |
40 | 40 | import java.time.format.DateTimeFormatter; |
| 41 | +import java.time.temporal.ChronoUnit; |
41 | 42 | import java.util.Arrays; |
42 | 43 | import java.util.HashMap; |
43 | 44 | import java.util.HashSet; |
@@ -1873,7 +1874,8 @@ public void sessionIdHeader() { |
1873 | 1874 | public void sessionIdMultiple() { |
1874 | 1875 | new JoobyRunner(app -> { |
1875 | 1876 | SessionToken token = SessionToken |
1876 | | - .combine(SessionToken.header("TOKEN"), SessionToken.cookie(SessionToken.SID.clone().setMaxAge(Duration.ofMinutes(30)))); |
| 1877 | + .combine(SessionToken.header("TOKEN"), |
| 1878 | + SessionToken.cookie(SessionToken.SID.clone().setMaxAge(Duration.ofMinutes(30)))); |
1877 | 1879 |
|
1878 | 1880 | app.setSessionStore((SessionStore.memory(token))); |
1879 | 1881 |
|
@@ -1904,6 +1906,31 @@ public void sessionIdMultiple() { |
1904 | 1906 | }); |
1905 | 1907 | } |
1906 | 1908 |
|
| 1909 | + @Test |
| 1910 | + public void sessionData() { |
| 1911 | + new JoobyRunner(app -> { |
| 1912 | + app.get("/session", ctx -> ctx.session() |
| 1913 | + .put("foo", "1") |
| 1914 | + .put("e", ChronoUnit.DAYS.name()) |
| 1915 | + .toMap() |
| 1916 | + ); |
| 1917 | + |
| 1918 | + app.get("/session/convert", ctx -> ctx.session().get("e").to(ChronoUnit.class)); |
| 1919 | + |
| 1920 | + }).ready(client -> { |
| 1921 | + client.get("/session", rsp -> { |
| 1922 | + // Cookie version |
| 1923 | + String sid = sid(rsp, "jooby.sid="); |
| 1924 | + assertNotNull(sid); |
| 1925 | + |
| 1926 | + client.header("Cookie", "jooby.sid=" + sid); |
| 1927 | + client.get("/session/convert", convert -> { |
| 1928 | + assertEquals("Days", convert.body().string()); |
| 1929 | + }); |
| 1930 | + }); |
| 1931 | + }); |
| 1932 | + } |
| 1933 | + |
1907 | 1934 | private String sid(Response rsp, String prefix) { |
1908 | 1935 | String setCookie = rsp.header("Set-Cookie"); |
1909 | 1936 | assertNotNull(setCookie); |
|
0 commit comments