blob: a452608b5d6805ff9fb99895d11e37326aa8cddd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2012 Frank Appel and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Frank Appel - initial API and implementation
* EclipseSource - ongoing development
******************************************************************************/
package org.eclipse.rap.rwt.osgi.internal;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import org.junit.Before;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.osgi.framework.*;
import org.osgi.service.http.HttpService;
public class HttpTracker_Test {
private BundleContext bundleContext;
private ApplicationLauncherImpl applicationLauncher;
private ServiceReference< HttpService> serviceReference;
private HttpService service;
private HttpTracker tracker;
@Before
@SuppressWarnings( "unchecked" )
public void setUp() throws Exception {
mockBundleContext();
applicationLauncher = mock( ApplicationLauncherImpl.class );
tracker = new HttpTracker( bundleContext, applicationLauncher );
serviceReference = mock( ServiceReference.class );
service = mock( HttpService.class );
}
@Test
public void testAddingService() {
tracker.addingService( serviceReference );
verify( applicationLauncher ).addHttpService( serviceReference );
}
@Test
public void testRemovedService() {
tracker.removedService( serviceReference, service );
verify( applicationLauncher ).removeHttpService( service );
}
@Test
public void testOpen() {
tracker.open();
verify( applicationLauncher ).addHttpService( serviceReference );
}
private void mockBundleContext() throws InvalidSyntaxException {
bundleContext = mock( BundleContext.class );
doAnswer( createServiceRegistrationTrigger() )
.when( bundleContext ).addServiceListener( any( ServiceListener.class ), any( String.class ) );
}
private Answer createServiceRegistrationTrigger() {
return new Answer() {
public Object answer( InvocationOnMock invocation ) throws Throwable {
triggerServiceRegistration( invocation );
return null;
}
};
}
private void triggerServiceRegistration( InvocationOnMock invocation ) {
ServiceListener listener = ( ServiceListener )invocation.getArguments()[ 0 ];
listener.serviceChanged( new ServiceEvent( ServiceEvent.REGISTERED, serviceReference ) );
}
}