Package org.eclipse.orion.server.tests

Source Code of org.eclipse.orion.server.tests.MetaStoreTest

/*******************************************************************************
* Copyright (c) 2011, 2014 IBM Corporation 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:
*     IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.orion.server.tests;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.orion.internal.server.core.metastore.SimpleMetaStore;
import org.eclipse.orion.server.core.OrionConfiguration;
import org.eclipse.orion.server.core.metastore.IMetaStore;
import org.eclipse.orion.server.core.metastore.ProjectInfo;
import org.eclipse.orion.server.core.metastore.UserInfo;
import org.eclipse.orion.server.core.metastore.WorkspaceInfo;
import org.junit.Test;

public class MetaStoreTest extends AbstractServerTest {
  private WorkspaceInfo createWorkspace() throws CoreException {
    IMetaStore store = getMetaStore();
    UserInfo user = new UserInfo();
    user.setUserName("MetaStoreTestUser");
    store.createUser(user);
    WorkspaceInfo workspace = new WorkspaceInfo();
    workspace.setFullName(SimpleMetaStore.DEFAULT_WORKSPACE_NAME);
    workspace.setUserId(user.getUniqueId());
    store.createWorkspace(workspace);
    return workspace;
  }

  /**
   * Returns the metastore to test. Override to test a different metastore implementation.
   */
  protected IMetaStore getMetaStore() {
    //use currently configured metastore by default
    return OrionConfiguration.getMetaStore();
  }

  @Test
  public void testCreateUser() throws CoreException {
    IMetaStore store = getMetaStore();
    UserInfo user = new UserInfo();
    user.setUserName("testCreateUser");
    store.createUser(user);
    assertNotNull(user.getUniqueId());
  }

  @Test
  public void testUniqueProjectIds() throws CoreException {
    //tests that creating multiple projects will create unique ids
    WorkspaceInfo workspace = createWorkspace();
    IMetaStore metaStore = getMetaStore();
    List<String> ids = new ArrayList<String>();
    for (int i = 0; i < 100; i++) {
      ProjectInfo projectInfo = new ProjectInfo();
      projectInfo.setFullName("Project " + i);
      projectInfo.setWorkspaceId(workspace.getUniqueId());
      IFileStore fileStore = metaStore.getDefaultContentLocation(projectInfo);
      projectInfo.setContentLocation(fileStore.toURI());
      metaStore.createProject(projectInfo);
      String projectId = projectInfo.getUniqueId();
      final java.io.File currentProject = new java.io.File(projectId);
      for (String id : ids) {
        //tests that project id is unique based on current file system case sensitivity
        assertTrue(new java.io.File(id).compareTo(currentProject) != 0);
      }
      ids.add(projectId);
    }
  }

  @Test
  public void testUpdateUser() throws CoreException {
    IMetaStore store = getMetaStore();
    UserInfo user = new UserInfo();
    user.setUserName("testUpdateUser");
    //should not be able to update user that does not exist
    try {
      store.updateUser(user);
      assertTrue("Update should have failed", false);
    } catch (Exception e) {
      //expected
    }
    store.createUser(user);
    //now update should succeed
    try {
      store.updateUser(user);
    } catch (Exception e) {
      assertTrue("Update should have succeeded", false);
    }
    store.deleteUser(user.getUniqueId());
    //should not be able to update user that does not exist
    try {
      store.updateUser(user);
      assertTrue("Update should have failed", false);
    } catch (Exception e) {
      //expected
    }
  }
}
TOP

Related Classes of org.eclipse.orion.server.tests.MetaStoreTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.