package org.jooby.session;
import static org.junit.Assert.assertNotNull;
import java.util.concurrent.CountDownLatch;
import org.jooby.Session;
import org.jooby.test.ServerFeature;
import org.junit.Test;
public class SessionSaveIntervalFeature extends ServerFeature {
private static final CountDownLatch saveCalls = new CountDownLatch(2);
{
session(new Session.Mem() {
@Override
public void save(final Session session) {
saveCalls.countDown();
}
}).saveInterval(1);
get("/session", (req, rsp) -> {
rsp.send(req.session().id());
});
}
@Test
public void sessionMustBeSavedOnSaveInterval() throws Exception {
request()
.get("/session")
.expect(200)
.header("Set-Cookie", setCookie -> assertNotNull(setCookie));
request()
.get("/session")
.expect(200)
.header("Set-Cookie", (String) null);
request()
.get("/session")
.expect(200)
.header("Set-Cookie", (String) null);
Thread.sleep(1200L);
request()
.get("/session")
.expect(200)
.header("Set-Cookie", (String) null);
saveCalls.await();
}
}