Simplify unit tests

Almost all acceptance tests define verbose boilerplate code to inject
and initialize common parts, like project, ssh session, user, REST session,
review db and git.

This change moves that code to the base class. Now the boilerplate code
can be removed, as in ProjectIT:

 public class ProjectIT extends AbstractDaemonTest  {

-  @Inject
-  private SchemaFactory<ReviewDb> reviewDbProvider;
-
-  @Inject
-  private GerritApi gApi;
-
-  @Inject
-  private AcceptanceTestRequestScope atrScope;
-
-  @Inject
-  private IdentifiedUser.GenericFactory identifiedUserFactory;
-
-  private ReviewDb db;
-  Project.NameKey project;
-
-  @Before
-  public void setUp() throws Exception {
-    project = new Project.NameKey("p");
-    SshSession sshSession = new SshSession(server, admin);
-    createProject(sshSession, project.get());
-    db = reviewDbProvider.open();
-    atrScope.set(atrScope.newContext(reviewDbProvider, sshSession,
-        identifiedUserFactory.create(Providers.of(db), admin.getId())));
-  }
-
-  @After
-  public void cleanup() {
-    db.close();
-  }
-

Change-Id: I7f600dafd4f172e8435d5129ea7fe34dbce4e8cb
This commit is contained in:
David Ostrovsky
2014-02-02 23:35:02 +01:00
committed by Shawn Pearce
parent 1752b2dc9f
commit 468eaa288e
31 changed files with 231 additions and 992 deletions

View File

@@ -14,18 +14,31 @@
package com.google.gerrit.acceptance; package com.google.gerrit.acceptance;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static com.google.gerrit.acceptance.GitUtil.initSsh; import static com.google.gerrit.acceptance.GitUtil.initSsh;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.google.common.primitives.Chars;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.common.ListChangesOption; import com.google.gerrit.extensions.common.ListChangesOption;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.OutputFormat; import com.google.gerrit.server.OutputFormat;
import com.google.gerrit.server.change.ChangeJson.ChangeInfo; import com.google.gerrit.server.change.ChangeJson;
import com.google.gerrit.testutil.ConfigSuite; import com.google.gerrit.testutil.ConfigSuite;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.util.Providers;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.Config;
import org.junit.Rule; import org.junit.Rule;
import org.junit.rules.TestRule; import org.junit.rules.TestRule;
@@ -34,6 +47,10 @@ import org.junit.runner.RunWith;
import org.junit.runners.model.Statement; import org.junit.runners.model.Statement;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
@RunWith(ConfigSuite.class) @RunWith(ConfigSuite.class)
public abstract class AbstractDaemonTest { public abstract class AbstractDaemonTest {
@@ -43,9 +60,30 @@ public abstract class AbstractDaemonTest {
@Inject @Inject
protected AccountCreator accounts; protected AccountCreator accounts;
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
protected GerritApi gApi;
@Inject
private AcceptanceTestRequestScope atrScope;
@Inject
private IdentifiedUser.GenericFactory identifiedUserFactory;
@Inject
protected PushOneCommit.Factory pushFactory;
protected Git git;
protected GerritServer server; protected GerritServer server;
protected TestAccount admin; protected TestAccount admin;
protected TestAccount user;
protected RestSession adminSession; protected RestSession adminSession;
protected RestSession userSession;
protected SshSession sshSession;
protected ReviewDb db;
protected Project.NameKey project;
@Rule @Rule
public TestRule testRunner = new TestRule() { public TestRule testRunner = new TestRule() {
@@ -82,8 +120,17 @@ public abstract class AbstractDaemonTest {
server = startServer(cfg, memory); server = startServer(cfg, memory);
server.getTestInjector().injectMembers(this); server.getTestInjector().injectMembers(this);
admin = accounts.admin(); admin = accounts.admin();
user = accounts.user();
adminSession = new RestSession(server, admin); adminSession = new RestSession(server, admin);
userSession = new RestSession(server, user);
initSsh(admin); initSsh(admin);
db = reviewDbProvider.open();
atrScope.set(atrScope.newContext(reviewDbProvider, sshSession,
identifiedUserFactory.create(Providers.of(db), admin.getId())));
sshSession = new SshSession(server, admin);
project = new Project.NameKey("p");
createProject(sshSession, project.get());
git = cloneProject(sshSession.getUrl() + "/" + project.get());
} }
protected GerritServer startServer(Config cfg, boolean memory) throws Exception { protected GerritServer startServer(Config cfg, boolean memory) throws Exception {
@@ -91,20 +138,56 @@ public abstract class AbstractDaemonTest {
} }
private void afterTest() throws Exception { private void afterTest() throws Exception {
db.close();
sshSession.close();
server.stop(); server.stop();
} }
protected ChangeInfo getChange(String changeId, ListChangesOption... options) protected PushOneCommit.Result createChange() throws GitAPIException,
IOException {
PushOneCommit push = pushFactory.create(db, admin.getIdent());
return push.to(git, "refs/for/master");
}
private static final List<Character> RANDOM =
Chars.asList(new char[]{'a','b','c','d','e','f','g','h'});
protected PushOneCommit.Result ammendChange(String changeId)
throws GitAPIException, IOException {
Collections.shuffle(RANDOM);
PushOneCommit push =
pushFactory.create(db, admin.getIdent(), PushOneCommit.SUBJECT,
PushOneCommit.FILE_NAME, new String(Chars.toArray(RANDOM)), changeId);
return push.to(git, "refs/for/master");
}
protected ChangeJson.ChangeInfo getChange(String changeId, ListChangesOption... options)
throws IOException { throws IOException {
return getChange(adminSession, changeId, options); return getChange(adminSession, changeId, options);
} }
protected ChangeInfo getChange(RestSession session, String changeId, protected ChangeJson.ChangeInfo getChange(RestSession session, String changeId,
ListChangesOption... options) throws IOException { ListChangesOption... options) throws IOException {
String q = options.length > 0 ? "?o=" + Joiner.on("&o=").join(options) : ""; String q = options.length > 0 ? "?o=" + Joiner.on("&o=").join(options) : "";
RestResponse r = session.get("/changes/" + changeId + q); RestResponse r = session.get("/changes/" + changeId + q);
assertEquals(HttpStatus.SC_OK, r.getStatusCode()); assertEquals(HttpStatus.SC_OK, r.getStatusCode());
return newGson().fromJson(r.getReader(), ChangeInfo.class); return newGson().fromJson(r.getReader(), ChangeJson.ChangeInfo.class);
}
protected ChangeInfo info(String id)
throws RestApiException {
return gApi.changes().id(id).info();
}
protected ChangeInfo get(String id)
throws RestApiException {
return gApi.changes().id(id).get();
}
protected ChangeInfo get(String id, ListChangesOption... options)
throws RestApiException {
EnumSet<ListChangesOption> s = EnumSet.noneOf(ListChangesOption.class);
s.addAll(Arrays.asList(options));
return gApi.changes().id(id).get(s);
} }
protected static Gson newGson() { protected static Gson newGson() {

View File

@@ -56,8 +56,7 @@ import java.util.Set;
public class PushOneCommit { public class PushOneCommit {
public static final String SUBJECT = "test commit"; public static final String SUBJECT = "test commit";
static final String FILE_NAME = "a.txt";
private static final String FILE_NAME = "a.txt";
private static final String FILE_CONTENT = "some content"; private static final String FILE_CONTENT = "some content";
public interface Factory { public interface Factory {

View File

@@ -14,87 +14,30 @@
package com.google.gerrit.acceptance.api.change; package com.google.gerrit.acceptance.api.change;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.AcceptanceTestRequestScope;
import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.api.changes.AddReviewerInput; import com.google.gerrit.extensions.api.changes.AddReviewerInput;
import com.google.gerrit.extensions.api.changes.ReviewInput; import com.google.gerrit.extensions.api.changes.ReviewInput;
import com.google.gerrit.extensions.common.ChangeInfo; import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.common.ChangeStatus; import com.google.gerrit.extensions.common.ChangeStatus;
import com.google.gerrit.extensions.common.ListChangesOption;
import com.google.gerrit.extensions.restapi.ResourceConflictException; import com.google.gerrit.extensions.restapi.ResourceConflictException;
import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.google.inject.util.Providers;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
import java.util.EnumSet;
public class ChangeIT extends AbstractDaemonTest { public class ChangeIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private GerritApi gApi;
@Inject
private AcceptanceTestRequestScope atrScope;
@Inject
private IdentifiedUser.GenericFactory identifiedUserFactory;
@Inject
private PushOneCommit.Factory pushFactory;
private TestAccount user;
private Git git;
private ReviewDb db;
@Before
public void setUp() throws Exception {
user = accounts.user();
Project.NameKey project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
git = cloneProject(sshSession.getUrl() + "/" + project.get());
db = reviewDbProvider.open();
atrScope.set(atrScope.newContext(reviewDbProvider, sshSession,
identifiedUserFactory.create(Providers.of(db), admin.getId())));
}
@After
public void cleanup() {
db.close();
}
@Test @Test
public void get() throws GitAPIException, public void get() throws GitAPIException,
IOException, RestApiException { IOException, RestApiException {
PushOneCommit.Result r = createChange(); PushOneCommit.Result r = createChange();
String triplet = "p~master~" + r.getChangeId(); String triplet = "p~master~" + r.getChangeId();
ChangeInfo c = ChangeInfo c = info(triplet);
gApi.changes()
.id(triplet)
.get(EnumSet.noneOf(ListChangesOption.class));
assertEquals(triplet, c.id); assertEquals(triplet, c.id);
assertEquals("p", c.project); assertEquals("p", c.project);
assertEquals("master", c.branch); assertEquals("master", c.branch);
@@ -164,10 +107,4 @@ public class ChangeIT extends AbstractDaemonTest {
.id("p~master~" + r.getChangeId()) .id("p~master~" + r.getChangeId())
.addReviewer(in); .addReviewer(in);
} }
private PushOneCommit.Result createChange() throws GitAPIException,
IOException {
PushOneCommit push = pushFactory.create(db, admin.getIdent());
return push.to(git, "refs/for/master");
}
} }

View File

@@ -14,60 +14,17 @@
package com.google.gerrit.acceptance.api.project; package com.google.gerrit.acceptance.api.project;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.AcceptanceTestRequestScope;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.api.projects.BranchInput; import com.google.gerrit.extensions.api.projects.BranchInput;
import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.google.inject.util.Providers;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
public class ProjectIT extends AbstractDaemonTest { public class ProjectIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private GerritApi gApi;
@Inject
private AcceptanceTestRequestScope atrScope;
@Inject
private IdentifiedUser.GenericFactory identifiedUserFactory;
private ReviewDb db;
Project.NameKey project;
@Before
public void setUp() throws Exception {
project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
db = reviewDbProvider.open();
atrScope.set(atrScope.newContext(reviewDbProvider, sshSession,
identifiedUserFactory.create(Providers.of(db), admin.getId())));
}
@After
public void cleanup() {
db.close();
}
@Test @Test
public void createBranch() throws GitAPIException, public void createBranch() throws GitAPIException,
IOException, RestApiException { IOException, RestApiException {

View File

@@ -14,71 +14,21 @@
package com.google.gerrit.acceptance.api.revision; package com.google.gerrit.acceptance.api.revision;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.AcceptanceTestRequestScope;
import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.api.changes.ChangeApi; import com.google.gerrit.extensions.api.changes.ChangeApi;
import com.google.gerrit.extensions.api.changes.CherryPickInput; import com.google.gerrit.extensions.api.changes.CherryPickInput;
import com.google.gerrit.extensions.api.changes.ReviewInput; import com.google.gerrit.extensions.api.changes.ReviewInput;
import com.google.gerrit.extensions.api.projects.BranchInput; import com.google.gerrit.extensions.api.projects.BranchInput;
import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.google.inject.util.Providers;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
public class RevisionIT extends AbstractDaemonTest { public class RevisionIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private GerritApi gApi;
@Inject
private AcceptanceTestRequestScope atrScope;
@Inject
private IdentifiedUser.GenericFactory identifiedUserFactory;
@Inject
private PushOneCommit.Factory pushFactory;
private Git git;
private ReviewDb db;
private Project.NameKey project;
@Before
public void setUp() throws Exception {
project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
git = cloneProject(sshSession.getUrl() + "/" + project.get());
db = reviewDbProvider.open();
atrScope.set(atrScope.newContext(reviewDbProvider, sshSession,
identifiedUserFactory.create(Providers.of(db), admin.getId())));
}
@After
public void cleanup() {
db.close();
}
@Test @Test
public void reviewTriplet() throws GitAPIException, public void reviewTriplet() throws GitAPIException,
IOException, RestApiException { IOException, RestApiException {
@@ -160,13 +110,6 @@ public class RevisionIT extends AbstractDaemonTest {
.submit(); .submit();
} }
private PushOneCommit.Result createChange() throws GitAPIException,
IOException {
PushOneCommit push = pushFactory.create(db, admin.getIdent(),
"test commit", "a.txt", "some content");
return push.to(git, "refs/for/master");
}
private PushOneCommit.Result updateChange(PushOneCommit.Result r, private PushOneCommit.Result updateChange(PushOneCommit.Result r,
String content) throws GitAPIException, IOException { String content) throws GitAPIException, IOException {
PushOneCommit push = pushFactory.create(db, admin.getIdent(), PushOneCommit push = pushFactory.create(db, admin.getIdent(),

View File

@@ -15,24 +15,16 @@
package com.google.gerrit.acceptance.git; package com.google.gerrit.acceptance.git;
import static com.google.gerrit.acceptance.GitUtil.cloneProject; import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.acceptance.TestAccount; import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.jcraft.jsch.JSchException; import com.jcraft.jsch.JSchException;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -43,26 +35,11 @@ public abstract class AbstractPushForReview extends AbstractDaemonTest {
SSH, HTTP SSH, HTTP
} }
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
protected PushOneCommit.Factory pushFactory;
private Project.NameKey project;
private Git git;
private ReviewDb db;
private String sshUrl; private String sshUrl;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
sshUrl = sshSession.getUrl(); sshUrl = sshSession.getUrl();
sshSession.close();
db = reviewDbProvider.open();
} }
protected void selectProtocol(Protocol p) throws GitAPIException, IOException { protected void selectProtocol(Protocol p) throws GitAPIException, IOException {
@@ -80,11 +57,6 @@ public abstract class AbstractPushForReview extends AbstractDaemonTest {
git = cloneProject(url + "/" + project.get()); git = cloneProject(url + "/" + project.get());
} }
@After
public void cleanup() {
db.close();
}
@Test @Test
public void testPushForMaster() throws GitAPIException, OrmException, public void testPushForMaster() throws GitAPIException, OrmException,
IOException { IOException {
@@ -112,7 +84,6 @@ public abstract class AbstractPushForReview extends AbstractDaemonTest {
public void testPushForMasterWithCc() throws GitAPIException, OrmException, public void testPushForMasterWithCc() throws GitAPIException, OrmException,
IOException, JSchException { IOException, JSchException {
// cc one user // cc one user
TestAccount user = accounts.create("user", "user@example.com", "User");
String topic = "my/topic"; String topic = "my/topic";
PushOneCommit.Result r = pushTo("refs/for/master/" + topic + "%cc=" + user.email); PushOneCommit.Result r = pushTo("refs/for/master/" + topic + "%cc=" + user.email);
r.assertOkStatus(); r.assertOkStatus();
@@ -137,7 +108,6 @@ public abstract class AbstractPushForReview extends AbstractDaemonTest {
public void testPushForMasterWithReviewer() throws GitAPIException, public void testPushForMasterWithReviewer() throws GitAPIException,
OrmException, IOException, JSchException { OrmException, IOException, JSchException {
// add one reviewer // add one reviewer
TestAccount user = accounts.create("user", "user@example.com", "User");
String topic = "my/topic"; String topic = "my/topic";
PushOneCommit.Result r = pushTo("refs/for/master/" + topic + "%r=" + user.email); PushOneCommit.Result r = pushTo("refs/for/master/" + topic + "%r=" + user.email);
r.assertOkStatus(); r.assertOkStatus();

View File

@@ -14,26 +14,19 @@
package com.google.gerrit.acceptance.git; package com.google.gerrit.acceptance.git;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static com.google.gerrit.server.group.SystemGroupBackend.ANONYMOUS_USERS; import static com.google.gerrit.server.group.SystemGroupBackend.ANONYMOUS_USERS;
import static com.google.gerrit.server.project.Util.grant; import static com.google.gerrit.server.project.Util.grant;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.Permission;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.config.AllProjectsName; import com.google.gerrit.server.config.AllProjectsName;
import com.google.gerrit.server.git.MetaDataUpdate; import com.google.gerrit.server.git.MetaDataUpdate;
import com.google.gerrit.server.git.ProjectConfig; import com.google.gerrit.server.git.ProjectConfig;
import com.google.gerrit.server.project.ProjectCache; import com.google.gerrit.server.project.ProjectCache;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject; import com.google.inject.Inject;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -42,9 +35,6 @@ import java.io.IOException;
public class DraftChangeBlockedIT extends AbstractDaemonTest { public class DraftChangeBlockedIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject @Inject
private ProjectCache projectCache; private ProjectCache projectCache;
@@ -54,27 +44,13 @@ public class DraftChangeBlockedIT extends AbstractDaemonTest {
@Inject @Inject
private MetaDataUpdate.Server metaDataUpdateFactory; private MetaDataUpdate.Server metaDataUpdateFactory;
@Inject
private PushOneCommit.Factory pushFactory;
private Project.NameKey project;
private Git git;
private ReviewDb db;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
ProjectConfig cfg = projectCache.checkedGet(allProjects).getConfig(); ProjectConfig cfg = projectCache.checkedGet(allProjects).getConfig();
grant(cfg, Permission.PUSH, ANONYMOUS_USERS, grant(cfg, Permission.PUSH, ANONYMOUS_USERS,
"refs/drafts/*").setBlock(); "refs/drafts/*").setBlock();
saveProjectConfig(cfg); saveProjectConfig(cfg);
projectCache.evict(cfg.getProject());
project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
db = reviewDbProvider.open();
git = cloneProject(sshSession.getUrl() + "/" + project.get());
sshSession.close();
} }
@Test @Test

View File

@@ -21,7 +21,6 @@ import static org.junit.Assert.assertTrue;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.common.data.AccessSection; import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.GlobalCapability; import com.google.gerrit.common.data.GlobalCapability;
import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.Permission;
@@ -36,7 +35,6 @@ import com.google.gson.reflect.TypeToken;
import com.google.inject.Inject; import com.google.inject.Inject;
import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.errors.ConfigInvalidException;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
@@ -52,13 +50,6 @@ public class CapabilitiesIT extends AbstractDaemonTest {
@Inject @Inject
private ProjectCache projectCache; private ProjectCache projectCache;
private RestSession userSession;
@Before
public void setUp() throws Exception {
userSession = new RestSession(server, accounts.user());
}
@Test @Test
public void testCapabilitiesUser() throws IOException, public void testCapabilitiesUser() throws IOException,
ConfigInvalidException, IllegalArgumentException, ConfigInvalidException, IllegalArgumentException,

View File

@@ -14,58 +14,23 @@
package com.google.gerrit.acceptance.rest.account; package com.google.gerrit.acceptance.rest.account;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.PushOneCommit.Result; import com.google.gerrit.acceptance.PushOneCommit.Result;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
public class StarredChangesIT extends AbstractDaemonTest { public class StarredChangesIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private PushOneCommit.Factory pushFactory;
private Git git;
private ReviewDb db;
@Before
public void setUp() throws Exception {
Project.NameKey project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
git = cloneProject(sshSession.getUrl() + "/" + project.get());
sshSession.close();
db = reviewDbProvider.open();
}
@After
public void cleanup() {
db.close();
}
@Test @Test
public void starredChangeState() throws GitAPIException, IOException, public void starredChangeState() throws GitAPIException, IOException,
OrmException { OrmException {
@@ -93,9 +58,4 @@ public class StarredChangesIT extends AbstractDaemonTest {
assertEquals(204, r.getStatusCode()); assertEquals(204, r.getStatusCode());
} }
} }
private Result createChange() throws GitAPIException, IOException {
PushOneCommit push = pushFactory.create(db, admin.getIdent());
return push.to(git, "refs/for/master");
}
} }

View File

@@ -36,7 +36,6 @@ import com.google.gerrit.reviewdb.client.PatchSetApproval;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.Project.InheritableBoolean; import com.google.gerrit.reviewdb.client.Project.InheritableBoolean;
import com.google.gerrit.reviewdb.client.Project.SubmitType; import com.google.gerrit.reviewdb.client.Project.SubmitType;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ApprovalsUtil;
import com.google.gerrit.server.change.ChangeJson.ChangeInfo; import com.google.gerrit.server.change.ChangeJson.ChangeInfo;
import com.google.gerrit.server.change.ChangeJson.LabelInfo; import com.google.gerrit.server.change.ChangeJson.LabelInfo;
@@ -45,7 +44,6 @@ import com.google.gerrit.server.notedb.ChangeNotes;
import com.google.gerrit.server.project.PutConfig; import com.google.gerrit.server.project.PutConfig;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.jcraft.jsch.JSchException; import com.jcraft.jsch.JSchException;
@@ -67,9 +65,6 @@ import java.io.IOException;
public abstract class AbstractSubmit extends AbstractDaemonTest { public abstract class AbstractSubmit extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject @Inject
private GitRepositoryManager repoManager; private GitRepositoryManager repoManager;
@@ -79,16 +74,10 @@ public abstract class AbstractSubmit extends AbstractDaemonTest {
@Inject @Inject
private ApprovalsUtil approvalsUtil; private ApprovalsUtil approvalsUtil;
@Inject
protected PushOneCommit.Factory pushFactory;
private Project.NameKey project;
private ReviewDb db;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
project = new Project.NameKey("p"); project = new Project.NameKey("p2");
db = reviewDbProvider.open();
} }
@After @After

View File

@@ -14,32 +14,17 @@
package com.google.gerrit.acceptance.rest.change; package com.google.gerrit.acceptance.rest.change;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.AcceptanceTestRequestScope;
import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.api.changes.ReviewInput; import com.google.gerrit.extensions.api.changes.ReviewInput;
import com.google.gerrit.extensions.common.ChangeInfo; import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.common.ChangeMessageInfo; import com.google.gerrit.extensions.common.ChangeMessageInfo;
import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.google.inject.util.Providers;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
@@ -47,69 +32,32 @@ import java.util.Iterator;
public class ChangeMessagesIT extends AbstractDaemonTest { public class ChangeMessagesIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private GerritApi gApi;
@Inject
private AcceptanceTestRequestScope atrScope;
@Inject
private IdentifiedUser.GenericFactory identifiedUserFactory;
@Inject
private PushOneCommit.Factory pushFactory;
private Git git;
private ReviewDb db;
@Before
public void setUp() throws Exception {
Project.NameKey project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
git = cloneProject(sshSession.getUrl() + "/" + project.get());
sshSession.close();
db = reviewDbProvider.open();
atrScope.set(atrScope.newContext(reviewDbProvider, sshSession,
identifiedUserFactory.create(Providers.of(db), admin.getId())));
}
@After
public void cleanup() {
db.close();
}
@Test @Test
public void messagesNotReturnedByDefault() throws GitAPIException, public void messagesNotReturnedByDefault() throws Exception {
IOException, RestApiException { String changeId = createChange().getChangeId();
String changeId = createChange();
postMessage(changeId, "Some nits need to be fixed."); postMessage(changeId, "Some nits need to be fixed.");
ChangeInfo c = getChange("p~master~" + changeId); ChangeInfo c = info(changeId);
assertNull(c.messages); assertNull(c.messages);
} }
@Test @Test
public void defaultMessage() throws GitAPIException, IOException, public void defaultMessage() throws GitAPIException, IOException,
RestApiException { RestApiException {
String changeId = createChange(); String changeId = createChange().getChangeId();
ChangeInfo c = getChangeAll("p~master~" + changeId); ChangeInfo c = get(changeId);
assertNotNull(c.messages); assertNotNull(c.messages);
assertEquals(1, c.messages.size()); assertEquals(1, c.messages.size());
assertEquals("Uploaded patch set 1.", c.messages.iterator().next().message); assertEquals("Uploaded patch set 1.", c.messages.iterator().next().message);
} }
@Test @Test
public void messagesReturnedInChronologicalOrder() throws GitAPIException, public void messagesReturnedInChronologicalOrder() throws Exception {
IOException, RestApiException { String changeId = createChange().getChangeId();
String changeId = createChange();
String firstMessage = "Some nits need to be fixed."; String firstMessage = "Some nits need to be fixed.";
postMessage(changeId, firstMessage); postMessage(changeId, firstMessage);
String secondMessage = "I like this feature."; String secondMessage = "I like this feature.";
postMessage(changeId, secondMessage); postMessage(changeId, secondMessage);
ChangeInfo c = getChangeAll("p~master~" + changeId); ChangeInfo c = get(changeId);
assertNotNull(c.messages); assertNotNull(c.messages);
assertEquals(3, c.messages.size()); assertEquals(3, c.messages.size());
Iterator<ChangeMessageInfo> it = c.messages.iterator(); Iterator<ChangeMessageInfo> it = c.messages.iterator();
@@ -118,30 +66,13 @@ public class ChangeMessagesIT extends AbstractDaemonTest {
assertMessage(secondMessage, it.next().message); assertMessage(secondMessage, it.next().message);
} }
private String createChange() throws GitAPIException,
IOException {
PushOneCommit push = pushFactory.create(db, admin.getIdent());
return push.to(git, "refs/for/master").getChangeId();
}
private void assertMessage(String expected, String actual) { private void assertMessage(String expected, String actual) {
assertEquals("Patch Set 1:\n\n" + expected, actual); assertEquals("Patch Set 1:\n\n" + expected, actual);
} }
private void postMessage(String changeId, String msg) throws IOException { private void postMessage(String changeId, String msg) throws Exception {
ReviewInput in = new ReviewInput(); ReviewInput in = new ReviewInput();
in.message = msg; in.message = msg;
adminSession.post("/changes/" + changeId + "/revisions/1/review", in) gApi.changes().id(changeId).current().review(in);
.consume();
}
private ChangeInfo getChange(String triplet)
throws RestApiException {
return gApi.changes().id(triplet).info();
}
private ChangeInfo getChangeAll(String triplet)
throws RestApiException {
return gApi.changes().id(triplet).get();
} }
} }

View File

@@ -30,91 +30,65 @@ import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.Permission;
import com.google.gerrit.common.data.PermissionRule; import com.google.gerrit.common.data.PermissionRule;
import com.google.gerrit.extensions.api.changes.ReviewInput; import com.google.gerrit.extensions.api.changes.ReviewInput;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.git.MetaDataUpdate; import com.google.gerrit.server.git.MetaDataUpdate;
import com.google.gerrit.server.git.ProjectConfig; import com.google.gerrit.server.git.ProjectConfig;
import com.google.gerrit.server.group.SystemGroupBackend; import com.google.gerrit.server.group.SystemGroupBackend;
import com.google.gerrit.server.project.ProjectCache; import com.google.gerrit.server.project.ProjectCache;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.jcraft.jsch.JSchException;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.errors.ConfigInvalidException;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException;
public class ChangeOwnerIT extends AbstractDaemonTest { public class ChangeOwnerIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject @Inject
private MetaDataUpdate.Server metaDataUpdateFactory; private MetaDataUpdate.Server metaDataUpdateFactory;
@Inject @Inject
private ProjectCache projectCache; private ProjectCache projectCache;
@Inject private TestAccount user2;
private PushOneCommit.Factory pushFactory;
private TestAccount owner;
private TestAccount dev;
private RestSession sessionOwner; private RestSession sessionOwner;
private RestSession sessionDev; private RestSession sessionDev;
private Git git;
private ReviewDb db;
private Project.NameKey project;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
newProject(); sessionOwner = new RestSession(server, user);
owner = accounts.user(); SshSession sshSession = new SshSession(server, user);
sessionOwner = new RestSession(server, owner); initSsh(user);
SshSession sshSession = new SshSession(server, owner);
initSsh(owner);
// need to initialize intern session // need to initialize intern session
createProject(sshSession, "foo"); createProject(sshSession, "foo");
git = cloneProject(sshSession.getUrl() + "/" + project.get()); git = cloneProject(sshSession.getUrl() + "/" + project.get());
sshSession.close(); sshSession.close();
dev = accounts.user2(); user2 = accounts.user2();
sessionDev = new RestSession(server, dev); sessionDev = new RestSession(server, user2);
db = reviewDbProvider.open();
}
@After
public void cleanup() {
db.close();
} }
@Test @Test
public void testChangeOwner_OwnerACLNotGranted() throws GitAPIException, public void testChangeOwner_OwnerACLNotGranted() throws GitAPIException,
IOException, OrmException, ConfigInvalidException { IOException, OrmException, ConfigInvalidException {
approve(sessionOwner, createChange(), HttpStatus.SC_FORBIDDEN); approve(sessionOwner, createMyChange(), HttpStatus.SC_FORBIDDEN);
} }
@Test @Test
public void testChangeOwner_OwnerACLGranted() throws GitAPIException, public void testChangeOwner_OwnerACLGranted() throws GitAPIException,
IOException, OrmException, ConfigInvalidException { IOException, OrmException, ConfigInvalidException {
grantApproveToChangeOwner(); grantApproveToChangeOwner();
approve(sessionOwner, createChange(), HttpStatus.SC_OK); approve(sessionOwner, createMyChange(), HttpStatus.SC_OK);
} }
@Test @Test
public void testChangeOwner_NotOwnerACLGranted() throws GitAPIException, public void testChangeOwner_NotOwnerACLGranted() throws GitAPIException,
IOException, OrmException, ConfigInvalidException { IOException, OrmException, ConfigInvalidException {
grantApproveToChangeOwner(); grantApproveToChangeOwner();
approve(sessionDev, createChange(), HttpStatus.SC_FORBIDDEN); approve(sessionDev, createMyChange(), HttpStatus.SC_FORBIDDEN);
} }
private void approve(RestSession s, String changeId, int expected) private void approve(RestSession s, String changeId, int expected)
@@ -142,17 +116,9 @@ public class ChangeOwnerIT extends AbstractDaemonTest {
projectCache.evict(config.getProject()); projectCache.evict(config.getProject());
} }
private String createChange() throws GitAPIException, private String createMyChange() throws GitAPIException,
IOException { IOException {
PushOneCommit push = pushFactory.create(db, owner.getIdent()); PushOneCommit push = pushFactory.create(db, user.getIdent());
return push.to(git, "refs/for/master").getChangeId(); return push.to(git, "refs/for/master").getChangeId();
} }
private void newProject() throws UnsupportedEncodingException,
OrmException, JSchException, IOException {
project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
sshSession.close();
}
} }

View File

@@ -15,7 +15,6 @@
package com.google.gerrit.acceptance.rest.change; package com.google.gerrit.acceptance.rest.change;
import static com.google.gerrit.acceptance.GitUtil.checkout; import static com.google.gerrit.acceptance.GitUtil.checkout;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@@ -23,23 +22,16 @@ import com.google.common.base.Function;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.GitUtil;
import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.change.ChangeJson.ChangeInfo; import com.google.gerrit.server.change.ChangeJson.ChangeInfo;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.jcraft.jsch.JSchException; import com.jcraft.jsch.JSchException;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
@@ -47,27 +39,11 @@ import java.util.Set;
public class ConflictsOperatorIT extends AbstractDaemonTest { public class ConflictsOperatorIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private PushOneCommit.Factory pushFactory;
private Project.NameKey project;
private ReviewDb db;
private int count; private int count;
@Before
public void setUp() throws Exception {
project = new Project.NameKey("p");
db = reviewDbProvider.open();
}
@Test @Test
public void noConflictingChanges() throws JSchException, IOException, public void noConflictingChanges() throws JSchException, IOException,
GitAPIException { GitAPIException {
Git git = createProject();
PushOneCommit.Result change = createChange(git, true); PushOneCommit.Result change = createChange(git, true);
createChange(git, false); createChange(git, false);
@@ -78,7 +54,6 @@ public class ConflictsOperatorIT extends AbstractDaemonTest {
@Test @Test
public void conflictingChanges() throws JSchException, IOException, public void conflictingChanges() throws JSchException, IOException,
GitAPIException { GitAPIException {
Git git = createProject();
PushOneCommit.Result change = createChange(git, true); PushOneCommit.Result change = createChange(git, true);
PushOneCommit.Result conflictingChange1 = createChange(git, true); PushOneCommit.Result conflictingChange1 = createChange(git, true);
PushOneCommit.Result conflictingChange2 = createChange(git, true); PushOneCommit.Result conflictingChange2 = createChange(git, true);
@@ -88,17 +63,6 @@ public class ConflictsOperatorIT extends AbstractDaemonTest {
assertChanges(changes, conflictingChange1, conflictingChange2); assertChanges(changes, conflictingChange1, conflictingChange2);
} }
private Git createProject() throws JSchException, IOException,
GitAPIException {
SshSession sshSession = new SshSession(server, admin);
try {
GitUtil.createProject(sshSession, project.get(), null, true);
return cloneProject(sshSession.getUrl() + "/" + project.get());
} finally {
sshSession.close();
}
}
private PushOneCommit.Result createChange(Git git, boolean conflicting) private PushOneCommit.Result createChange(Git git, boolean conflicting)
throws GitAPIException, IOException { throws GitAPIException, IOException {
checkout(git, "origin/master"); checkout(git, "origin/master");

View File

@@ -14,8 +14,6 @@
package com.google.gerrit.acceptance.rest.change; package com.google.gerrit.acceptance.rest.change;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
@@ -23,57 +21,28 @@ import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession; import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.SshSession; import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.common.ChangeStatus;
import com.google.gerrit.extensions.restapi.RestApiException;
import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.change.ChangeJson.ChangeInfo;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
public class DeleteDraftChangeIT extends AbstractDaemonTest { public class DeleteDraftChangeIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private PushOneCommit.Factory pushFactory;
private Git git;
private ReviewDb db;
@Before
public void setUp() throws Exception {
Project.NameKey project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
git = cloneProject(sshSession.getUrl() + "/" + project.get());
sshSession.close();
db = reviewDbProvider.open();
}
@After
public void cleanup() {
db.close();
}
@Test @Test
public void deleteChange() throws GitAPIException, public void deleteChange() throws GitAPIException,
IOException { IOException, RestApiException {
String changeId = createChange(); String changeId = createChange().getChangeId();
ChangeInfo c = getChange(changeId); String triplet = "p~master~" + changeId;
assertEquals("p~master~" + changeId, c.id); ChangeInfo c = get(triplet);
assertEquals(Change.Status.NEW, c.status); assertEquals(triplet, c.id);
assertEquals(ChangeStatus.NEW, c.status);
RestResponse r = deleteChange(changeId, adminSession); RestResponse r = deleteChange(changeId, adminSession);
assertEquals("Change is not a draft", r.getEntityContent()); assertEquals("Change is not a draft", r.getEntityContent());
assertEquals(409, r.getStatusCode()); assertEquals(409, r.getStatusCode());
@@ -81,45 +50,41 @@ public class DeleteDraftChangeIT extends AbstractDaemonTest {
@Test @Test
public void deleteDraftChange() throws GitAPIException, public void deleteDraftChange() throws GitAPIException,
IOException, OrmException { IOException, RestApiException, OrmException {
String changeId = createDraftChange(); String changeId = createDraftChange();
ChangeInfo c = getChange(changeId); String triplet = "p~master~" + changeId;
assertEquals("p~master~" + changeId, c.id); ChangeInfo c = get(triplet);
assertEquals(Change.Status.DRAFT, c.status); assertEquals(triplet, c.id);
assertEquals(ChangeStatus.DRAFT, c.status);
RestResponse r = deleteChange(changeId, adminSession); RestResponse r = deleteChange(changeId, adminSession);
assertEquals(204, r.getStatusCode()); assertEquals(204, r.getStatusCode());
} }
@Test @Test
public void publishDraftChange() throws GitAPIException, public void publishDraftChange() throws GitAPIException,
IOException { IOException, RestApiException {
String changeId = createDraftChange(); String changeId = createDraftChange();
ChangeInfo c = getChange(changeId); String triplet = "p~master~" + changeId;
assertEquals("p~master~" + changeId, c.id); ChangeInfo c = get(triplet);
assertEquals(Change.Status.DRAFT, c.status); assertEquals(triplet, c.id);
assertEquals(ChangeStatus.DRAFT, c.status);
RestResponse r = publishChange(changeId); RestResponse r = publishChange(changeId);
assertEquals(204, r.getStatusCode()); assertEquals(204, r.getStatusCode());
c = getChange(changeId); c = get(triplet);
assertEquals(Change.Status.NEW, c.status); assertEquals(ChangeStatus.NEW, c.status);
} }
@Test @Test
public void publishDraftPatchSet() throws GitAPIException, public void publishDraftPatchSet() throws GitAPIException,
IOException, OrmException { IOException, OrmException, RestApiException {
String changeId = createDraftChange(); String changeId = createDraftChange();
ChangeInfo c = getChange(changeId); String triplet = "p~master~" + changeId;
assertEquals("p~master~" + changeId, c.id); ChangeInfo c = get(triplet);
assertEquals(Change.Status.DRAFT, c.status); assertEquals(triplet, c.id);
assertEquals(ChangeStatus.DRAFT, c.status);
RestResponse r = publishPatchSet(changeId); RestResponse r = publishPatchSet(changeId);
assertEquals(204, r.getStatusCode()); assertEquals(204, r.getStatusCode());
c = getChange(changeId); assertEquals(ChangeStatus.NEW, get(triplet).status);
assertEquals(Change.Status.NEW, c.status);
}
private String createChange() throws GitAPIException,
IOException {
PushOneCommit push = pushFactory.create(db, admin.getIdent());
return push.to(git, "refs/for/master").getChangeId();
} }
private String createDraftChange() throws GitAPIException, IOException { private String createDraftChange() throws GitAPIException, IOException {

View File

@@ -14,8 +14,6 @@
package com.google.gerrit.acceptance.rest.change; package com.google.gerrit.acceptance.rest.change;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
@@ -24,90 +22,53 @@ import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.PushOneCommit.Result; import com.google.gerrit.acceptance.PushOneCommit.Result;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession; import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.SshSession; import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.acceptance.TestAccount; import com.google.gerrit.extensions.common.ChangeStatus;
import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.change.ChangeJson.ChangeInfo;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
public class DeleteDraftPatchSetIT extends AbstractDaemonTest { public class DeleteDraftPatchSetIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private PushOneCommit.Factory pushFactory;
private TestAccount user;
private RestSession userSession;
private Git git;
private ReviewDb db;
@Before
public void setUp() throws Exception {
user = accounts.create("user", "user@example.com", "User");
userSession = new RestSession(server, user);
Project.NameKey project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
git = cloneProject(sshSession.getUrl() + "/" + project.get());
sshSession.close();
db = reviewDbProvider.open();
}
@After
public void cleanup() {
db.close();
}
@Test @Test
public void deletePatchSet() throws GitAPIException, public void deletePatchSet() throws Exception {
IOException, OrmException { String changeId = createChange().getChangeId();
String changeId = createChangeWith2PS("refs/for/master");
PatchSet ps = getCurrentPatchSet(changeId); PatchSet ps = getCurrentPatchSet(changeId);
ChangeInfo c = getChange(changeId); String triplet = "p~master~" + changeId;
assertEquals("p~master~" + changeId, c.id); ChangeInfo c = get(triplet);
assertEquals(Change.Status.NEW, c.status); assertEquals(triplet, c.id);
assertEquals(ChangeStatus.NEW, c.status);
RestResponse r = deletePatchSet(changeId, ps, adminSession); RestResponse r = deletePatchSet(changeId, ps, adminSession);
assertEquals("Patch set is not a draft.", r.getEntityContent()); assertEquals("Patch set is not a draft.", r.getEntityContent());
assertEquals(409, r.getStatusCode()); assertEquals(409, r.getStatusCode());
} }
@Test @Test
public void deleteDraftPatchSetNoACL() throws GitAPIException, public void deleteDraftPatchSetNoACL() throws Exception {
IOException, OrmException { String changeId = createDraftChangeWith2PS();
String changeId = createChangeWith2PS("refs/drafts/master");
PatchSet ps = getCurrentPatchSet(changeId); PatchSet ps = getCurrentPatchSet(changeId);
ChangeInfo c = getChange(changeId); String triplet = "p~master~" + changeId;
assertEquals("p~master~" + changeId, c.id); ChangeInfo c = get(triplet);
assertEquals(Change.Status.DRAFT, c.status); assertEquals(triplet, c.id);
assertEquals(ChangeStatus.DRAFT, c.status);
RestResponse r = deletePatchSet(changeId, ps, userSession); RestResponse r = deletePatchSet(changeId, ps, userSession);
assertEquals("Not found", r.getEntityContent()); assertEquals("Not found", r.getEntityContent());
assertEquals(404, r.getStatusCode()); assertEquals(404, r.getStatusCode());
} }
@Test @Test
public void deleteDraftPatchSetAndChange() throws GitAPIException, public void deleteDraftPatchSetAndChange() throws Exception {
IOException, OrmException { String changeId = createDraftChangeWith2PS();
String changeId = createChangeWith2PS("refs/drafts/master");
PatchSet ps = getCurrentPatchSet(changeId); PatchSet ps = getCurrentPatchSet(changeId);
ChangeInfo c = getChange(changeId); String triplet = "p~master~" + changeId;
assertEquals("p~master~" + changeId, c.id); ChangeInfo c = get(triplet);
assertEquals(Change.Status.DRAFT, c.status); assertEquals(triplet, c.id);
assertEquals(ChangeStatus.DRAFT, c.status);
RestResponse r = deletePatchSet(changeId, ps, adminSession); RestResponse r = deletePatchSet(changeId, ps, adminSession);
assertEquals(204, r.getStatusCode()); assertEquals(204, r.getStatusCode());
Change change = Iterables.getOnlyElement(db.changes().byKey( Change change = Iterables.getOnlyElement(db.changes().byKey(
@@ -121,13 +82,13 @@ public class DeleteDraftPatchSetIT extends AbstractDaemonTest {
.toList().size()); .toList().size());
} }
private String createChangeWith2PS(String ref) throws GitAPIException, private String createDraftChangeWith2PS() throws GitAPIException,
IOException { IOException {
PushOneCommit push = pushFactory.create(db, admin.getIdent()); PushOneCommit push = pushFactory.create(db, admin.getIdent());
Result result = push.to(git, ref); Result result = push.to(git, "refs/drafts/master");
push = pushFactory.create(db, admin.getIdent(), PushOneCommit.SUBJECT, push = pushFactory.create(db, admin.getIdent(), PushOneCommit.SUBJECT,
"b.txt", "4711", result.getChangeId()); "b.txt", "4711", result.getChangeId());
return push.to(git, ref).getChangeId(); return push.to(git, "refs/drafts/master").getChangeId();
} }
private PatchSet getCurrentPatchSet(String changeId) throws OrmException { private PatchSet getCurrentPatchSet(String changeId) throws OrmException {

View File

@@ -14,8 +14,6 @@
package com.google.gerrit.acceptance.rest.change; package com.google.gerrit.acceptance.rest.change;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static com.google.gerrit.extensions.common.ListChangesOption.ALL_REVISIONS; import static com.google.gerrit.extensions.common.ListChangesOption.ALL_REVISIONS;
import static com.google.gerrit.extensions.common.ListChangesOption.CURRENT_REVISION; import static com.google.gerrit.extensions.common.ListChangesOption.CURRENT_REVISION;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@@ -25,15 +23,8 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.SshSession; import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.change.ChangeJson.ChangeInfo;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import org.eclipse.jgit.api.Git;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -41,26 +32,11 @@ import java.util.List;
public class ListChangesOptionsIT extends AbstractDaemonTest { public class ListChangesOptionsIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
protected PushOneCommit.Factory pushFactory;
private Project.NameKey project;
private Git git;
private ReviewDb db;
private String changeId; private String changeId;
private List<PushOneCommit.Result> results; private List<PushOneCommit.Result> results;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
project = new Project.NameKey("p");
db = reviewDbProvider.open();
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
git = cloneProject(sshSession.getUrl() + "/" + project.get());
results = Lists.newArrayList(); results = Lists.newArrayList();
results.add(push("file contents", null)); results.add(push("file contents", null));
changeId = results.get(0).getChangeId(); changeId = results.get(0).getChangeId();
@@ -79,21 +55,16 @@ public class ListChangesOptionsIT extends AbstractDaemonTest {
return r; return r;
} }
@After
public void cleanup() {
db.close();
}
@Test @Test
public void noRevisionOptions() throws Exception { public void noRevisionOptions() throws Exception {
ChangeInfo c = getChange(changeId); ChangeInfo c = info(changeId);
assertNull(c.currentRevision); assertNull(c.currentRevision);
assertNull(c.revisions); assertNull(c.revisions);
} }
@Test @Test
public void currentRevision() throws Exception { public void currentRevision() throws Exception {
ChangeInfo c = getChange(changeId, CURRENT_REVISION); ChangeInfo c = get(changeId, CURRENT_REVISION);
assertEquals(commitId(2), c.currentRevision); assertEquals(commitId(2), c.currentRevision);
assertEquals(ImmutableSet.of(commitId(2)), c.revisions.keySet()); assertEquals(ImmutableSet.of(commitId(2)), c.revisions.keySet());
assertEquals(3, c.revisions.get(commitId(2))._number); assertEquals(3, c.revisions.get(commitId(2))._number);
@@ -101,7 +72,7 @@ public class ListChangesOptionsIT extends AbstractDaemonTest {
@Test @Test
public void allRevisions() throws Exception { public void allRevisions() throws Exception {
ChangeInfo c = getChange(changeId, ALL_REVISIONS); ChangeInfo c = get(changeId, ALL_REVISIONS);
assertEquals(commitId(2), c.currentRevision); assertEquals(commitId(2), c.currentRevision);
assertEquals(ImmutableSet.of(commitId(0), commitId(1), commitId(2)), assertEquals(ImmutableSet.of(commitId(0), commitId(1), commitId(2)),
c.revisions.keySet()); c.revisions.keySet());

View File

@@ -14,26 +14,15 @@
package com.google.gerrit.acceptance.rest.change; package com.google.gerrit.acceptance.rest.change;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.GerritConfig; import com.google.gerrit.acceptance.GerritConfig;
import com.google.gerrit.acceptance.GerritConfigs; import com.google.gerrit.acceptance.GerritConfigs;
import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.change.SuggestReviewers.SuggestedReviewerInfo; import com.google.gerrit.server.change.SuggestReviewers.SuggestedReviewerInfo;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -42,16 +31,6 @@ import java.util.List;
public class SuggestReviewersIT extends AbstractDaemonTest { public class SuggestReviewersIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private PushOneCommit.Factory pushFactory;
private Git git;
private ReviewDb db;
private Project.NameKey project;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
group("users1"); group("users1");
@@ -61,25 +40,13 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
accounts.create("user1", "user1@example.com", "User1", "users1"); accounts.create("user1", "user1@example.com", "User1", "users1");
accounts.create("user2", "user2@example.com", "User2", "users2"); accounts.create("user2", "user2@example.com", "User2", "users2");
accounts.create("user3", "user3@example.com", "User3", "users1", "users2"); accounts.create("user3", "user3@example.com", "User3", "users1", "users2");
project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
git = cloneProject(sshSession.getUrl() + "/" + project.get());
sshSession.close();
db = reviewDbProvider.open();
}
@After
public void cleanup() {
db.close();
} }
@Test @Test
@GerritConfig(name = "suggest.accounts", value = "false") @GerritConfig(name = "suggest.accounts", value = "false")
public void suggestReviewersNoResult1() throws GitAPIException, IOException, public void suggestReviewersNoResult1() throws GitAPIException, IOException,
Exception { Exception {
String changeId = createChange(admin); String changeId = createChange().getChangeId();
List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, "u", 6); List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, "u", 6);
assertEquals(reviewers.size(), 0); assertEquals(reviewers.size(), 0);
} }
@@ -92,7 +59,7 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
}) })
public void suggestReviewersNoResult2() throws GitAPIException, IOException, public void suggestReviewersNoResult2() throws GitAPIException, IOException,
Exception { Exception {
String changeId = createChange(admin); String changeId = createChange().getChangeId();
List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, "u", 6); List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, "u", 6);
assertEquals(reviewers.size(), 0); assertEquals(reviewers.size(), 0);
} }
@@ -101,7 +68,7 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
@GerritConfig(name = "suggest.from", value = "2") @GerritConfig(name = "suggest.from", value = "2")
public void suggestReviewersNoResult3() throws GitAPIException, IOException, public void suggestReviewersNoResult3() throws GitAPIException, IOException,
Exception { Exception {
String changeId = createChange(admin); String changeId = createChange().getChangeId();
List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, "u", 6); List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, "u", 6);
assertEquals(reviewers.size(), 0); assertEquals(reviewers.size(), 0);
} }
@@ -109,7 +76,7 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
@Test @Test
public void suggestReviewersChange() throws GitAPIException, public void suggestReviewersChange() throws GitAPIException,
IOException, Exception { IOException, Exception {
String changeId = createChange(admin); String changeId = createChange().getChangeId();
List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, "u", 6); List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, "u", 6);
assertEquals(reviewers.size(), 6); assertEquals(reviewers.size(), 6);
reviewers = suggestReviewers(changeId, "u", 5); reviewers = suggestReviewers(changeId, "u", 5);
@@ -136,10 +103,4 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
private void group(String name) throws IOException { private void group(String name) throws IOException {
adminSession.put("/groups/" + name, new Object()).consume(); adminSession.put("/groups/" + name, new Object()).consume();
} }
private String createChange(TestAccount account) throws GitAPIException,
IOException {
PushOneCommit push = pushFactory.create(db, account.getIdent());
return push.to(git, "refs/for/master").getChangeId();
}
} }

View File

@@ -89,12 +89,11 @@ public class AddRemoveGroupMembersIT extends AbstractDaemonTest {
@Test @Test
public void addRemoveMember() throws Exception { public void addRemoveMember() throws Exception {
TestAccount u = accounts.create("user", "user@example.com", "Full Name");
RestResponse r = PUT("/groups/Administrators/members/user"); RestResponse r = PUT("/groups/Administrators/members/user");
assertEquals(HttpStatus.SC_CREATED, r.getStatusCode()); assertEquals(HttpStatus.SC_CREATED, r.getStatusCode());
AccountInfo ai = newGson().fromJson(r.getReader(), AccountInfo.class); AccountInfo ai = newGson().fromJson(r.getReader(), AccountInfo.class);
assertAccountInfo(u, ai); assertAccountInfo(user, ai);
assertMembers("Administrators", admin, u); assertMembers("Administrators", admin, user);
r.consume(); r.consume();
assertEquals(HttpStatus.SC_NO_CONTENT, assertEquals(HttpStatus.SC_NO_CONTENT,

View File

@@ -21,7 +21,6 @@ import static org.junit.Assert.assertNotNull;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession; import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.server.account.GroupCache; import com.google.gerrit.server.account.GroupCache;
import com.google.gerrit.server.group.CreateGroup; import com.google.gerrit.server.group.CreateGroup;
@@ -71,7 +70,6 @@ public class CreateGroupIT extends AbstractDaemonTest {
@Test @Test
public void testCreateGroupWithoutCapability_Forbidden() throws OrmException, public void testCreateGroupWithoutCapability_Forbidden() throws OrmException,
JSchException, IOException { JSchException, IOException {
TestAccount user = accounts.create("user", "user@example.com", "User");
RestResponse r = (new RestSession(server, user)).put("/groups/newGroup"); RestResponse r = (new RestSession(server, user)).put("/groups/newGroup");
assertEquals(HttpStatus.SC_FORBIDDEN, r.getStatusCode()); assertEquals(HttpStatus.SC_FORBIDDEN, r.getStatusCode());
} }

View File

@@ -22,12 +22,9 @@ import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession; import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.SshSession; import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.group.GroupJson.GroupInfo; import com.google.gerrit.server.group.GroupJson.GroupInfo;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.jcraft.jsch.JSchException; import com.jcraft.jsch.JSchException;
@@ -46,9 +43,6 @@ import java.util.Set;
*/ */
public class DefaultGroupsIT extends AbstractDaemonTest { public class DefaultGroupsIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Test @Test
public void defaultGroupsCreated_ssh() throws JSchException, IOException { public void defaultGroupsCreated_ssh() throws JSchException, IOException {
SshSession session = new SshSession(server, admin); SshSession session = new SshSession(server, admin);
@@ -72,16 +66,11 @@ public class DefaultGroupsIT extends AbstractDaemonTest {
@Test @Test
public void defaultGroupsCreated_internals() throws OrmException { public void defaultGroupsCreated_internals() throws OrmException {
ReviewDb db = reviewDbProvider.open();
try {
Set<String> names = Sets.newHashSet(); Set<String> names = Sets.newHashSet();
for (AccountGroup g : db.accountGroups().all()) { for (AccountGroup g : db.accountGroups().all()) {
names.add(g.getName()); names.add(g.getName());
} }
assertTrue(names.contains("Administrators")); assertTrue(names.contains("Administrators"));
assertTrue(names.contains("Non-Interactive Users")); assertTrue(names.contains("Non-Interactive Users"));
} finally {
db.close();
}
} }
} }

View File

@@ -24,8 +24,6 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.common.Nullable; import com.google.gerrit.common.Nullable;
import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.server.account.GroupCache; import com.google.gerrit.server.account.GroupCache;
@@ -69,9 +67,6 @@ public class ListGroupsIT extends AbstractDaemonTest {
@Test @Test
public void testOnlyVisibleGroupsReturned() throws OrmException, public void testOnlyVisibleGroupsReturned() throws OrmException,
JSchException, IOException { JSchException, IOException {
TestAccount user = accounts.create("user", "user@example.com", "User");
RestSession userSession = new RestSession(server, user);
String newGroupName = "newGroup"; String newGroupName = "newGroup";
CreateGroup.Input in = new CreateGroup.Input(); CreateGroup.Input in = new CreateGroup.Input();
in.description = "a hidden group"; in.description = "a hidden group";

View File

@@ -14,19 +14,14 @@
package com.google.gerrit.acceptance.rest.project; package com.google.gerrit.acceptance.rest.project;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.common.data.AccessSection; import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.Permission;
import com.google.gerrit.common.data.PermissionRule; import com.google.gerrit.common.data.PermissionRule;
import com.google.gerrit.reviewdb.client.Branch; import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.config.AllProjectsNameProvider; import com.google.gerrit.server.config.AllProjectsNameProvider;
import com.google.gerrit.server.git.MetaDataUpdate; import com.google.gerrit.server.git.MetaDataUpdate;
import com.google.gerrit.server.git.ProjectConfig; import com.google.gerrit.server.git.ProjectConfig;
@@ -51,25 +46,11 @@ public class CreateBranchIT extends AbstractDaemonTest {
@Inject @Inject
private AllProjectsNameProvider allProjects; private AllProjectsNameProvider allProjects;
private RestSession userSession;
private Project.NameKey project;
private Branch.NameKey branch; private Branch.NameKey branch;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
TestAccount user = accounts.create("user", "user@example.com", "User");
userSession = new RestSession(server, user);
project = new Project.NameKey("p");
branch = new Branch.NameKey(project, "test"); branch = new Branch.NameKey(project, "test");
SshSession sshSession = new SshSession(server, admin);
try {
createProject(sshSession, project.get(), null, true);
} finally {
sshSession.close();
}
} }
@Test @Test

View File

@@ -24,8 +24,6 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.Project.InheritableBoolean; import com.google.gerrit.reviewdb.client.Project.InheritableBoolean;
@@ -194,8 +192,7 @@ public class CreateProjectIT extends AbstractDaemonTest {
@Test @Test
public void testCreateProjectWithoutCapability_Forbidden() throws OrmException, public void testCreateProjectWithoutCapability_Forbidden() throws OrmException,
JSchException, IOException { JSchException, IOException {
TestAccount user = accounts.create("user", "user@example.com", "User"); RestResponse r = userSession.put("/projects/newProject");
RestResponse r = new RestSession(server, user).put("/projects/newProject");
assertEquals(HttpStatus.SC_FORBIDDEN, r.getStatusCode()); assertEquals(HttpStatus.SC_FORBIDDEN, r.getStatusCode());
} }

View File

@@ -14,19 +14,14 @@
package com.google.gerrit.acceptance.rest.project; package com.google.gerrit.acceptance.rest.project;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.common.data.AccessSection; import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.Permission;
import com.google.gerrit.common.data.PermissionRule; import com.google.gerrit.common.data.PermissionRule;
import com.google.gerrit.reviewdb.client.Branch; import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.config.AllProjectsNameProvider; import com.google.gerrit.server.config.AllProjectsNameProvider;
import com.google.gerrit.server.git.MetaDataUpdate; import com.google.gerrit.server.git.MetaDataUpdate;
import com.google.gerrit.server.git.ProjectConfig; import com.google.gerrit.server.git.ProjectConfig;
@@ -52,26 +47,11 @@ public class DeleteBranchIT extends AbstractDaemonTest {
@Inject @Inject
private AllProjectsNameProvider allProjects; private AllProjectsNameProvider allProjects;
private RestSession userSession;
private Project.NameKey project;
private Branch.NameKey branch; private Branch.NameKey branch;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
TestAccount user = accounts.create("user", "user@example.com", "User");
userSession = new RestSession(server, user);
project = new Project.NameKey("p");
branch = new Branch.NameKey(project, "test"); branch = new Branch.NameKey(project, "test");
SshSession sshSession = new SshSession(server, admin);
try {
createProject(sshSession, project.get(), null, true);
} finally {
sshSession.close();
}
adminSession.put("/projects/" + project.get() adminSession.put("/projects/" + project.get()
+ "/branches/" + branch.getShortName()).consume(); + "/branches/" + branch.getShortName()).consume();
} }

View File

@@ -20,8 +20,6 @@ import static org.junit.Assert.assertEquals;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.GcAssert; import com.google.gerrit.acceptance.GcAssert;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.acceptance.UseLocalDisk; import com.google.gerrit.acceptance.UseLocalDisk;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.config.AllProjectsName; import com.google.gerrit.server.config.AllProjectsName;
@@ -49,14 +47,11 @@ public class GarbageCollectionIT extends AbstractDaemonTest {
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
SshSession sshSession = new SshSession(server, admin);
project1 = new Project.NameKey("p1"); project1 = new Project.NameKey("p1");
createProject(sshSession, project1.get()); createProject(sshSession, project1.get());
project2 = new Project.NameKey("p2"); project2 = new Project.NameKey("p2");
createProject(sshSession, project2.get()); createProject(sshSession, project2.get());
sshSession.close();
} }
@Test @Test
@@ -65,10 +60,11 @@ public class GarbageCollectionIT extends AbstractDaemonTest {
} }
@Test @Test
public void testGcNotAllowed_Forbidden() throws IOException, OrmException, JSchException { public void testGcNotAllowed_Forbidden() throws IOException, OrmException,
JSchException {
assertEquals(HttpStatus.SC_FORBIDDEN, assertEquals(HttpStatus.SC_FORBIDDEN,
new RestSession(server, accounts.create("user", "user@example.com", "User")) userSession.post("/projects/" + allProjects.get() + "/gc")
.post("/projects/" + allProjects.get() + "/gc").getStatusCode()); .getStatusCode());
} }
@Test @Test

View File

@@ -14,7 +14,6 @@
package com.google.gerrit.acceptance.rest.project; package com.google.gerrit.acceptance.rest.project;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject; import static com.google.gerrit.acceptance.GitUtil.createProject;
import static com.google.gerrit.acceptance.rest.project.BranchAssert.assertBranches; import static com.google.gerrit.acceptance.rest.project.BranchAssert.assertBranches;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@@ -23,13 +22,10 @@ import com.google.common.collect.Lists;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.common.data.AccessSection; import com.google.gerrit.common.data.AccessSection;
import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.Permission;
import com.google.gerrit.common.data.PermissionRule; import com.google.gerrit.common.data.PermissionRule;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.git.MetaDataUpdate; import com.google.gerrit.server.git.MetaDataUpdate;
import com.google.gerrit.server.git.ProjectConfig; import com.google.gerrit.server.git.ProjectConfig;
import com.google.gerrit.server.group.SystemGroupBackend; import com.google.gerrit.server.group.SystemGroupBackend;
@@ -37,18 +33,14 @@ import com.google.gerrit.server.project.ListBranches.BranchInfo;
import com.google.gerrit.server.project.ProjectCache; import com.google.gerrit.server.project.ProjectCache;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.jcraft.jsch.JSchException; import com.jcraft.jsch.JSchException;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
@@ -63,32 +55,6 @@ public class ListBranchesIT extends AbstractDaemonTest {
@Inject @Inject
private ProjectCache projectCache; private ProjectCache projectCache;
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private PushOneCommit.Factory pushFactory;
private SshSession sshSession;
private Project.NameKey project;
private Git git;
private ReviewDb db;
@Before
public void setUp() throws Exception {
project = new Project.NameKey("p");
sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
git = cloneProject(sshSession.getUrl() + "/" + project.get());
db = reviewDbProvider.open();
}
@After
public void cleanup() {
sshSession.close();
db.close();
}
@Test @Test
public void listBranchesOfNonExistingProject_NotFound() throws IOException { public void listBranchesOfNonExistingProject_NotFound() throws IOException {
assertEquals(HttpStatus.SC_NOT_FOUND, assertEquals(HttpStatus.SC_NOT_FOUND,
@@ -99,9 +65,8 @@ public class ListBranchesIT extends AbstractDaemonTest {
public void listBranchesOfNonVisibleProject_NotFound() throws IOException, public void listBranchesOfNonVisibleProject_NotFound() throws IOException,
OrmException, JSchException, ConfigInvalidException { OrmException, JSchException, ConfigInvalidException {
blockRead(project, "refs/*"); blockRead(project, "refs/*");
RestSession session = new RestSession(server, accounts.user());
assertEquals(HttpStatus.SC_NOT_FOUND, assertEquals(HttpStatus.SC_NOT_FOUND,
session.get("/projects/" + project.get() + "/branches").getStatusCode()); userSession.get("/projects/" + project.get() + "/branches").getStatusCode());
} }
@Test @Test
@@ -145,12 +110,10 @@ public class ListBranchesIT extends AbstractDaemonTest {
public void listBranchesSomeHidden() throws IOException, GitAPIException, public void listBranchesSomeHidden() throws IOException, GitAPIException,
ConfigInvalidException, OrmException, JSchException { ConfigInvalidException, OrmException, JSchException {
blockRead(project, "refs/heads/dev"); blockRead(project, "refs/heads/dev");
RestSession session =
new RestSession(server, accounts.create("user", "user@example.com", "User"));
pushTo("refs/heads/master"); pushTo("refs/heads/master");
String masterCommit = git.getRepository().getRef("master").getTarget().getObjectId().getName(); String masterCommit = git.getRepository().getRef("master").getTarget().getObjectId().getName();
pushTo("refs/heads/dev"); pushTo("refs/heads/dev");
RestResponse r = session.get("/projects/" + project.get() + "/branches"); RestResponse r = userSession.get("/projects/" + project.get() + "/branches");
// refs/meta/config is hidden since user is no project owner // refs/meta/config is hidden since user is no project owner
List<BranchInfo> expected = Lists.asList( List<BranchInfo> expected = Lists.asList(
new BranchInfo("HEAD", "master", false), new BranchInfo("HEAD", "master", false),
@@ -164,12 +127,10 @@ public class ListBranchesIT extends AbstractDaemonTest {
public void listBranchesHeadHidden() throws IOException, GitAPIException, public void listBranchesHeadHidden() throws IOException, GitAPIException,
ConfigInvalidException, OrmException, JSchException { ConfigInvalidException, OrmException, JSchException {
blockRead(project, "refs/heads/master"); blockRead(project, "refs/heads/master");
RestSession session =
new RestSession(server, accounts.create("user", "user@example.com", "User"));
pushTo("refs/heads/master"); pushTo("refs/heads/master");
pushTo("refs/heads/dev"); pushTo("refs/heads/dev");
String devCommit = git.getRepository().getRef("master").getTarget().getObjectId().getName(); String devCommit = git.getRepository().getRef("master").getTarget().getObjectId().getName();
RestResponse r = session.get("/projects/" + project.get() + "/branches"); RestResponse r = userSession.get("/projects/" + project.get() + "/branches");
// refs/meta/config is hidden since user is no project owner // refs/meta/config is hidden since user is no project owner
assertBranches(Collections.singletonList(new BranchInfo("refs/heads/dev", assertBranches(Collections.singletonList(new BranchInfo("refs/heads/dev",
devCommit, false)), toBranchInfoList(r)); devCommit, false)), toBranchInfoList(r));

View File

@@ -21,7 +21,6 @@ import static org.junit.Assert.assertTrue;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.config.AllProjectsName; import com.google.gerrit.server.config.AllProjectsName;
import com.google.gerrit.server.project.ProjectJson.ProjectInfo; import com.google.gerrit.server.project.ProjectJson.ProjectInfo;
@@ -52,27 +51,27 @@ public class ListChildProjectsIT extends AbstractDaemonTest {
public void listNoChildren() throws IOException { public void listNoChildren() throws IOException {
RestResponse r = GET("/projects/" + allProjects.get() + "/children/"); RestResponse r = GET("/projects/" + allProjects.get() + "/children/");
assertEquals(HttpStatus.SC_OK, r.getStatusCode()); assertEquals(HttpStatus.SC_OK, r.getStatusCode());
assertTrue(toProjectInfoList(r).isEmpty()); List<ProjectInfo> projectInfoList = toProjectInfoList(r);
// Project 'p' was already created in the base class
assertTrue(projectInfoList.size() == 1);
} }
@Test @Test
public void listChildren() throws IOException, JSchException { public void listChildren() throws IOException, JSchException {
SshSession sshSession = new SshSession(server, admin); Project.NameKey existingProject = new Project.NameKey("p");
Project.NameKey child1 = new Project.NameKey("p1"); Project.NameKey child1 = new Project.NameKey("p1");
createProject(sshSession, child1.get()); createProject(sshSession, child1.get());
Project.NameKey child2 = new Project.NameKey("p2"); Project.NameKey child2 = new Project.NameKey("p2");
createProject(sshSession, child2.get()); createProject(sshSession, child2.get());
createProject(sshSession, "p1.1", child1); createProject(sshSession, "p1.1", child1);
sshSession.close();
RestResponse r = GET("/projects/" + allProjects.get() + "/children/"); RestResponse r = GET("/projects/" + allProjects.get() + "/children/");
assertEquals(HttpStatus.SC_OK, r.getStatusCode()); assertEquals(HttpStatus.SC_OK, r.getStatusCode());
assertProjects(Arrays.asList(child1, child2), toProjectInfoList(r)); assertProjects(Arrays.asList(existingProject, child1, child2), toProjectInfoList(r));
} }
@Test @Test
public void listChildrenRecursively() throws IOException, JSchException { public void listChildrenRecursively() throws IOException, JSchException {
SshSession sshSession = new SshSession(server, admin);
Project.NameKey child1 = new Project.NameKey("p1"); Project.NameKey child1 = new Project.NameKey("p1");
createProject(sshSession, child1.get()); createProject(sshSession, child1.get());
createProject(sshSession, "p2"); createProject(sshSession, "p2");
@@ -84,12 +83,11 @@ public class ListChildProjectsIT extends AbstractDaemonTest {
createProject(sshSession, child1_1_1.get(), child1_1); createProject(sshSession, child1_1_1.get(), child1_1);
Project.NameKey child1_1_1_1 = new Project.NameKey("p1.1.1.1"); Project.NameKey child1_1_1_1 = new Project.NameKey("p1.1.1.1");
createProject(sshSession, child1_1_1_1.get(), child1_1_1); createProject(sshSession, child1_1_1_1.get(), child1_1_1);
sshSession.close();
RestResponse r = GET("/projects/" + child1.get() + "/children/?recursive"); RestResponse r = GET("/projects/" + child1.get() + "/children/?recursive");
assertEquals(HttpStatus.SC_OK, r.getStatusCode()); assertEquals(HttpStatus.SC_OK, r.getStatusCode());
assertProjects(Arrays.asList(child1_1, child1_2, child1_1_1, child1_1_1_1), assertProjects(Arrays.asList(child1_1, child1_2,
toProjectInfoList(r)); child1_1_1, child1_1_1_1), toProjectInfoList(r));
} }
private static List<ProjectInfo> toProjectInfoList(RestResponse r) private static List<ProjectInfo> toProjectInfoList(RestResponse r)

View File

@@ -19,9 +19,6 @@ import static org.junit.Assert.assertEquals;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.RestResponse; import com.google.gerrit.acceptance.RestResponse;
import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.config.AllProjectsNameProvider; import com.google.gerrit.server.config.AllProjectsNameProvider;
import com.google.gerrit.server.project.SetParent; import com.google.gerrit.server.project.SetParent;
@@ -30,8 +27,6 @@ import com.google.inject.Inject;
import com.jcraft.jsch.JSchException; import com.jcraft.jsch.JSchException;
import org.apache.http.HttpStatus; import org.apache.http.HttpStatus;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
@@ -41,32 +36,12 @@ public class SetParentIT extends AbstractDaemonTest {
@Inject @Inject
private AllProjectsNameProvider allProjects; private AllProjectsNameProvider allProjects;
private RestSession userSession;
private SshSession sshSession;
private String project;
@Before
public void setUp() throws Exception {
TestAccount user = accounts.user();
userSession = new RestSession(server, user);
sshSession = new SshSession(server, admin);
project = "p";
createProject(sshSession, project, null, true);
}
@After
public void cleanup() {
sshSession.close();
}
@Test @Test
public void setParent_Forbidden() throws IOException, JSchException { public void setParent_Forbidden() throws IOException, JSchException {
String parent = "parent"; String parent = "parent";
createProject(sshSession, parent, null, true); createProject(sshSession, parent, null, true);
RestResponse r = RestResponse r =
userSession.put("/projects/" + project + "/parent", userSession.put("/projects/" + project.get() + "/parent",
newParentInput(parent)); newParentInput(parent));
assertEquals(HttpStatus.SC_FORBIDDEN, r.getStatusCode()); assertEquals(HttpStatus.SC_FORBIDDEN, r.getStatusCode());
r.consume(); r.consume();
@@ -77,12 +52,12 @@ public class SetParentIT extends AbstractDaemonTest {
String parent = "parent"; String parent = "parent";
createProject(sshSession, parent, null, true); createProject(sshSession, parent, null, true);
RestResponse r = RestResponse r =
adminSession.put("/projects/" + project + "/parent", adminSession.put("/projects/" + project.get() + "/parent",
newParentInput(parent)); newParentInput(parent));
assertEquals(HttpStatus.SC_OK, r.getStatusCode()); assertEquals(HttpStatus.SC_OK, r.getStatusCode());
r.consume(); r.consume();
r = adminSession.get("/projects/" + project + "/parent"); r = adminSession.get("/projects/" + project.get() + "/parent");
assertEquals(HttpStatus.SC_OK, r.getStatusCode()); assertEquals(HttpStatus.SC_OK, r.getStatusCode());
String newParent = String newParent =
newGson().fromJson(r.getReader(), String.class); newGson().fromJson(r.getReader(), String.class);
@@ -94,7 +69,7 @@ public class SetParentIT extends AbstractDaemonTest {
public void setParentForAllProjects_Conflict() throws IOException { public void setParentForAllProjects_Conflict() throws IOException {
RestResponse r = RestResponse r =
adminSession.put("/projects/" + allProjects.get() + "/parent", adminSession.put("/projects/" + allProjects.get() + "/parent",
newParentInput(project)); newParentInput(project.get()));
assertEquals(HttpStatus.SC_CONFLICT, r.getStatusCode()); assertEquals(HttpStatus.SC_CONFLICT, r.getStatusCode());
r.consume(); r.consume();
} }
@@ -102,21 +77,21 @@ public class SetParentIT extends AbstractDaemonTest {
@Test @Test
public void setInvalidParent_Conflict() throws IOException, JSchException { public void setInvalidParent_Conflict() throws IOException, JSchException {
RestResponse r = RestResponse r =
adminSession.put("/projects/" + project + "/parent", adminSession.put("/projects/" + project.get() + "/parent",
newParentInput(project)); newParentInput(project.get()));
assertEquals(HttpStatus.SC_CONFLICT, r.getStatusCode()); assertEquals(HttpStatus.SC_CONFLICT, r.getStatusCode());
r.consume(); r.consume();
String child = "child"; String child = "child";
createProject(sshSession, child, new Project.NameKey(project), true); createProject(sshSession, child, project, true);
r = adminSession.put("/projects/" + project + "/parent", r = adminSession.put("/projects/" + project.get() + "/parent",
newParentInput(child)); newParentInput(child));
assertEquals(HttpStatus.SC_CONFLICT, r.getStatusCode()); assertEquals(HttpStatus.SC_CONFLICT, r.getStatusCode());
r.consume(); r.consume();
String grandchild = "grandchild"; String grandchild = "grandchild";
createProject(sshSession, grandchild, new Project.NameKey(child), true); createProject(sshSession, grandchild, new Project.NameKey(child), true);
r = adminSession.put("/projects/" + project + "/parent", r = adminSession.put("/projects/" + project.get() + "/parent",
newParentInput(grandchild)); newParentInput(grandchild));
assertEquals(HttpStatus.SC_CONFLICT, r.getStatusCode()); assertEquals(HttpStatus.SC_CONFLICT, r.getStatusCode());
r.consume(); r.consume();
@@ -125,7 +100,7 @@ public class SetParentIT extends AbstractDaemonTest {
@Test @Test
public void setNonExistingParent_UnprocessibleEntity() throws IOException { public void setNonExistingParent_UnprocessibleEntity() throws IOException {
RestResponse r = RestResponse r =
adminSession.put("/projects/" + project + "/parent", adminSession.put("/projects/" + project.get() + "/parent",
newParentInput("non-existing")); newParentInput("non-existing"));
assertEquals(HttpStatus.SC_UNPROCESSABLE_ENTITY, r.getStatusCode()); assertEquals(HttpStatus.SC_UNPROCESSABLE_ENTITY, r.getStatusCode());
r.consume(); r.consume();

View File

@@ -15,9 +15,7 @@
package com.google.gerrit.acceptance.server.change; package com.google.gerrit.acceptance.server.change;
import static com.google.gerrit.acceptance.GitUtil.add; import static com.google.gerrit.acceptance.GitUtil.add;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createCommit; import static com.google.gerrit.acceptance.GitUtil.createCommit;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static com.google.gerrit.acceptance.GitUtil.pushHead; import static com.google.gerrit.acceptance.GitUtil.pushHead;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@@ -26,22 +24,14 @@ import com.google.common.collect.Iterables;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.GitUtil.Commit; import com.google.gerrit.acceptance.GitUtil.Commit;
import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.change.GetRelated.ChangeAndCommit; import com.google.gerrit.server.change.GetRelated.ChangeAndCommit;
import com.google.gerrit.server.change.GetRelated.RelatedInfo; import com.google.gerrit.server.change.GetRelated.RelatedInfo;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.ResetCommand.ResetType; import org.eclipse.jgit.api.ResetCommand.ResetType;
import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException; import java.io.IOException;
@@ -49,30 +39,6 @@ import java.util.List;
public class GetRelatedIT extends AbstractDaemonTest { public class GetRelatedIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private PushOneCommit.Factory pushFactory;
private Git git;
private ReviewDb db;
@Before
public void setUp() throws Exception {
Project.NameKey project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
createProject(sshSession, project.get());
git = cloneProject(sshSession.getUrl() + "/" + project.get());
sshSession.close();
db = reviewDbProvider.open();
}
@After
public void cleanup() {
db.close();
}
@Test @Test
public void getRelatedNoResult() throws GitAPIException, public void getRelatedNoResult() throws GitAPIException,
IOException, Exception { IOException, Exception {

View File

@@ -15,64 +15,32 @@
package com.google.gerrit.acceptance.server.project; package com.google.gerrit.acceptance.server.project;
import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.gerrit.acceptance.GitUtil.cloneProject;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static com.google.gerrit.extensions.common.ListChangesOption.DETAILED_LABELS; import static com.google.gerrit.extensions.common.ListChangesOption.DETAILED_LABELS;
import static com.google.gerrit.server.group.SystemGroupBackend.ANONYMOUS_USERS;
import static com.google.gerrit.server.project.Util.grant;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import com.google.gerrit.acceptance.AbstractDaemonTest; import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.AcceptanceTestRequestScope;
import com.google.gerrit.acceptance.PushOneCommit; import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.common.data.LabelType; import com.google.gerrit.common.data.LabelType;
import com.google.gerrit.common.data.Permission;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.api.changes.ReviewInput; import com.google.gerrit.extensions.api.changes.ReviewInput;
import com.google.gerrit.extensions.api.changes.RevisionApi; import com.google.gerrit.extensions.api.changes.RevisionApi;
import com.google.gerrit.reviewdb.client.AccountGroup; import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.extensions.common.LabelInfo;
import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.change.ChangeJson.ChangeInfo;
import com.google.gerrit.server.change.ChangeJson.LabelInfo;
import com.google.gerrit.server.config.AllProjectsName; import com.google.gerrit.server.config.AllProjectsName;
import com.google.gerrit.server.git.GitRepositoryManager; import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.MetaDataUpdate; import com.google.gerrit.server.git.MetaDataUpdate;
import com.google.gerrit.server.git.ProjectConfig; import com.google.gerrit.server.git.ProjectConfig;
import com.google.gerrit.server.group.SystemGroupBackend;
import com.google.gerrit.server.project.ProjectCache; import com.google.gerrit.server.project.ProjectCache;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.util.Providers;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.Repository;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import java.io.IOException;
public class LabelTypeIT extends AbstractDaemonTest { public class LabelTypeIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject @Inject
private GitRepositoryManager repoManager; private GitRepositoryManager repoManager;
@Inject
private GerritApi gApi;
@Inject
private AcceptanceTestRequestScope atrScope;
@Inject
private IdentifiedUser.GenericFactory identifiedUserFactory;
@Inject @Inject
private ProjectCache projectCache; private ProjectCache projectCache;
@@ -82,36 +50,11 @@ public class LabelTypeIT extends AbstractDaemonTest {
@Inject @Inject
private MetaDataUpdate.Server metaDataUpdateFactory; private MetaDataUpdate.Server metaDataUpdateFactory;
@Inject
private PushOneCommit.Factory pushFactory;
private Project.NameKey project;
private LabelType codeReview; private LabelType codeReview;
private TestAccount user;
private Git git;
private ReviewDb db;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
user = accounts.user();
project = new Project.NameKey("p");
SshSession sshSession = new SshSession(server, admin);
try {
createProject(sshSession, project.get());
git = cloneProject(sshSession.getUrl() + "/" + project.get());
db = reviewDbProvider.open();
atrScope.set(atrScope.newContext(reviewDbProvider, sshSession,
identifiedUserFactory.create(Providers.of(db), user.getId())));
} finally {
sshSession.close();
}
ProjectConfig cfg = projectCache.checkedGet(allProjects).getConfig(); ProjectConfig cfg = projectCache.checkedGet(allProjects).getConfig();
AccountGroup.UUID anonymousUsers =
SystemGroupBackend.getGroup(ANONYMOUS_USERS).getUUID();
grant(cfg, Permission.forLabel("Code-Review"), -2, 2, anonymousUsers,
"refs/heads/*");
grant(cfg, Permission.SUBMIT, anonymousUsers, "refs/heads/*");
codeReview = checkNotNull(cfg.getLabelSections().get("Code-Review")); codeReview = checkNotNull(cfg.getLabelSections().get("Code-Review"));
codeReview.setCopyMinScore(false); codeReview.setCopyMinScore(false);
codeReview.setCopyMaxScore(false); codeReview.setCopyMaxScore(false);
@@ -120,120 +63,69 @@ public class LabelTypeIT extends AbstractDaemonTest {
saveProjectConfig(cfg); saveProjectConfig(cfg);
} }
@After
public void cleanup() {
db.close();
}
@Test @Test
public void noCopyMinScoreOnRework() throws Exception { public void noCopyMinScoreOnRework() throws Exception {
String subject = "test commit"; PushOneCommit.Result r = createChange();
String file = "a.txt";
PushOneCommit push = pushFactory.create(db, user.getIdent(),
subject, file, "first contents");
PushOneCommit.Result r = push.to(git, "refs/for/master");
revision(r).review(ReviewInput.reject()); revision(r).review(ReviewInput.reject());
assertApproval(r, -2); assertApproval(r, -2);
r = ammendChange(r.getChangeId());
push = pushFactory.create(db, user.getIdent(),
subject, file, "second contents", r.getChangeId());
r = push.to(git, "refs/for/master");
assertApproval(r, 0); assertApproval(r, 0);
} }
@Test @Test
public void copyMinScoreOnRework() throws Exception { public void copyMinScoreOnRework() throws Exception {
String subject = "test commit";
String file = "a.txt";
codeReview.setCopyMinScore(true); codeReview.setCopyMinScore(true);
saveLabelConfig(); saveLabelConfig();
PushOneCommit.Result r = createChange();
PushOneCommit push = pushFactory.create(db, user.getIdent(),
subject, file, "first contents");
PushOneCommit.Result r = push.to(git, "refs/for/master");
revision(r).review(ReviewInput.reject()); revision(r).review(ReviewInput.reject());
assertApproval(r, -2); assertApproval(r, -2);
r = ammendChange(r.getChangeId());
push = pushFactory.create(db, user.getIdent(),
subject, file, "second contents", r.getChangeId());
r = push.to(git, "refs/for/master");
assertApproval(r, -2); assertApproval(r, -2);
} }
@Test @Test
public void noCopyMaxScoreOnRework() throws Exception { public void noCopyMaxScoreOnRework() throws Exception {
String subject = "test commit"; PushOneCommit.Result r = createChange();
String file = "a.txt";
PushOneCommit push = pushFactory.create(db, user.getIdent(),
subject, file, "first contents");
PushOneCommit.Result r = push.to(git, "refs/for/master");
revision(r).review(ReviewInput.approve()); revision(r).review(ReviewInput.approve());
assertApproval(r, 2); assertApproval(r, 2);
r = ammendChange(r.getChangeId());
push = pushFactory.create(db, user.getIdent(),
subject, file, "second contents", r.getChangeId());
r = push.to(git, "refs/for/master");
assertApproval(r, 0); assertApproval(r, 0);
} }
@Test @Test
public void copyMaxScoreOnRework() throws Exception { public void copyMaxScoreOnRework() throws Exception {
String subject = "test commit";
String file = "a.txt";
codeReview.setCopyMaxScore(true); codeReview.setCopyMaxScore(true);
saveLabelConfig(); saveLabelConfig();
PushOneCommit.Result r = createChange();
PushOneCommit push = pushFactory.create(db, user.getIdent(),
subject, file, "first contents");
PushOneCommit.Result r = push.to(git, "refs/for/master");
revision(r).review(ReviewInput.approve()); revision(r).review(ReviewInput.approve());
assertApproval(r, 2); assertApproval(r, 2);
r = ammendChange(r.getChangeId());
push = pushFactory.create(db, user.getIdent(),
subject, file, "second contents", r.getChangeId());
r = push.to(git, "refs/for/master");
assertApproval(r, 2); assertApproval(r, 2);
} }
@Test @Test
public void noCopyNonMaxScoreOnRework() throws Exception { public void noCopyNonMaxScoreOnRework() throws Exception {
String subject = "test commit";
String file = "a.txt";
codeReview.setCopyMinScore(true); codeReview.setCopyMinScore(true);
codeReview.setCopyMaxScore(true); codeReview.setCopyMaxScore(true);
saveLabelConfig(); saveLabelConfig();
PushOneCommit push = pushFactory.create(db, user.getIdent(), PushOneCommit.Result r = createChange();
subject, file, "first contents");
PushOneCommit.Result r = push.to(git, "refs/for/master");
revision(r).review(ReviewInput.recommend()); revision(r).review(ReviewInput.recommend());
assertApproval(r, 1); assertApproval(r, 1);
r = ammendChange(r.getChangeId());
push = pushFactory.create(db, user.getIdent(),
subject, file, "second contents", r.getChangeId());
r = push.to(git, "refs/for/master");
assertApproval(r, 0); assertApproval(r, 0);
} }
@Test @Test
public void noCopyNonMinScoreOnRework() throws Exception { public void noCopyNonMinScoreOnRework() throws Exception {
String subject = "test commit";
String file = "a.txt";
codeReview.setCopyMinScore(true); codeReview.setCopyMinScore(true);
codeReview.setCopyMaxScore(true); codeReview.setCopyMaxScore(true);
saveLabelConfig(); saveLabelConfig();
PushOneCommit push = pushFactory.create(db, user.getIdent(), PushOneCommit.Result r = createChange();
subject, file, "first contents");
PushOneCommit.Result r = push.to(git, "refs/for/master");
revision(r).review(ReviewInput.dislike()); revision(r).review(ReviewInput.dislike());
assertApproval(r, -1); assertApproval(r, -1);
r = ammendChange(r.getChangeId());
push = pushFactory.create(db, user.getIdent(),
subject, file, "second contents", r.getChangeId());
r = push.to(git, "refs/for/master");
assertApproval(r, 0); assertApproval(r, 0);
} }
@@ -242,13 +134,13 @@ public class LabelTypeIT extends AbstractDaemonTest {
String file = "a.txt"; String file = "a.txt";
String contents = "contents"; String contents = "contents";
PushOneCommit push = pushFactory.create(db, user.getIdent(), PushOneCommit push = pushFactory.create(db, admin.getIdent(),
"first subject", file, contents); "first subject", file, contents);
PushOneCommit.Result r = push.to(git, "refs/for/master"); PushOneCommit.Result r = push.to(git, "refs/for/master");
revision(r).review(ReviewInput.recommend()); revision(r).review(ReviewInput.recommend());
assertApproval(r, 1); assertApproval(r, 1);
push = pushFactory.create(db, user.getIdent(), push = pushFactory.create(db, admin.getIdent(),
"second subject", file, contents, r.getChangeId()); "second subject", file, contents, r.getChangeId());
r = push.to(git, "refs/for/master"); r = push.to(git, "refs/for/master");
assertApproval(r, 0); assertApproval(r, 0);
@@ -261,13 +153,13 @@ public class LabelTypeIT extends AbstractDaemonTest {
codeReview.setCopyAllScoresIfNoCodeChange(true); codeReview.setCopyAllScoresIfNoCodeChange(true);
saveLabelConfig(); saveLabelConfig();
PushOneCommit push = pushFactory.create(db, user.getIdent(), PushOneCommit push = pushFactory.create(db, admin.getIdent(),
"first subject", file, contents); "first subject", file, contents);
PushOneCommit.Result r = push.to(git, "refs/for/master"); PushOneCommit.Result r = push.to(git, "refs/for/master");
revision(r).review(ReviewInput.recommend()); revision(r).review(ReviewInput.recommend());
assertApproval(r, 1); assertApproval(r, 1);
push = pushFactory.create(db, user.getIdent(), push = pushFactory.create(db, admin.getIdent(),
"second subject", file, contents, r.getChangeId()); "second subject", file, contents, r.getChangeId());
r = push.to(git, "refs/for/master"); r = push.to(git, "refs/for/master");
assertApproval(r, 1); assertApproval(r, 1);
@@ -279,17 +171,17 @@ public class LabelTypeIT extends AbstractDaemonTest {
String file = "a.txt"; String file = "a.txt";
String contents = "contents"; String contents = "contents";
PushOneCommit push = pushFactory.create(db, user.getIdent()); PushOneCommit push = pushFactory.create(db, admin.getIdent());
PushOneCommit.Result r1 = push.to(git, "refs/for/master"); PushOneCommit.Result r1 = push.to(git, "refs/for/master");
merge(r1); merge(r1);
push = pushFactory.create(db, user.getIdent(), push = pushFactory.create(db, admin.getIdent(),
"non-conflicting", "b.txt", "other contents"); "non-conflicting", "b.txt", "other contents");
PushOneCommit.Result r2 = push.to(git, "refs/for/master"); PushOneCommit.Result r2 = push.to(git, "refs/for/master");
merge(r2); merge(r2);
git.checkout().setName(r1.getCommit().name()).call(); git.checkout().setName(r1.getCommit().name()).call();
push = pushFactory.create(db, user.getIdent(), subject, file, contents); push = pushFactory.create(db, admin.getIdent(), subject, file, contents);
PushOneCommit.Result r3 = push.to(git, "refs/for/master"); PushOneCommit.Result r3 = push.to(git, "refs/for/master");
revision(r3).review(ReviewInput.recommend()); revision(r3).review(ReviewInput.recommend());
assertApproval(r3, 1); assertApproval(r3, 1);
@@ -306,17 +198,17 @@ public class LabelTypeIT extends AbstractDaemonTest {
codeReview.setCopyAllScoresOnTrivialRebase(true); codeReview.setCopyAllScoresOnTrivialRebase(true);
saveLabelConfig(); saveLabelConfig();
PushOneCommit push = pushFactory.create(db, user.getIdent()); PushOneCommit push = pushFactory.create(db, admin.getIdent());
PushOneCommit.Result r1 = push.to(git, "refs/for/master"); PushOneCommit.Result r1 = push.to(git, "refs/for/master");
merge(r1); merge(r1);
push = pushFactory.create(db, user.getIdent(), push = pushFactory.create(db, admin.getIdent(),
"non-conflicting", "b.txt", "other contents"); "non-conflicting", "b.txt", "other contents");
PushOneCommit.Result r2 = push.to(git, "refs/for/master"); PushOneCommit.Result r2 = push.to(git, "refs/for/master");
merge(r2); merge(r2);
git.checkout().setName(r1.getCommit().name()).call(); git.checkout().setName(r1.getCommit().name()).call();
push = pushFactory.create(db, user.getIdent(), subject, file, contents); push = pushFactory.create(db, admin.getIdent(), subject, file, contents);
PushOneCommit.Result r3 = push.to(git, "refs/for/master"); PushOneCommit.Result r3 = push.to(git, "refs/for/master");
revision(r3).review(ReviewInput.recommend()); revision(r3).review(ReviewInput.recommend());
assertApproval(r3, 1); assertApproval(r3, 1);
@@ -344,7 +236,7 @@ public class LabelTypeIT extends AbstractDaemonTest {
private RevisionApi revision(PushOneCommit.Result r) throws Exception { private RevisionApi revision(PushOneCommit.Result r) throws Exception {
return gApi.changes() return gApi.changes()
.id(r.getChangeId()) .id(r.getChangeId())
.revision(r.getCommit().name()); .current();
} }
private void merge(PushOneCommit.Result r) throws Exception { private void merge(PushOneCommit.Result r) throws Exception {
@@ -367,13 +259,10 @@ public class LabelTypeIT extends AbstractDaemonTest {
throws Exception { throws Exception {
// Don't use asserts from PushOneCommit so we can test the round-trip // Don't use asserts from PushOneCommit so we can test the round-trip
// through JSON instead of querying the DB directly. // through JSON instead of querying the DB directly.
LabelInfo cr = getChange(r).labels.get("Code-Review"); ChangeInfo c = get(r.getChangeId(), DETAILED_LABELS);
LabelInfo cr = c.labels.get("Code-Review");
assertEquals(1, cr.all.size()); assertEquals(1, cr.all.size());
assertEquals("User", cr.all.get(0).name); assertEquals("Administrator", cr.all.get(0).name);
assertEquals(expected, cr.all.get(0).value.intValue()); assertEquals(expected, cr.all.get(0).value.intValue());
} }
private ChangeInfo getChange(PushOneCommit.Result pr) throws IOException {
return getChange(pr.getChangeId(), DETAILED_LABELS);
}
} }

View File

@@ -33,7 +33,6 @@ import com.google.inject.Inject;
import com.jcraft.jsch.JSchException; import com.jcraft.jsch.JSchException;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -55,15 +54,12 @@ public class GarbageCollectionIT extends AbstractDaemonTest {
@Inject @Inject
private GcAssert gcAssert; private GcAssert gcAssert;
private SshSession sshSession;
private Project.NameKey project1; private Project.NameKey project1;
private Project.NameKey project2; private Project.NameKey project2;
private Project.NameKey project3; private Project.NameKey project3;
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
sshSession = new SshSession(server, admin);
project1 = new Project.NameKey("p1"); project1 = new Project.NameKey("p1");
createProject(sshSession, project1.get()); createProject(sshSession, project1.get());
@@ -74,11 +70,6 @@ public class GarbageCollectionIT extends AbstractDaemonTest {
createProject(sshSession, project3.get()); createProject(sshSession, project3.get());
} }
@After
public void cleanup() {
sshSession.close();
}
@Test @Test
@UseLocalDisk @UseLocalDisk
public void testGc() throws JSchException, IOException { public void testGc() throws JSchException, IOException {
@@ -103,7 +94,7 @@ public class GarbageCollectionIT extends AbstractDaemonTest {
@Test @Test
public void testGcWithoutCapability_Error() throws IOException, OrmException, public void testGcWithoutCapability_Error() throws IOException, OrmException,
JSchException { JSchException {
SshSession s = new SshSession(server, accounts.create("user", "user@example.com", "User")); SshSession s = new SshSession(server, user);
s.exec("gerrit gc --all"); s.exec("gerrit gc --all");
assertError("Capability runGC is required to access this resource", s.getError()); assertError("Capability runGC is required to access this resource", s.getError());
s.close(); s.close();