/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.portal.datasource.executor; import org.junit.Before; import org.junit.Test; import org.springframework.mock.web.MockHttpServletRequest; import com.enonic.cms.core.RequestParameters; import com.enonic.cms.core.language.LanguageEntity; import com.enonic.cms.core.portal.PortalInstanceKey; import com.enonic.cms.core.portal.datasource.el.ExpressionFunctionsFactory; import com.enonic.cms.core.portal.datasource.xml.DataSourceElement; import com.enonic.cms.core.security.user.User; import com.enonic.cms.core.security.user.UserEntity; import com.enonic.cms.core.security.user.UserImpl; import com.enonic.cms.core.security.user.UserKey; import com.enonic.cms.core.security.userstore.UserStoreEntity; import com.enonic.cms.core.structure.SiteEntity; import com.enonic.cms.core.structure.SiteKey; import static org.junit.Assert.*; public class DataSourceExecutorImplTest { private DataSourceExecutorContext context; @Before public void setup() { context = new DataSourceExecutorContext(); MockHttpServletRequest request = new MockHttpServletRequest(); LanguageEntity languageEntity = new LanguageEntity(); languageEntity.setCode( "no" ); PortalInstanceKey portalInstanceKey = PortalInstanceKey.createSite( new SiteKey( 0 ) ); UserStoreEntity userStoreEntity = new UserStoreEntity(); userStoreEntity.setName( "demousers" ); // looks strange, but is needed new ExpressionFunctionsFactory(); UserEntity userEntity = new UserEntity(); userEntity.setName( "elvis" ); userEntity.setKey( new UserKey( "userkey" ) ); userEntity.setDisplayName( "Elvis Presley" ); userEntity.setEmail( "elvis@graceland.com" ); userEntity.setUserStore( userStoreEntity ); User oldUser = new UserImpl(); oldUser.setSelectedLanguageCode( "no" ); context.setDeviceClass( "default" ); context.setHttpRequest( request ); context.setLanguage( languageEntity ); context.setPortalInstanceKey( portalInstanceKey ); SiteEntity site = new SiteEntity(); site.setKey( 0 ); context.setSite( site ); context.setUser( userEntity ); context.setVerticalSession( null ); } @Test public void testNullCondition() { final DataSourceExecutorImpl executor = new DataSourceExecutorImpl( this.context ); final DataSourceElement element = new DataSourceElement( "test" ); assertTrue( executor.isRunnableByCondition( element ) ); } @Test public void testEmptyCondition() { final DataSourceExecutorImpl executor = new DataSourceExecutorImpl( this.context ); final DataSourceElement element = new DataSourceElement( "test" ); element.setCondition( "" ); assertTrue( executor.isRunnableByCondition( element ) ); } @Test public void testConditionWithoutBraces() { final DataSourceExecutorImpl executor = new DataSourceExecutorImpl( this.context ); final DataSourceElement element = new DataSourceElement( "test" ); element.setCondition( "1==1" ); assertFalse( executor.isRunnableByCondition( element ) ); } @Test public void testTrueUserUidCondition() { final DataSourceExecutorImpl executor = new DataSourceExecutorImpl( this.context ); final DataSourceElement element = new DataSourceElement( "test" ); element.setCondition( "${user.uid == 'elvis'}" ); assertTrue( executor.isRunnableByCondition( element ) ); } @Test public void testFalseUserUidCondition() { final DataSourceExecutorImpl executor = new DataSourceExecutorImpl( this.context ); final DataSourceElement element = new DataSourceElement( "test" ); element.setCondition( "${user.uid == 'aron'}" ); assertFalse( executor.isRunnableByCondition( element ) ); } @Test public void testIsblank() { final RequestParameters requestParameters = new RequestParameters(); context.setRequestParameters( requestParameters ); final DataSourceElement element = new DataSourceElement( "test" ); element.setCondition( "${ isblank( param.myParam ) }" ); assertTrue( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.setParameterValue( "myParam", "value" ); assertFalse( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.setParameterValue( "myParam", " " ); assertTrue( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.setParameterValue( "myParam", "" ); assertTrue( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.removeParameter( "myParam" ); assertTrue( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); } @Test public void testIsnotblank() { final RequestParameters requestParameters = new RequestParameters(); context.setRequestParameters( requestParameters ); final DataSourceElement element = new DataSourceElement( "test" ); element.setCondition( "${ isnotblank( param.myParam ) }" ); assertFalse( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.setParameterValue( "myParam", "value" ); assertTrue( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.setParameterValue( "myParam", " " ); assertFalse( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.setParameterValue( "myParam", "" ); assertFalse( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.removeParameter( "myParam" ); assertFalse( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); } @Test public void testIsempty() { final RequestParameters requestParameters = new RequestParameters(); context.setRequestParameters( requestParameters ); final DataSourceElement element = new DataSourceElement( "test" ); element.setCondition( "${ isempty( param.myParam ) }" ); assertTrue( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.setParameterValue( "myParam", "value" ); assertFalse( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.setParameterValue( "myParam", " " ); assertFalse( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.setParameterValue( "myParam", "" ); assertTrue( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.removeParameter( "myParam" ); assertTrue( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); } @Test public void testIsnotempty() { final RequestParameters requestParameters = new RequestParameters(); context.setRequestParameters( requestParameters ); final DataSourceElement element = new DataSourceElement( "test" ); element.setCondition( "${ isnotempty( param.myParam ) }" ); assertFalse( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.setParameterValue( "myParam", "value" ); assertTrue( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.setParameterValue( "myParam", " " ); assertTrue( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.setParameterValue( "myParam", "" ); assertFalse( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); requestParameters.removeParameter( "myParam" ); assertFalse( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); } @Test public void testIsWindowInline() { final DataSourceElement element = new DataSourceElement( "test" ); element.setCondition( "${ portal.isWindowInline == true }" ); context.setPortletWindowRenderedInline( true ); assertTrue( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); context.setPortletWindowRenderedInline( false ); assertFalse( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ) ); element.setCondition( "${ portal.isWindowInline }" ); context.setPortletWindowRenderedInline( true ); assertEquals( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ), true ); element.setCondition( "${ portal.isWindowInline }" ); context.setPortletWindowRenderedInline( false ); assertEquals( new DataSourceExecutorImpl( context ).isRunnableByCondition( element ), false ); } }