blob: 7b2771ca9a273ca507c165657b83665e26d26233 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 The Eclipse Foundation 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:
* The Eclipse Foundation - initial API and implementation
* Yatta Solutions - bug 432803: public API
*******************************************************************************/
package org.eclipse.epp.mpc.tests.service;
import static org.junit.Assert.*;
import java.util.Collections;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.epp.internal.mpc.core.MarketplaceClientCorePlugin;
import org.eclipse.epp.internal.mpc.core.ServiceLocator;
import org.eclipse.epp.internal.mpc.core.model.Catalog;
import org.eclipse.epp.internal.mpc.core.service.CatalogService;
import org.eclipse.epp.internal.mpc.core.util.ServiceUtil;
import org.eclipse.epp.mpc.core.model.ICatalog;
import org.eclipse.epp.mpc.core.service.ICatalogService;
import org.eclipse.epp.mpc.core.service.IMarketplaceServiceLocator;
import org.eclipse.epp.mpc.tests.Categories.RemoteTests;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceRegistration;
/**
* @author Benjamin Muskalla
*/
@RunWith(BlockJUnit4ClassRunner.class)
public class CatalogServiceTest {
private final class MockCatalogService implements CatalogService {
public List<Catalog> listCatalogs(IProgressMonitor monitor) throws CoreException {
Catalog catalog = new Catalog();
catalog.setId("mock");
return Collections.singletonList(catalog);
}
}
private ICatalogService catalogService;
private IMarketplaceServiceLocator serviceLocator;
private ServiceReference<IMarketplaceServiceLocator> serviceLocatorReference;
private BundleContext bundleContext;
@Before
public void setUp() throws Exception {
bundleContext = MarketplaceClientCorePlugin.getBundle().getBundleContext();
serviceLocatorReference = bundleContext.getServiceReference(IMarketplaceServiceLocator.class);
serviceLocator = bundleContext.getService(serviceLocatorReference);
catalogService = serviceLocator.getCatalogService();
}
@Test
@Category(RemoteTests.class)
public void listCatalogs() throws CoreException {
List<? extends ICatalog> catalogs = catalogService.listCatalogs(new NullProgressMonitor());
assertNotNull(catalogs);
assertFalse(catalogs.isEmpty());
for (ICatalog catalog : catalogs) {
assertNotNull(catalog.getId());
assertNotNull(catalog.getUrl());
assertNotNull(catalog.getName());
}
}
@Test
public void testSampleCatalog() throws Exception {
ServiceRegistration<ICatalogService> registration = bundleContext.registerService(ICatalogService.class,
new MockCatalogService(), ServiceUtil.serviceRanking(Integer.MAX_VALUE, null));
try {
catalogService = ServiceLocator.getInstance().getCatalogService();
List<? extends ICatalog> catalogs = catalogService.listCatalogs(null);
assertEquals(1, catalogs.size());
assertEquals("mock", catalogs.get(0).getId());
} finally {
// ServiceLocator.setInstance(oldInstance);
registration.unregister();
}
}
@After
public void tearDown() {
serviceLocator = null;
bundleContext.ungetService(serviceLocatorReference);
serviceLocatorReference = null;
bundleContext = null;
}
}