Package org.jasig.portal.portlet.container.services

Source Code of org.jasig.portal.portlet.container.services.PortletCookieServiceImplTest$MockPortalCookie

/**
* Licensed to Jasig under one or more contributor license
* agreements. See the NOTICE file distributed with this work
* for additional information regarding copyright ownership.
* Jasig licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a
* copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

package org.jasig.portal.portlet.container.services;

import java.util.Date;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.Cookie;

import org.apache.commons.lang.time.DateUtils;
import org.easymock.EasyMock;
import org.jasig.portal.portlet.dao.IPortletCookieDao;
import org.jasig.portal.portlet.om.IPortalCookie;
import org.jasig.portal.portlet.om.IPortletCookie;
import org.jasig.portal.portlet.om.IPortletWindowId;
import org.joda.time.DateTime;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;

/**
* Tests for {@link PortletCookieServiceImpl}.
*
* @author Nicholas Blair
* @version $Id$
*/
public class PortletCookieServiceImplTest {

  /**
   * Control test invocation of {@link PortletCookieServiceImpl#updatePortalCookie(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)}.
   */
  @Test
  public void testUpdatePortletCookieControl() {
    IPortletCookieDao portletCookieDao = EasyMock.createMock(IPortletCookieDao.class);
   
    MockPortalCookie portalCookie = new MockPortalCookie();
    portalCookie.setValue("ABCDEF");
    EasyMock.expect(portletCookieDao.createPortalCookie(PortletCookieServiceImpl.DEFAULT_MAX_AGE)).andReturn(portalCookie);
    EasyMock.expect(portletCookieDao.updatePortalCookieExpiration(portalCookie, PortletCookieServiceImpl.DEFAULT_MAX_AGE)).andReturn(portalCookie);
    EasyMock.replay(portletCookieDao);
   
    PortletCookieServiceImpl cookieService = new PortletCookieServiceImpl();
    cookieService.setPortletCookieDao(portletCookieDao);
   
    MockHttpServletRequest request = new MockHttpServletRequest();
    MockHttpServletResponse response = new MockHttpServletResponse();
    cookieService.updatePortalCookie(request, response);
   
    Cookie [] cookies = response.getCookies();
    Assert.assertNotNull(cookies);
    Assert.assertEquals(1, cookies.length);
    EasyMock.verify(portletCookieDao);
  }
 
  /**
   * Test {@link PortletCookieServiceImpl#getOrCreatePortalCookie(javax.servlet.http.HttpServletRequest)}.
   * that results in creating a new PortalCookie.
   */
  @Test
  public void testGetOrCreatePortalCookieCreate() {
    IPortletCookieDao portletCookieDao = EasyMock.createMock(IPortletCookieDao.class);
   
    MockPortalCookie portalCookie = new MockPortalCookie();
    portalCookie.setValue("ABCDEF");
    EasyMock.expect(portletCookieDao.createPortalCookie(PortletCookieServiceImpl.DEFAULT_MAX_AGE)).andReturn(portalCookie);
    EasyMock.replay(portletCookieDao);
   
    PortletCookieServiceImpl cookieService = new PortletCookieServiceImpl();
    cookieService.setPortletCookieDao(portletCookieDao);
   
    MockHttpServletRequest request = new MockHttpServletRequest();
    cookieService.getOrCreatePortalCookie(request);
   
    EasyMock.verify(portletCookieDao);
  }
 
  /**
   * Test {@link PortletCookieServiceImpl#getOrCreatePortalCookie(javax.servlet.http.HttpServletRequest)}.
   * that results in returning an existing portalcookie from the request cookies
   */
  @Test
  public void testGetOrCreatePortalCookieGetExistingFromRequestCookies() {
    IPortletCookieDao portletCookieDao = EasyMock.createMock(IPortletCookieDao.class);
    MockPortalCookie portalCookie = new MockPortalCookie();
    portalCookie.setValue("ABCDEF");
   
    EasyMock.expect(portletCookieDao.getPortalCookie("ABCDEF")).andReturn(portalCookie);
    EasyMock.replay(portletCookieDao);
   
    PortletCookieServiceImpl cookieService = new PortletCookieServiceImpl();
    cookieService.setPortletCookieDao(portletCookieDao);
   
    MockHttpServletRequest request = new MockHttpServletRequest();
    Cookie [] cookies = new Cookie[1];
    Cookie cookie = new Cookie(IPortletCookieService.DEFAULT_PORTAL_COOKIE_NAME, "ABCDEF");
    cookies[0] = cookie;
    request.setCookies(cookies);
   
    IPortalCookie result = cookieService.getOrCreatePortalCookie(request);
    Assert.assertEquals(portalCookie, result);
    EasyMock.verify(portletCookieDao);
  }
 
  /**
   * Test {@link PortletCookieServiceImpl#getOrCreatePortalCookie(javax.servlet.http.HttpServletRequest)}.
   * that results in returning an existing portalcookie from the id stored in the session.
   */
  @Test
  public void testGetOrCreatePortalCookieGetExistingFromSession() {
    IPortletCookieDao portletCookieDao = EasyMock.createMock(IPortletCookieDao.class);
    MockPortalCookie portalCookie = new MockPortalCookie();
    portalCookie.setValue("ABCDEF");
   
    EasyMock.expect(portletCookieDao.getPortalCookie("ABCDEF")).andReturn(portalCookie);
    EasyMock.replay(portletCookieDao);
   
    PortletCookieServiceImpl cookieService = new PortletCookieServiceImpl();
    cookieService.setPortletCookieDao(portletCookieDao);
   
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.getSession().setAttribute(PortletCookieServiceImpl.SESSION_ATTRIBUTE__PORTAL_COOKIE_ID, "ABCDEF");
   
    IPortalCookie result = cookieService.getOrCreatePortalCookie(request);
    Assert.assertEquals(portalCookie, result);
    EasyMock.verify(portletCookieDao);
  }
 
  /**
   * Control test for adding a portlet cookie: no existing portalCookie, portlet cookie requires persistence.
   */
  @Test
  public void testAddCookieControl() {
    Cookie portletCookie = new Cookie("somePortletCookieName", "somePortletCookieValue");
    // max age will trigger persistence
    portletCookie.setMaxAge(360);
   
    IPortletCookieDao portletCookieDao = EasyMock.createMock(IPortletCookieDao.class);
   
    MockPortalCookie portalCookie = new MockPortalCookie();
    portalCookie.setValue("ABCDEF");
   
   
    EasyMock.expect(portletCookieDao.createPortalCookie(PortletCookieServiceImpl.DEFAULT_MAX_AGE)).andReturn(portalCookie);
    EasyMock.expect(portletCookieDao.addOrUpdatePortletCookie(portalCookie, portletCookie)).andReturn(portalCookie);
   
    PortletCookieServiceImpl cookieService = new PortletCookieServiceImpl();
    cookieService.setPortletCookieDao(portletCookieDao);
   
    IPortletWindowId mockWindowId = EasyMock.createMock(IPortletWindowId.class);
    EasyMock.replay(portletCookieDao, mockWindowId);
   
    MockHttpServletRequest request = new MockHttpServletRequest();
    cookieService.addCookie(request, mockWindowId, portletCookie);
   
    EasyMock.verify(portletCookieDao, mockWindowId);
  }
 
  /**
   * Control test for removing a portlet cookie.
   * Logic is nearly identical to create, as both {@link IPortletCookieDao#addOrUpdatePortletCookie(IPortalCookie, Cookie)} is used
   * in both scenarios.
   */
  @Test
  public void testAddCookieRemove() {
    Cookie portletCookie = new Cookie("somePortletCookieName", "somePortletCookieValue");
    // max age will trigger persistence removal
    portletCookie.setMaxAge(0);
   
    IPortletCookieDao portletCookieDao = EasyMock.createMock(IPortletCookieDao.class);
   
    MockPortalCookie portalCookie = new MockPortalCookie();
    portalCookie.setValue("ABCDEF");
   
    EasyMock.expect(portletCookieDao.createPortalCookie(PortletCookieServiceImpl.DEFAULT_MAX_AGE)).andReturn(portalCookie);
    EasyMock.expect(portletCookieDao.addOrUpdatePortletCookie(portalCookie, portletCookie)).andReturn(portalCookie);
   
    PortletCookieServiceImpl cookieService = new PortletCookieServiceImpl();
    cookieService.setPortletCookieDao(portletCookieDao);
   
    IPortletWindowId mockWindowId = EasyMock.createMock(IPortletWindowId.class);
    EasyMock.replay(portletCookieDao, mockWindowId);
   
    MockHttpServletRequest request = new MockHttpServletRequest();
    cookieService.addCookie(request, mockWindowId, portletCookie);
   
    EasyMock.verify(portletCookieDao, mockWindowId);
  }
 
  /**
   * Control test for adding a portlet cookie with maxAge == -1, which results in a session-only cookie.
   */
  @Test
  public void testAddCookieSessionOnly() {
    Cookie portletCookie = new Cookie("somePortletCookieName", "somePortletCookieValue");
    // max age will trigger persistence
    portletCookie.setMaxAge(-1);
   
    IPortletCookieDao portletCookieDao = EasyMock.createMock(IPortletCookieDao.class);
   
    MockPortalCookie portalCookie = new MockPortalCookie();
    portalCookie.setValue("ABCDEF");
   
    EasyMock.expect(portletCookieDao.createPortalCookie(PortletCookieServiceImpl.DEFAULT_MAX_AGE)).andReturn(portalCookie);
   
    PortletCookieServiceImpl cookieService = new PortletCookieServiceImpl();
    cookieService.setPortletCookieDao(portletCookieDao);
   
    IPortletWindowId mockWindowId = EasyMock.createMock(IPortletWindowId.class);
    EasyMock.replay(portletCookieDao, mockWindowId);
   
    MockHttpServletRequest request = new MockHttpServletRequest();
    cookieService.addCookie(request, mockWindowId, portletCookie);
   
    Map<String, SessionOnlyPortletCookieImpl> sessionOnlyMap = cookieService.getSessionOnlyPortletCookieMap(request)
    SessionOnlyPortletCookieImpl sessionOnlyCookie = sessionOnlyMap.get("somePortletCookieName");
    Assert.assertNotNull(sessionOnlyCookie);
    Assert.assertEquals(-1, sessionOnlyCookie.getMaxAge());
    Assert.assertEquals("somePortletCookieValue", sessionOnlyCookie.getValue());
   
    EasyMock.verify(portletCookieDao, mockWindowId);
  }
 
  /**
   * Mock {@link IPortalCookie} used in these tests.
   *
   * @author Nicholas Blair
   * @version $Id$
   */
  class MockPortalCookie implements IPortalCookie {

    private DateTime created = DateTime.now();
    private DateTime expires = DateTime.now().plusHours(1);
    private Set<IPortletCookie> portletCookies = new HashSet<IPortletCookie>();
    private String value;
   
    @Override
    public DateTime getCreated() {
      return this.created;
    }
    @Override
    public DateTime getExpires() {
      return this.expires;
    }
    @Override
    public Set<IPortletCookie> getPortletCookies() {
      return this.portletCookies;
    }
    @Override
    public String getValue() {
      return this.value;
    }
    @Override
    public void setExpires(DateTime expires) {
      this.expires = expires;
    }
    public void setCreated(DateTime created) {
      this.created = created;
    }

    public void setPortletCookies(Set<IPortletCookie> portletCookies) {
      this.portletCookies = portletCookies;
    }
    public void setValue(String value) {
      this.value = value;
    }
  }
 
}
TOP

Related Classes of org.jasig.portal.portlet.container.services.PortletCookieServiceImplTest$MockPortalCookie

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.