/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.portal.rendering; import org.junit.Before; import org.junit.Test; import com.enonic.cms.core.security.user.User; import com.enonic.cms.core.security.user.UserEntity; import com.enonic.cms.core.security.user.UserType; import com.enonic.cms.core.structure.RunAsType; import com.enonic.cms.core.structure.SiteEntity; import com.enonic.cms.core.structure.menuitem.MenuItemEntity; import com.enonic.cms.core.structure.portlet.PortletEntity; import static org.junit.Assert.*; /** * */ public class PortletRunAsUserResolverTest { private SiteEntity site; private UserEntity defaultRunAsUser; @Before public void setUp() { defaultRunAsUser = createUser( UserType.NORMAL, "virtualBoss" ); site = new SiteEntity(); } @Test public void testResolveRunAsAnonymousUser() { UserEntity user = createUser( UserType.ANONYMOUS, "anonymous" ); User runAsUser = PortletRunAsUserResolver.resolveRunAsUser( null, user, null, null ); assertTrue( "The run as user should be anonymous when input is anonymous", runAsUser.isAnonymous() ); } // After having run green for years, the next four tests have been commented out when a MenuHandler could not be provided. public void xtestResolveRunAsUserNoInherit() { UserEntity loggedInUser = createUser( UserType.NORMAL, "spirrevipp" ); PortletEntity portlet = createPortlet( site, RunAsType.PERSONALIZED ); User runAsUser = PortletRunAsUserResolver.resolveRunAsUser( portlet, loggedInUser, null, null ); assertEquals( "Logged in user is not run as user, despite 'Personalized' run as policy", loggedInUser, runAsUser ); portlet.setRunAs( RunAsType.DEFAULT_USER ); runAsUser = PortletRunAsUserResolver.resolveRunAsUser( portlet, loggedInUser, null, null ); assertEquals( "Run as user is not the default despite 'Default User' run as policy.", defaultRunAsUser, runAsUser ); } public void xtestResolveRunAsUserInheritFromMenu() { PortletEntity portlet = createPortlet( site, RunAsType.INHERIT ); UserEntity loggedInUser = createUser( UserType.NORMAL, "spirrevipp" ); MenuItemEntity menuItem = createMenuItem( site, "Opprøret i Tibet", RunAsType.PERSONALIZED, null ); User runAsUser = PortletRunAsUserResolver.resolveRunAsUser( portlet, loggedInUser, menuItem, null ); assertEquals( "Logged in user is not run as user, despite 'Personalized' run as policy", loggedInUser, runAsUser ); menuItem.setRunAs( RunAsType.DEFAULT_USER ); runAsUser = PortletRunAsUserResolver.resolveRunAsUser( portlet, loggedInUser, menuItem, null ); assertEquals( "Run as user is not the default despite 'Default User' run as policy.", defaultRunAsUser, runAsUser ); } public void xtestResolveRunAsUserInheritFromTopLevelMenu() { PortletEntity portlet = createPortlet( site, RunAsType.INHERIT ); UserEntity loggedInUser = createUser( UserType.NORMAL, "spirrevipp" ); MenuItemEntity topLevelMenuItem = createMenuItem( site, "Nyheter", RunAsType.PERSONALIZED, null ); MenuItemEntity menuItem = createMenuItem( site, "Utenriks", RunAsType.INHERIT, topLevelMenuItem ); User runAsUser = PortletRunAsUserResolver.resolveRunAsUser( portlet, loggedInUser, menuItem, null ); assertEquals( "Logged in user is not run as user, despite 'Personalized' run as policy", loggedInUser, runAsUser ); topLevelMenuItem.setRunAs( RunAsType.DEFAULT_USER ); runAsUser = PortletRunAsUserResolver.resolveRunAsUser( portlet, loggedInUser, menuItem, null ); assertEquals( "Run as user is not the default despite 'Default User' run as policy.", defaultRunAsUser, runAsUser ); } public void xtestResolveRunAsUserInheritFromSite() { PortletEntity portlet = createPortlet( site, RunAsType.INHERIT ); UserEntity loggedInUser = createUser( UserType.NORMAL, "spirrevipp" ); MenuItemEntity topLevelMenuItem = createMenuItem( site, "Nyheter", RunAsType.INHERIT, null ); MenuItemEntity menuItem = createMenuItem( site, "Utenriks", RunAsType.INHERIT, topLevelMenuItem ); User runAsUser = PortletRunAsUserResolver.resolveRunAsUser( portlet, loggedInUser, menuItem, null ); assertEquals( "Run as user is not the default despite 'Default User' run as policy.", defaultRunAsUser, runAsUser ); } private UserEntity createUser( UserType type, String uid ) { UserEntity user = new UserEntity(); user.setDeleted( 0 ); user.setType( type ); user.setName( uid ); return user; } private PortletEntity createPortlet( SiteEntity site, RunAsType runAsType ) { PortletEntity portlet = new PortletEntity(); portlet.setSite( site ); portlet.setRunAs( runAsType ); return portlet; } private MenuItemEntity createMenuItem( SiteEntity site, String name, RunAsType runAsType, MenuItemEntity parent ) { MenuItemEntity menuItem = new MenuItemEntity(); menuItem.setSite( site ); menuItem.setName( name ); menuItem.setRunAs( runAsType ); menuItem.setParent( parent ); return menuItem; } }