/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.rce.communication.file.internal; import static de.rcenvironment.core.communication.testutils.CommunicationTestHelper.URI; import java.net.URI; import junit.framework.TestCase; import org.easymock.EasyMock; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import de.rcenvironment.core.communication.common.CommunicationException; import de.rcenvironment.core.communication.fileaccess.api.RemoteFileConnection; import de.rcenvironment.core.communication.fileaccess.internal.RemoteFileConnectionSupport; import de.rcenvironment.core.communication.fileaccess.spi.RemoteFileConnectionFactory; /** * Test cases for {@link RemoteFileConnectionSupport}. * * @author Doreen Seider */ public class RemoteFileConnectionSupportTest extends TestCase { private final String filter = "(" + RemoteFileConnectionFactory.PROTOCOL + "=de.rcenvironment.rce.communication)"; private BundleContext contextMock = EasyMock.createNiceMock(BundleContext.class); private RemoteFileConnectionSupport support; @Override protected void setUp() throws Exception { support = new RemoteFileConnectionSupport(); } /** * Test. * * @throws Exception if the test fails. */ public void testGetRemoteFileConnectionForSuccess() throws Exception { Bundle bundleMock = EasyMock.createNiceMock(Bundle.class); EasyMock.expect(bundleMock.getSymbolicName()).andReturn("de.rcenvironment.rce.communication").anyTimes(); EasyMock.replay(bundleMock); ServiceReference<?> ref = EasyMock.createNiceMock(ServiceReference.class); RemoteFileConnectionFactory factoryMock = EasyMock.createStrictMock(RemoteFileConnectionFactory.class); EasyMock.expect(factoryMock.createRemoteFileConnection(new URI(URI))) .andReturn(EasyMock.createNiceMock(RemoteFileConnection.class)); EasyMock.replay(factoryMock); contextMock = EasyMock.createNiceMock(BundleContext.class); EasyMock.expect(contextMock.getBundles()).andReturn(new Bundle[] { bundleMock }).anyTimes(); EasyMock.expect(contextMock.getAllServiceReferences(EasyMock.eq(RemoteFileConnectionFactory.class.getName()), EasyMock.eq((String) null))).andReturn(new ServiceReference[] { ref }).anyTimes(); contextMock.getService(ref); EasyMock.expectLastCall().andReturn(factoryMock).anyTimes(); EasyMock.replay(contextMock); support.activate(contextMock); RemoteFileConnection connection = RemoteFileConnectionSupport.getRemoteFileConnection(new URI(URI)); assertNotNull(connection); } /** * * Test. * * @throws Exception if the test fails. */ public void testGetRemoteInputStreamForFailure() throws Exception { EasyMock.reset(contextMock); EasyMock.expect(contextMock.getBundles()).andReturn(null).anyTimes(); EasyMock.replay(contextMock); support.activate(contextMock); try { RemoteFileConnectionSupport.getRemoteFileConnection(new URI(URI)); fail(); } catch (CommunicationException e) { assertTrue(true); } EasyMock.reset(contextMock); EasyMock.expect(contextMock.getBundles()).andReturn(new Bundle[] {}).anyTimes(); EasyMock.expect(contextMock.getAllServiceReferences(EasyMock.eq(RemoteFileConnectionFactory.class.getName()), EasyMock.eq(filter))).andReturn(null).anyTimes(); EasyMock.replay(contextMock); support.activate(contextMock); try { RemoteFileConnectionSupport.getRemoteFileConnection(new URI(URI)); fail(); } catch (CommunicationException e) { assertTrue(true); } EasyMock.reset(contextMock); EasyMock.expect(contextMock.getBundles()).andReturn(new Bundle[] {}).anyTimes(); ServiceReference ref = EasyMock.createNiceMock(ServiceReference.class); EasyMock.expect(contextMock.getAllServiceReferences(EasyMock.eq(RemoteFileConnectionFactory.class.getName()), EasyMock.eq(filter))).andReturn(new ServiceReference[] { ref }).anyTimes(); EasyMock.expect(contextMock.getService(ref)).andReturn(null).anyTimes(); EasyMock.replay(contextMock); support.activate(contextMock); try { RemoteFileConnectionSupport.getRemoteFileConnection(new URI(URI)); fail(); } catch (CommunicationException e) { assertTrue(true); } } }