/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.structure.menuitem; import org.junit.Before; import org.junit.Test; import junit.framework.TestCase; import com.enonic.cms.core.security.user.User; import com.enonic.cms.core.security.user.UserEntity; import com.enonic.cms.core.security.user.UserKey; 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.page.PageEntity; import com.enonic.cms.core.structure.page.template.PageTemplateEntity; /** * */ public class MenuItemEntityRunAsTest extends TestCase { private SiteEntity site; private UserEntity defaultRunAsUser; @Before public void setUp() { defaultRunAsUser = createUser( UserType.NORMAL, "virtualBoss", "188A09" ); site = new SiteEntity(); } @Test public void testResolveRunAsAnonymousUser() { UserEntity user = createUser( UserType.ANONYMOUS, "anonymous", "51B0C7" ); MenuItemEntity menuItem = createMenuItem( site, "Utenriks", RunAsType.PERSONALIZED, null, null ); User runAsUser = menuItem.resolveRunAsUser( user, true, null ); assertTrue( "The run as user should be anonymous when input is anonymous", runAsUser.isAnonymous() ); menuItem.setRunAs( RunAsType.INHERIT ); runAsUser = menuItem.resolveRunAsUser( user, true, null ); assertTrue( "The run as user should be anonymous when input is anonymous", runAsUser.isAnonymous() ); menuItem.setRunAs( RunAsType.DEFAULT_USER ); runAsUser = menuItem.resolveRunAsUser( user, true, null ); assertTrue( "The run as user should be anonymous when input is anonymous", runAsUser.isAnonymous() ); } // After running good for years, the next four tests have been commented out when a MenuHandler could not be provided for object being tested. public void xtestResolveRunAsUserNoInherit() { UserEntity loggedInUser = createUser( UserType.NORMAL, "spirrevipp", "51B0C7" ); MenuItemEntity menuItem = createMenuItem( site, "Utenriks", RunAsType.PERSONALIZED, null, null ); User runAsUser = menuItem.resolveRunAsUser( loggedInUser, true, null ); assertEquals( "Logged in user is not run as user, despite 'Personalized' run as policy", loggedInUser, runAsUser ); menuItem.setRunAs( RunAsType.DEFAULT_USER ); runAsUser = menuItem.resolveRunAsUser( loggedInUser, true, null ); assertEquals( "Run as user is not the default despite 'Default User' run as policy.", defaultRunAsUser, runAsUser ); } public void xtestResolveRunAsUserInheritFromPageTemplate() { UserEntity loggedInUser = createUser( UserType.NORMAL, "spirrevipp", "51B0C7" ); PageEntity page = createPage( "simplePage", RunAsType.PERSONALIZED ); MenuItemEntity menuItem = createMenuItem( site, "Utenriks", RunAsType.INHERIT, null, page ); User runAsUser = menuItem.resolveRunAsUser( loggedInUser, true, null ); assertEquals( "Logged in user is not run as user, despite 'Personalized' run as policy", loggedInUser, runAsUser ); menuItem.setRunAs( RunAsType.DEFAULT_USER ); runAsUser = menuItem.resolveRunAsUser( loggedInUser, true, null ); assertEquals( "Run as user is not the default despite 'Default User' run as policy.", defaultRunAsUser, runAsUser ); } public void xtestResolveRunAsUserInheritFromHigherLevelMenuItem() { UserEntity loggedInUser = createUser( UserType.NORMAL, "spirrevipp", "51B0C7" ); PageEntity topLevelPage = createPage( "introPage", RunAsType.DEFAULT_USER ); PageEntity secondLevelPageEntity = createPage( "sectionPage", RunAsType.DEFAULT_USER ); PageEntity lowLevelPage = createPage( "simplePage", RunAsType.INHERIT ); MenuItemEntity topLevelMenuItem = createMenuItem( site, "Nyheter", RunAsType.DEFAULT_USER, null, topLevelPage ); MenuItemEntity secondLevelMenuItem = createMenuItem( site, "Utenriks", RunAsType.PERSONALIZED, topLevelMenuItem, secondLevelPageEntity ); MenuItemEntity lowLevelMenuItem = createMenuItem( site, "Opprøret i Tibet", RunAsType.INHERIT, secondLevelMenuItem, lowLevelPage ); User runAsUser = lowLevelMenuItem.resolveRunAsUser( loggedInUser, true, null ); assertEquals( "Logged in user is not run as user, despite 'Personalized' run as policy", loggedInUser, runAsUser ); topLevelPage.getTemplate().setRunAs( RunAsType.PERSONALIZED ); secondLevelPageEntity.getTemplate().setRunAs( RunAsType.PERSONALIZED ); topLevelMenuItem.setRunAs( RunAsType.PERSONALIZED ); secondLevelMenuItem.setRunAs( RunAsType.DEFAULT_USER ); runAsUser = lowLevelMenuItem.resolveRunAsUser( loggedInUser, true, null ); assertEquals( "Run as user is not the default despite 'Default User' run as policy.", defaultRunAsUser, runAsUser ); secondLevelMenuItem.setRunAs( RunAsType.INHERIT ); topLevelMenuItem.setRunAs( RunAsType.DEFAULT_USER ); runAsUser = lowLevelMenuItem.resolveRunAsUser( loggedInUser, true, null ); assertEquals( "Run as user is not the default despite 'Default User' run as policy.", defaultRunAsUser, runAsUser ); topLevelPage.getTemplate().setRunAs( RunAsType.DEFAULT_USER ); secondLevelPageEntity.getTemplate().setRunAs( RunAsType.DEFAULT_USER ); topLevelMenuItem.setRunAs( RunAsType.PERSONALIZED ); runAsUser = lowLevelMenuItem.resolveRunAsUser( loggedInUser, true, null ); assertEquals( "Logged in user is not run as user, despite 'Personalized' run as policy", loggedInUser, runAsUser ); } public void xtestResolveRunAsUserInheritFromSite() { UserEntity loggedInUser = createUser( UserType.NORMAL, "spirrevipp", "51B0C7" ); PageEntity topLevelPage = createPage( "introPage", RunAsType.PERSONALIZED ); PageEntity page = createPage( "simplePage", RunAsType.INHERIT ); MenuItemEntity topLevelMenuItem = createMenuItem( site, "Nyheter", RunAsType.INHERIT, null, topLevelPage ); MenuItemEntity menuItem = createMenuItem( site, "Utenriks", RunAsType.INHERIT, topLevelMenuItem, page ); User runAsUser = menuItem.resolveRunAsUser( loggedInUser, true, null ); assertEquals( "Run as user is not the default despite 'Default User' run as policy.", defaultRunAsUser, runAsUser ); } private PageEntity createPage( String name, RunAsType runAsType ) { PageEntity page = new PageEntity(); PageTemplateEntity template = new PageTemplateEntity(); template.setRunAs( runAsType ); template.setName( name ); page.setTemplate( template ); return page; } private UserEntity createUser( UserType type, String uid, String key ) { UserEntity user = new UserEntity(); user.setDeleted( 0 ); user.setType( type ); user.setName( uid ); user.setKey( new UserKey( key ) ); return user; } private MenuItemEntity createMenuItem( SiteEntity site, String name, RunAsType runAsType, MenuItemEntity parent, PageEntity page ) { MenuItemEntity menuItem = new MenuItemEntity(); menuItem.setSite( site ); menuItem.setName( name ); menuItem.setRunAs( runAsType ); menuItem.setParent( parent ); menuItem.setPage( page ); return menuItem; } }