Package jodd.petite

Source Code of jodd.petite.ShutdownTest

// Copyright (c) 2003-2014, Jodd Team (jodd.org). All Rights Reserved.

package jodd.petite;

import jodd.petite.scope.SessionScope;
import jodd.petite.tst.Boo;
import jodd.petite.tst.Foo;
import jodd.petite.tst.Ses;
import jodd.petite.tst.Zoo;
import jodd.servlet.RequestContextListener;
import org.junit.Test;

import javax.servlet.ServletRequestEvent;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionBindingEvent;

import static jodd.petite.ServletsMockitoUtil.createHttpSessionBindingEvent;
import static jodd.petite.ServletsMockitoUtil.createRequest;
import static jodd.petite.ServletsMockitoUtil.createServletRequestEvent;
import static jodd.petite.ServletsMockitoUtil.createSession;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;

public class ShutdownTest {

  public static final String ATTR_NAME = SessionScope.class.getName() + ".SESSION_BEANS.";

  @Test
  public void testSingletonDestroyMethods() {
    PetiteContainer pc = new PetiteContainer();

    pc.registerPetiteBean(Foo.class, null, null, null, false);
    pc.registerPetiteBean(Zoo.class, null, null, null, false);
    pc.registerPetiteBean(Boo.class, null, null, null, false);

    Boo boo = (Boo) pc.getBean("boo");
    assertEquals(0, boo.getCount2());

    pc.shutdown();

    assertEquals(2, boo.getCount2());
  }

  @Test
  public void testSessionExpired() {
    // http session
    HttpSession session = createSession("S1");
    HttpServletRequest request = createRequest(session);
    ServletRequestEvent requestEvent = createServletRequestEvent(request);
    HttpSessionBindingEvent event = createHttpSessionBindingEvent(session);

    // jodd
    RequestContextListener requestContextListener = new RequestContextListener();

    // start session, init request
    requestContextListener.requestInitialized(requestEvent);

    // petite
    PetiteContainer pc = new PetiteContainer();
    pc.registerPetiteBean(Ses.class, null, null, null, false);

    // callback not yet added
    SessionScope.SessionBeans sessionBeans = (SessionScope.SessionBeans) session.getAttribute(ATTR_NAME);
    assertNull(sessionBeans);

    Ses ses = (Ses) pc.getBean("ses");
    assertNotNull(ses);

    // callback added
    sessionBeans = (SessionScope.SessionBeans) session.getAttribute(ATTR_NAME);
    assertNotNull(sessionBeans);

    ses.setValue("jodd");

    // session expired
    sessionBeans.valueUnbound(event);

    assertEquals("-jodd", ses.getValue());

    pc.shutdown();

    assertEquals("-jodd", ses.getValue());
  }

  @Test
  public void testSessionShutdown() {
    // http session
    HttpSession session = createSession("S2");
    HttpServletRequest request = createRequest(session);
    ServletRequestEvent requestEvent = createServletRequestEvent(request);
    HttpSessionBindingEvent event = createHttpSessionBindingEvent(session);

    // jodd
    RequestContextListener requestContextListener = new RequestContextListener();

    // start session, init request
    requestContextListener.requestInitialized(requestEvent);

    // petite
    PetiteContainer pc = new PetiteContainer();
    pc.registerPetiteBean(Ses.class, null, null, null, false);

    Ses ses = (Ses) pc.getBean("ses");
    assertNotNull(ses);
    ses.setValue("jodd");

    // session not expired
    assertEquals("jodd", ses.getValue());

    // shutdown
    pc.shutdown();

    assertEquals("-jodd", ses.getValue());
  }
}
TOP

Related Classes of jodd.petite.ShutdownTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.