package org.jooby.session;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.concurrent.CountDownLatch;
import org.jooby.Session;
import org.jooby.test.ServerFeature;
import org.junit.Test;
public class ShouldDestroyAndExpireCookieFeature extends ServerFeature {
private static final CountDownLatch latch = new CountDownLatch(1);
{
session(new Session.Mem() {
@Override
public void delete(final String id) {
super.delete(id);
latch.countDown();
}
});
get("/session", (req, rsp) -> {
rsp.send(req.session().id());
});
get("/invalidate", (req, rsp) -> {
Session session = req.session();
assertTrue(req.ifSession().isPresent());
session.destroy();
assertTrue(!req.ifSession().isPresent());
rsp.send("done");
});
}
@Test
public void shouldDestroyAndExpireCookie() throws Exception {
request()
.get("/session")
.expect(200)
.header("Set-Cookie", setCookie ->
assertNotNull(setCookie)
);
request()
.get("/invalidate")
.expect(200)
.header("Set-Cookie", setCookie -> {
assertNotNull(setCookie);
if (!setCookie.endsWith("01-Jan-1970 00:00:00 GMT;Max-Age=0")) {
assertTrue(setCookie.contains("Max-Age=0"));
}
});
latch.await();
}
}