/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.plugin.context;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import com.enonic.cms.core.servlet.ServletRequestAccessor;
import static org.junit.Assert.*;
public class PluginEnvironmentImplTest
{
private PluginEnvironmentImpl env;
@Before
public void setUp()
{
this.env = new PluginEnvironmentImpl();
}
@Test
public void testSharedObject()
{
assertNull( this.env.getSharedObject( "key" ) );
this.env.setSharedObject( "key", "value" );
assertNotNull( this.env.getSharedObject( "key" ) );
assertEquals( "value", this.env.getSharedObject( "key" ) );
}
@Test
public void testSharedObjectNames()
{
final Set<String> set1 = this.env.getSharedObjectNames( null );
assertNotNull( set1 );
assertEquals( 0, set1.size() );
this.env.setSharedObject( "key", "value" );
this.env.setSharedObject( "prefix.key", "value" );
final Set<String> set2 = this.env.getSharedObjectNames( null );
assertNotNull( set2 );
assertEquals( 2, set2.size() );
final Set<String> set3 = this.env.getSharedObjectNames( "prefix." );
assertNotNull( set3 );
assertEquals( 1, set3.size() );
final Set<String> set4 = this.env.getSharedObjectNames( "unknown." );
assertNotNull( set4 );
assertEquals( 0, set4.size() );
}
@Test
public void testCurrentRequest()
{
ServletRequestAccessor.setRequest( null );
assertNull( this.env.getCurrentRequest() );
final HttpServletRequest req = Mockito.mock( HttpServletRequest.class );
ServletRequestAccessor.setRequest( req );
assertSame( req, this.env.getCurrentRequest() );
}
@Test
public void testCurrentSession()
{
ServletRequestAccessor.setRequest( null );
assertNull( this.env.getCurrentSession() );
final HttpSession session = Mockito.mock( HttpSession.class );
final HttpServletRequest req = Mockito.mock( HttpServletRequest.class );
Mockito.when( req.getSession( true ) ).thenReturn( session );
ServletRequestAccessor.setRequest( req );
assertSame( session, this.env.getCurrentSession() );
}
}