/*******************************************************************************
* 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.servlets.git;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.orion.internal.server.core.metastore.SimpleMetaStore;
import org.eclipse.orion.server.core.ProtocolConstants;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Test;
import com.meterware.httpunit.WebRequest;
import com.meterware.httpunit.WebResponse;
public class GitInitTest extends GitTest {
@Test
public void testInit() throws Exception {
createWorkspace(SimpleMetaStore.DEFAULT_WORKSPACE_NAME);
String workspaceId = workspaceIdFromLocation(workspaceLocation);
JSONObject project = createProjectOrLink(workspaceLocation, getMethodName().concat("Project"), null);
IPath initPath = getClonePath(workspaceId, project);
String contentLocation = init(null, initPath, null).getString(ProtocolConstants.KEY_CONTENT_LOCATION);
Repository repository = getRepositoryForContentLocation(toAbsoluteURI(contentLocation));
assertNotNull(repository);
}
@Test
public void testInitAndCreateProjectByName() throws Exception {
createWorkspace(SimpleMetaStore.DEFAULT_WORKSPACE_NAME);
IPath initPath = new Path("workspace").append(getWorkspaceId(workspaceLocation)).makeAbsolute();
JSONObject repo = init(initPath, null, getMethodName());
String contentLocation = repo.getString(ProtocolConstants.KEY_CONTENT_LOCATION);
WebRequest request = getGetRequest(contentLocation);
WebResponse response = webConversation.getResponse(request);
assertEquals(HttpURLConnection.HTTP_OK, response.getResponseCode());
JSONObject project = new JSONObject(response.getText());
assertEquals(getMethodName(), project.getString(ProtocolConstants.KEY_NAME));
assertGitSectionExists(project);
String childrenLocation = project.getString(ProtocolConstants.KEY_CHILDREN_LOCATION);
assertNotNull(childrenLocation);
// http://<host>/file/<projectId>/?depth=1
request = getGetRequest(childrenLocation);
response = webConversation.getResponse(request);
assertEquals(HttpURLConnection.HTTP_OK, response.getResponseCode());
}
@Test
public void testInitAndCreateFolderByPath() throws Exception {
createWorkspace(SimpleMetaStore.DEFAULT_WORKSPACE_NAME);
String workspaceId = workspaceIdFromLocation(workspaceLocation);
JSONObject project = createProjectOrLink(workspaceLocation, getMethodName().concat("Project"), null);
IPath initPath = getClonePath(workspaceId, project).append("repos").append("repo1").makeAbsolute();
// /file/{id}/repos/repo1, folders: 'repo' and 'repo1' don't exist
JSONObject repo = init(null, initPath, null);
String contentLocation = repo.getString(ProtocolConstants.KEY_CONTENT_LOCATION);
WebRequest request = getGetRequest(contentLocation);
WebResponse response = webConversation.getResponse(request);
assertEquals(HttpURLConnection.HTTP_OK, response.getResponseCode());
JSONObject folder = new JSONObject(response.getText());
assertGitSectionExists(folder);
}
@Test
public void testInitWithoutNameAndFilePath() throws Exception {
createWorkspace(SimpleMetaStore.DEFAULT_WORKSPACE_NAME);
IPath initPath = new Path("workspace").append(getWorkspaceId(workspaceLocation)).makeAbsolute();
WebRequest request = getPostGitInitRequest(initPath, null, null);
WebResponse response = webConversation.getResponse(request);
assertEquals(HttpURLConnection.HTTP_BAD_REQUEST, response.getResponseCode());
}
private WebRequest getPostGitInitRequest(IPath workspace, IPath path, String name) throws JSONException, UnsupportedEncodingException {
return getPostGitCloneRequest(null, workspace, path, name, null, null);
}
}