/*******************************************************************************
* Copyright (c) May 18, 2011 Zend Technologies Ltd.
* 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
*******************************************************************************/
package org.zend.sdk.test.sdklib.repository;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import java.io.File;
import java.net.MalformedURLException;
import java.util.Random;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.zend.sdk.test.AbstractTest;
import org.zend.sdklib.SdkException;
import org.zend.sdklib.internal.repository.UserBasedRepositoryLoader;
import org.zend.sdklib.internal.repository.local.FileBasedRepository;
import org.zend.sdklib.manager.RepositoryManager;
import org.zend.sdklib.repository.IRepository;
import org.zend.sdklib.repository.IRepositoryLoader;
import org.zend.sdklib.repository.site.Site;
import org.zend.webapi.core.WebApiException;
public class TestRepositoryManager extends AbstractTest {
private IRepositoryLoader loader;
private File file;
@Before
public void startup() {
final String tempDir = System.getProperty("java.io.tmpdir");
file = new File(tempDir + File.separator + new Random().nextInt());
file.mkdir();
loader = new UserBasedRepositoryLoader(file);
}
@After
public void shutdown() {
loader = null;
file.deleteOnExit();
}
@Test
public void testCreateManagerWithInvalidTarget() throws WebApiException,
MalformedURLException, SdkException {
IRepositoryLoader loader = spy(new UserBasedRepositoryLoader(file));
when(loader.loadAll()).thenReturn(
new IRepository[] { new FileBasedRepository("file://tmp/me",
new File("/tmp/me")) });
RepositoryManager manager = new RepositoryManager(loader);
assertTrue(manager.getRepositories().length == 1);
}
@Test
public void testAddDuplicatedTarget() throws SdkException {
RepositoryManager manager = new RepositoryManager(loader);
IRepository target = getRepository();
manager.add(target);
manager.add(target);
assertTrue(manager.getRepositories().length == 1);
}
@Test
public void testAddRemoveTarget() throws SdkException {
RepositoryManager manager = new RepositoryManager(loader);
IRepository target = getRepository();
manager.add(target);
manager.remove(target);
assertTrue(manager.getRepositories().length == 0);
}
private IRepository getRepository() throws SdkException {
FileBasedRepository repository = spy(new FileBasedRepository(
"file://tmp/me", new File("/tmp/me")));
doReturn(new Site()).when(repository).getSite();
return repository;
}
}