/*
* JacORB - a free Java ORB
*
* Copyright (C) 1997-2014 Gerald Brose / The JacORB Team.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.jacorb.test.bugs.bugjac417;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.util.Properties;
import org.easymock.MockControl;
import org.jacorb.config.Configuration;
import org.jacorb.orb.factory.DefaultServerSocketFactory;
import org.jacorb.orb.factory.SocketFactoryManager;
import org.jacorb.orb.listener.NullTCPConnectionListener;
import org.jacorb.test.harness.ORBTestCase;
import org.jacorb.test.harness.TestUtils;
import org.junit.Before;
import org.junit.Test;
import org.omg.CORBA.INITIALIZE;
/**
* @author Alphonse Bendt
*/
public class BugJac417Test extends ORBTestCase
{
private SocketFactoryManager objectUnderTest;
private MockControl configControl;
private Configuration configMock;
@Override
protected void patchORBProperties(Properties properties)
{
properties.setProperty(SocketFactoryManager.SUPPORT_SSL, "false");
}
@Before
public void setUp() throws Exception
{
objectUnderTest = new SocketFactoryManager();
configControl = MockControl.createNiceControl(Configuration.class);
configMock = (Configuration) configControl.getMock();
configControl.expectAndReturn(configMock.getORB(), orb );
configControl.expectAndReturn(configMock.getLogger("org.jacorb.orb.factory"), TestUtils.getLogger() );
configControl.expectAndReturn(configMock.getAttributeAsObject(SocketFactoryManager.TCP_LISTENER, NullTCPConnectionListener.class.getName()), new NullTCPConnectionListener());
configControl.expectAndReturn(configMock.getAttributeAsBoolean(SocketFactoryManager.SUPPORT_SSL, false), false);
}
@Test
public void testNoArg() throws Exception
{
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SOCKET_FACTORY, ""), SocketFactoryNoArgsCtor.class.getName());
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SERVER_SOCKET_FACTORY, DefaultServerSocketFactory.class.getName()), SocketFactoryNoArgsCtor.class.getName());
configControl.replay();
objectUnderTest.configure(configMock);
assertEquals(SocketFactoryNoArgsCtor.class, objectUnderTest.getSocketFactory().getClass());
configControl.verify();
}
@Test
public void testOMGArg() throws Exception
{
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SOCKET_FACTORY, ""), SocketFactoryOMG.class.getName());
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SERVER_SOCKET_FACTORY, DefaultServerSocketFactory.class.getName()), SocketFactoryNoArgsCtor.class.getName());
configControl.replay();
objectUnderTest.configure(configMock);
assertEquals(SocketFactoryOMG.class, objectUnderTest.getSocketFactory().getClass());
assertEquals(orb, ((SocketFactoryOMG)objectUnderTest.getSocketFactory()).orb );
configControl.verify();
}
@Test
public void testJacORBArg() throws Exception
{
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SOCKET_FACTORY, ""), SocketFactoryJacORB.class.getName());
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SERVER_SOCKET_FACTORY, DefaultServerSocketFactory.class.getName()), SocketFactoryNoArgsCtor.class.getName());
configControl.replay();
objectUnderTest.configure(configMock);
assertEquals(SocketFactoryJacORB.class, objectUnderTest.getSocketFactory().getClass());
assertEquals(orb, ((SocketFactoryJacORB)objectUnderTest.getSocketFactory()).orb );
configControl.verify();
}
@Test
public void testConfigurable() throws Exception
{
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SOCKET_FACTORY, ""), ConfigurableFactory.class.getName());
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SERVER_SOCKET_FACTORY, DefaultServerSocketFactory.class.getName()), SocketFactoryNoArgsCtor.class.getName());
configControl.replay();
objectUnderTest.configure(configMock);
assertEquals(ConfigurableFactory.class, objectUnderTest.getSocketFactory().getClass());
assertNotNull(((ConfigurableFactory)objectUnderTest.getSocketFactory()).config );
configControl.verify();
}
@Test
public void testWrongType() throws Exception
{
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SOCKET_FACTORY, ""), WrongFactory.class.getName());
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SERVER_SOCKET_FACTORY, DefaultServerSocketFactory.class.getName()), SocketFactoryNoArgsCtor.class.getName());
configControl.replay();
objectUnderTest.configure(configMock);
try
{
objectUnderTest.getSocketFactory();
fail();
}
catch(INITIALIZE e)
{
// expected
}
configControl.verify();
}
@Test
public void testNoPublicCtor() throws Exception
{
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SOCKET_FACTORY, ""), NoPublicCtor.class.getName());
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SERVER_SOCKET_FACTORY, DefaultServerSocketFactory.class.getName()), SocketFactoryNoArgsCtor.class.getName());
configControl.replay();
objectUnderTest.configure(configMock);
try
{
objectUnderTest.getSocketFactory();
fail();
}
catch(INITIALIZE e)
{
// expected
}
configControl.verify();
}
@Test
public void testFailingFactory() throws Exception
{
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SOCKET_FACTORY, ""), FailingFactory.class.getName());
configControl.expectAndReturn(configMock.getAttribute(SocketFactoryManager.SERVER_SOCKET_FACTORY, DefaultServerSocketFactory.class.getName()), SocketFactoryNoArgsCtor.class.getName());
configControl.replay();
objectUnderTest.configure(configMock);
try
{
objectUnderTest.getSocketFactory();
fail();
}
catch(INITIALIZE e)
{
// expected
}
configControl.verify();
}
}