package net.contextfw.web.commons.cloud.session;
import static org.junit.Assert.assertTrue;
import javax.servlet.http.Cookie;
import net.contextfw.web.application.PageContext;
import net.contextfw.web.commons.cloud.internal.session.CloudSessionHolder;
import org.junit.Test;
import com.google.inject.Provider;
public class OpenMongoSessionTest extends AbstractSessionTest {
/**
* Trying to open existing session without session throws exception
*/
@Test(expected=NoSessionException.class)
public void Open_Existing_Session_When_No_Session() {
CloudSession session = getBasicSession(
mockPageContext(
mockRequest(RequestExpect.WITH_COOKIE, null),
mockResponse(null)),
mockSessionHolder(null));
session.openSession(OpenMode.EXISTING);
}
/**
* Trying to open existing session without session throws exception
*/
@Test(expected=NoSessionException.class)
public void Open_Existing_Session_When_No_Session_2() {
Provider<PageContext> context = mockPageContext(
mockRequest(null, null),
mockResponse(null, null));
Provider<CloudSessionHolder> holder = mockSessionHolder(null);
context.get().setRequest(null);
context.get().setResponse(null);
CloudSession session = getBasicSession(
context,
holder);
session.openSession(OpenMode.EXISTING);
}
/**
* Trying to open existing session without session throws exception
*/
@Test(expected=NoSessionException.class)
public void Open_Existing_Session_When_No_Session_3() {
Provider<PageContext> context = mockPageContext(
mockRequest(null, null),
mockResponse(null, null));
Provider<CloudSessionHolder> holder = mockSessionHolder(FOOBAR);
context.get().setRequest(null);
context.get().setResponse(null);
CloudSession session = getBasicSession(
context,
holder);
session.openSession(OpenMode.EXISTING);
}
@Test
public void Open_Lazy_Session_When_No_Session() {
CloudSession session = getBasicSession(
mockPageContext(
mockRequest(RequestExpect.WITH_COOKIE),
mockResponse(null)),
mockSessionHolder(null));
session.openSession(OpenMode.LAZY);
}
@Test
public void Open_Eager_Session_When_No_Session() {
CloudSession session = getBasicSession(
mockPageContext(
mockRequest(RequestExpect.NO_COOKIES),
mockResponse(ResponseExpect.ADD_COOKIE)),
mockSessionHolder(null));
session.openSession(OpenMode.EAGER);
}
@Test
public void Open_Lazy_Session_With_Session() {
mockSession();
Cookie cookie = new Cookie(COOKIE_NAME, FOOBAR);
CloudSession session = getBasicSession(
mockPageContext(
mockRequest(RequestExpect.WITH_COOKIE, cookie),
mockResponse(ResponseExpect.ADD_COOKIE, null)),
mockSessionHolder(null));
session.openSession(OpenMode.LAZY);
}
@Test
public void Open_Lazy_Session_With_Expired_Session() {
mockSession();
sleep(1100);
Cookie cookie = new Cookie(COOKIE_NAME, FOOBAR);
CloudSession session = getBasicSession(
mockPageContext(
mockRequest(RequestExpect.WITH_COOKIE, cookie),
mockResponse(null)),
mockSessionHolder(null));
session.openSession(OpenMode.LAZY);
}
@Test
public void Open_Eager_Session_With_Session() {
Cookie cookie = new Cookie(COOKIE_NAME, FOOBAR);
CloudSession session = getBasicSession(
mockPageContext(
mockRequest(RequestExpect.WITH_COOKIE, cookie),
mockResponse(ResponseExpect.ADD_COOKIE, null)),
mockSessionHolder(null));
session.openSession(OpenMode.EAGER);
}
@Test
public void Open_Existing_Session_With_Session() {
mockSession();
CloudSession session = getBasicSession(
mockPageContext(
mockRequest(null),
mockResponse(ResponseExpect.ADD_COOKIE, null)),
mockSessionHolder(FOOBAR));
session.openSession(OpenMode.EXISTING);
}
@Test
public void Open_Existing_Session_With_Session_2() {
mockSession();
Provider<PageContext> context = mockPageContext(
mockRequest(null, null),
mockResponse(null, null));
Provider<CloudSessionHolder> holder = mockSessionHolder(FOOBAR);
context.get().setRequest(null);
context.get().setResponse(null);
CloudSession session = getBasicSession(
context,
holder);
session.openSession(OpenMode.EXISTING);
assertTrue(holder.get().isOpen());
}
@Test(expected=NoSessionException.class)
public void Open_Non_Existing_Session_Without_Request() {
mockSession();
Provider<PageContext> context = mockPageContext(
mockRequest(null, null),
mockResponse(null, null));
context.get().setRequest(null);
context.get().setResponse(null);
CloudSession session = getBasicSession(context,
mockSessionHolder(null));
session.openSession(OpenMode.LAZY);
}
@Test(expected=NoSessionException.class)
public void Open_Existing_Session_With_Expired_Session() {
mockSession();
sleep(1100);
Provider<PageContext> context = mockPageContext(
mockRequest(null, null),
mockResponse(null, null));
context.get().setRequest(null);
context.get().setResponse(null);
CloudSession session = getBasicSession(context, mockSessionHolder(FOOBAR));
session.openSession(OpenMode.EXISTING);
}
}