InlineEdit: Add GET /changes/<id>/edit REST endpoint

Add get REST endpoint to read details of change edit. Result is a
EditInfo JSON response or no content when edit doesn't exist for
this change.

Change-Id: I72969cea48b4b1f13154bfa93d403405bec37494
This commit is contained in:
David Ostrovsky
2014-07-29 00:40:02 +02:00
parent 7c51481994
commit 1a49f62750
7 changed files with 230 additions and 4 deletions

View File

@@ -27,9 +27,10 @@ import com.google.common.base.Optional;
import com.google.common.collect.Iterables;
import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.AcceptanceTestRequestScope;
import com.google.gerrit.acceptance.NoHttpd;
import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.extensions.common.EditInfo;
import com.google.gerrit.extensions.restapi.BinaryResult;
import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
import com.google.gerrit.reviewdb.client.Change;
@@ -45,6 +46,7 @@ import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.google.inject.util.Providers;
import org.apache.http.HttpStatus;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.RefUpdate;
@@ -56,10 +58,10 @@ import org.junit.Before;
import org.junit.Test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.concurrent.atomic.AtomicLong;
@NoHttpd
public class ChangeEditIT extends AbstractDaemonTest {
private final static String FILE_NAME = "foo";
@@ -211,6 +213,32 @@ public class ChangeEditIT extends AbstractDaemonTest {
assertFalse(edit.isPresent());
}
@Test
public void retrieveEdit() throws Exception {
RestResponse r = session.get(url());
assertEquals(HttpStatus.SC_NO_CONTENT, r.getStatusCode());
assertEquals(RefUpdate.Result.NEW,
modifier.createEdit(
change,
ps));
Optional<ChangeEdit> edit = editUtil.byChange(change);
assertEquals(RefUpdate.Result.FORCED,
modifier.modifyFile(
edit.get(),
FILE_NAME,
CONTENT_NEW));
edit = editUtil.byChange(change);
EditInfo info = toEditInfo();
assertEquals(edit.get().getRevision().get(), info.commit.commit);
assertEquals(1, info.commit.parents.size());
edit = editUtil.byChange(change);
editUtil.delete(edit.get());
r = session.get(url());
assertEquals(HttpStatus.SC_NO_CONTENT, r.getStatusCode());
}
@Test
public void deleteExistingFile() throws Exception {
assertEquals(RefUpdate.Result.NEW,
@@ -410,4 +438,16 @@ public class ChangeEditIT extends AbstractDaemonTest {
content.writeTo(os);
return os.toByteArray();
}
private String url() {
return "/changes/"
+ change.getChangeId()
+ "/edit";
}
private EditInfo toEditInfo() throws IOException {
RestResponse r = session.get(url());
assertEquals(HttpStatus.SC_OK, r.getStatusCode());
return newGson().fromJson(r.getReader(), EditInfo.class);
}
}