blob: ee3f2b5094429814d1bb888870bb8c6745b893a2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012-2013 EclipseSource Muenchen GmbH 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:
******************************************************************************/
package org.eclipse.emf.emfstore.client.api.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.Callable;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.emfstore.client.ESRemoteProject;
import org.eclipse.emf.emfstore.client.ESUsersession;
import org.eclipse.emf.emfstore.client.ESWorkspaceProvider;
import org.eclipse.emf.emfstore.client.test.common.cases.ESTestWithLoggedInUserMock;
import org.eclipse.emf.emfstore.client.test.common.dsl.Delete;
import org.eclipse.emf.emfstore.client.util.RunESCommand;
import org.eclipse.emf.emfstore.internal.client.model.ESWorkspaceProviderImpl;
import org.eclipse.emf.emfstore.internal.client.model.ServerInfo;
import org.eclipse.emf.emfstore.internal.client.model.Usersession;
import org.eclipse.emf.emfstore.internal.server.exceptions.FatalESException;
import org.eclipse.emf.emfstore.server.exceptions.ESException;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
public class ServerCommunicationTest extends ESTestWithLoggedInUserMock {
private static final String REMOTE_PROJECT_NAME = "MyProject2"; //$NON-NLS-1$
private static final String PROJECT_NAME = "MyProject"; //$NON-NLS-1$
@Override
@After
public void after() {
try {
Delete.allRemoteProjects(getServer(), getUsersession());
} catch (final ESException ex) {
fail(ex.getMessage());
}
super.after();
}
@BeforeClass
public static void beforeClass() {
startEMFStore();
}
@AfterClass
public static void tearDownClass() {
stopEMFStore();
for (final ServerInfo serverInfo : ESWorkspaceProviderImpl.getInstance().getWorkspace().toInternalAPI()
.getServerInfos()) {
final Usersession lastUsersession = serverInfo.getLastUsersession();
RunESCommand.run(new Callable<Void>() {
public Void call() throws Exception {
if (lastUsersession != null) {
lastUsersession.setServerInfo(null);
}
serverInfo.setLastUsersession(null);
return null;
}
});
}
RunESCommand.run(new Callable<Void>() {
public Void call() throws Exception {
ESWorkspaceProviderImpl.getInstance().getWorkspace().toInternalAPI().getServerInfos().clear();
ESWorkspaceProviderImpl.getInstance().getWorkspace().toInternalAPI().save();
return null;
}
});
}
protected static void deleteRemoteProjects(ESUsersession usersession) throws IOException, FatalESException,
ESException {
for (final ESRemoteProject project : ESWorkspaceProvider.INSTANCE.getWorkspace().getServers().get(0)
.getRemoteProjects(usersession)) {
project.delete(usersession, new NullProgressMonitor());
}
}
@Test
public void testUsersession() {
assertEquals(getUsersession(), getServer().getLastUsersession());
}
@Test
public void testLogin() {
assertTrue(getUsersession().isLoggedIn());
}
@Test
public void testLogout() {
assertTrue(getUsersession().isLoggedIn());
try {
getUsersession().logout();
assertFalse(getUsersession().isLoggedIn());
} catch (final ESException e) {
fail(e.getMessage());
}
}
@Test
public void testCreateRemoteProject() {
try {
final ESRemoteProject remoteProject = getServer().createRemoteProject(getUsersession(), PROJECT_NAME,
new NullProgressMonitor());
assertNotNull(remoteProject);
assertEquals(PROJECT_NAME, remoteProject.getProjectName());
final List<ESRemoteProject> remoteProjects = getServer().getRemoteProjects();
assertEquals(1, remoteProjects.size());
// we expect a copy to be returned
assertFalse(remoteProject.equals(remoteProjects.get(0)));
assertEquals(remoteProject.getProjectName(), remoteProjects.get(0).getProjectName());
} catch (final ESException e) {
fail(e.getMessage());
}
}
@Test
public void testCreateRemoteProjectWithoutUsersession() {
try {
final ESRemoteProject remoteProject = getServer().createRemoteProject(PROJECT_NAME,
new NullProgressMonitor());
assertNotNull(remoteProject);
assertEquals(PROJECT_NAME, remoteProject.getProjectName());
final List<? extends ESRemoteProject> remoteProjects = getServer().getRemoteProjects();
assertEquals(1, remoteProjects.size());
// we expect a copy to be returned
assertFalse(remoteProject.equals(remoteProjects.get(0)));
assertEquals(remoteProject.getProjectName(), remoteProjects.get(0).getProjectName());
} catch (final ESException e) {
fail(e.getMessage());
}
}
@Test
public void testDeleteRemoteProject() {
try {
final ESRemoteProject remoteProject = getServer().createRemoteProject(getUsersession(), PROJECT_NAME,
new NullProgressMonitor());
assertEquals(1, getServer().getRemoteProjects().size());
remoteProject.delete(new NullProgressMonitor());
assertEquals(0, getServer().getRemoteProjects().size());
} catch (final ESException e) {
fail(e.getMessage());
}
}
@Test
public void testGetRemoteProjectsFromServer() {
try {
final ESRemoteProject project = getServer().createRemoteProject(getUsersession(), PROJECT_NAME,
new NullProgressMonitor());
getServer().createRemoteProject(getUsersession(), REMOTE_PROJECT_NAME, new NullProgressMonitor());
assertEquals(2, getServer().getRemoteProjects().size());
getServer().getRemoteProjects().add(project);
assertEquals(2, getServer().getRemoteProjects().size());
} catch (final ESException e) {
fail(e.getMessage());
}
}
}