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;
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 org.junit.Assert.assertEquals;
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.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.change.ChangeJson.ChangeInfo;
import com.google.gerrit.server.change.ChangeJson;
import com.google.gerrit.testutil.ConfigSuite;
import com.google.gson.Gson;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.google.inject.util.Providers;
import org.apache.http.HttpStatus;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.Config;
import org.junit.Rule;
import org.junit.rules.TestRule;
@@ -34,6 +47,10 @@ import org.junit.runner.RunWith;
import org.junit.runners.model.Statement;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
@RunWith(ConfigSuite.class)
public abstract class AbstractDaemonTest {
@@ -43,9 +60,30 @@ public abstract class AbstractDaemonTest {
@Inject
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 TestAccount admin;
protected TestAccount user;
protected RestSession adminSession;
protected RestSession userSession;
protected SshSession sshSession;
protected ReviewDb db;
protected Project.NameKey project;
@Rule
public TestRule testRunner = new TestRule() {
@@ -82,8 +120,17 @@ public abstract class AbstractDaemonTest {
server = startServer(cfg, memory);
server.getTestInjector().injectMembers(this);
admin = accounts.admin();
user = accounts.user();
adminSession = new RestSession(server, admin);
userSession = new RestSession(server, user);
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 {
@@ -91,20 +138,56 @@ public abstract class AbstractDaemonTest {
}
private void afterTest() throws Exception {
db.close();
sshSession.close();
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 {
return getChange(adminSession, changeId, options);
}
protected ChangeInfo getChange(RestSession session, String changeId,
protected ChangeJson.ChangeInfo getChange(RestSession session, String changeId,
ListChangesOption... options) throws IOException {
String q = options.length > 0 ? "?o=" + Joiner.on("&o=").join(options) : "";
RestResponse r = session.get("/changes/" + changeId + q);
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() {

View File

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

View File

@@ -14,87 +14,30 @@
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 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.acceptance.TestAccount;
import com.google.gerrit.extensions.api.GerritApi;
import com.google.gerrit.extensions.api.changes.AddReviewerInput;
import com.google.gerrit.extensions.api.changes.ReviewInput;
import com.google.gerrit.extensions.common.ChangeInfo;
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.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.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.util.EnumSet;
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
public void get() throws GitAPIException,
IOException, RestApiException {
PushOneCommit.Result r = createChange();
String triplet = "p~master~" + r.getChangeId();
ChangeInfo c =
gApi.changes()
.id(triplet)
.get(EnumSet.noneOf(ListChangesOption.class));
ChangeInfo c = info(triplet);
assertEquals(triplet, c.id);
assertEquals("p", c.project);
assertEquals("master", c.branch);
@@ -164,10 +107,4 @@ public class ChangeIT extends AbstractDaemonTest {
.id("p~master~" + r.getChangeId())
.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;
import static com.google.gerrit.acceptance.GitUtil.createProject;
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.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.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
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
public void createBranch() throws GitAPIException,
IOException, RestApiException {

View File

@@ -14,71 +14,21 @@
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.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.ChangeApi;
import com.google.gerrit.extensions.api.changes.CherryPickInput;
import com.google.gerrit.extensions.api.changes.ReviewInput;
import com.google.gerrit.extensions.api.projects.BranchInput;
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.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
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
public void reviewTriplet() throws GitAPIException,
IOException, RestApiException {
@@ -160,13 +110,6 @@ public class RevisionIT extends AbstractDaemonTest {
.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,
String content) throws GitAPIException, IOException {
PushOneCommit push = pushFactory.create(db, admin.getIdent(),

View File

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

View File

@@ -14,26 +14,19 @@
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.project.Util.grant;
import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.SshSession;
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.git.MetaDataUpdate;
import com.google.gerrit.server.git.ProjectConfig;
import com.google.gerrit.server.project.ProjectCache;
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.junit.Before;
import org.junit.Test;
@@ -42,9 +35,6 @@ import java.io.IOException;
public class DraftChangeBlockedIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private ProjectCache projectCache;
@@ -54,27 +44,13 @@ public class DraftChangeBlockedIT extends AbstractDaemonTest {
@Inject
private MetaDataUpdate.Server metaDataUpdateFactory;
@Inject
private PushOneCommit.Factory pushFactory;
private Project.NameKey project;
private Git git;
private ReviewDb db;
@Before
public void setUp() throws Exception {
ProjectConfig cfg = projectCache.checkedGet(allProjects).getConfig();
grant(cfg, Permission.PUSH, ANONYMOUS_USERS,
"refs/drafts/*").setBlock();
saveProjectConfig(cfg);
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();
projectCache.evict(cfg.getProject());
}
@Test

View File

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

View File

@@ -14,58 +14,23 @@
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.assertNull;
import static org.junit.Assert.assertTrue;
import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.PushOneCommit;
import com.google.gerrit.acceptance.PushOneCommit.Result;
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.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
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.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
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
public void starredChangeState() throws GitAPIException, IOException,
OrmException {
@@ -93,9 +58,4 @@ public class StarredChangesIT extends AbstractDaemonTest {
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.InheritableBoolean;
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.change.ChangeJson.ChangeInfo;
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.gson.reflect.TypeToken;
import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.jcraft.jsch.JSchException;
@@ -67,9 +65,6 @@ import java.io.IOException;
public abstract class AbstractSubmit extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private GitRepositoryManager repoManager;
@@ -79,16 +74,10 @@ public abstract class AbstractSubmit extends AbstractDaemonTest {
@Inject
private ApprovalsUtil approvalsUtil;
@Inject
protected PushOneCommit.Factory pushFactory;
private Project.NameKey project;
private ReviewDb db;
@Before
public void setUp() throws Exception {
project = new Project.NameKey("p");
db = reviewDbProvider.open();
project = new Project.NameKey("p2");
}
@After

View File

@@ -14,32 +14,17 @@
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.assertNotNull;
import static org.junit.Assert.assertNull;
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.common.ChangeInfo;
import com.google.gerrit.extensions.common.ChangeMessageInfo;
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.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
@@ -47,69 +32,32 @@ import java.util.Iterator;
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
public void messagesNotReturnedByDefault() throws GitAPIException,
IOException, RestApiException {
String changeId = createChange();
public void messagesNotReturnedByDefault() throws Exception {
String changeId = createChange().getChangeId();
postMessage(changeId, "Some nits need to be fixed.");
ChangeInfo c = getChange("p~master~" + changeId);
ChangeInfo c = info(changeId);
assertNull(c.messages);
}
@Test
public void defaultMessage() throws GitAPIException, IOException,
RestApiException {
String changeId = createChange();
ChangeInfo c = getChangeAll("p~master~" + changeId);
String changeId = createChange().getChangeId();
ChangeInfo c = get(changeId);
assertNotNull(c.messages);
assertEquals(1, c.messages.size());
assertEquals("Uploaded patch set 1.", c.messages.iterator().next().message);
}
@Test
public void messagesReturnedInChronologicalOrder() throws GitAPIException,
IOException, RestApiException {
String changeId = createChange();
public void messagesReturnedInChronologicalOrder() throws Exception {
String changeId = createChange().getChangeId();
String firstMessage = "Some nits need to be fixed.";
postMessage(changeId, firstMessage);
String secondMessage = "I like this feature.";
postMessage(changeId, secondMessage);
ChangeInfo c = getChangeAll("p~master~" + changeId);
ChangeInfo c = get(changeId);
assertNotNull(c.messages);
assertEquals(3, c.messages.size());
Iterator<ChangeMessageInfo> it = c.messages.iterator();
@@ -118,30 +66,13 @@ public class ChangeMessagesIT extends AbstractDaemonTest {
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) {
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();
in.message = msg;
adminSession.post("/changes/" + changeId + "/revisions/1/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();
gApi.changes().id(changeId).current().review(in);
}
}

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.PermissionRule;
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.ProjectConfig;
import com.google.gerrit.server.group.SystemGroupBackend;
import com.google.gerrit.server.project.ProjectCache;
import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.jcraft.jsch.JSchException;
import org.apache.http.HttpStatus;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
public class ChangeOwnerIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private MetaDataUpdate.Server metaDataUpdateFactory;
@Inject
private ProjectCache projectCache;
@Inject
private PushOneCommit.Factory pushFactory;
private TestAccount owner;
private TestAccount dev;
private TestAccount user2;
private RestSession sessionOwner;
private RestSession sessionDev;
private Git git;
private ReviewDb db;
private Project.NameKey project;
@Before
public void setUp() throws Exception {
newProject();
owner = accounts.user();
sessionOwner = new RestSession(server, owner);
SshSession sshSession = new SshSession(server, owner);
initSsh(owner);
sessionOwner = new RestSession(server, user);
SshSession sshSession = new SshSession(server, user);
initSsh(user);
// need to initialize intern session
createProject(sshSession, "foo");
git = cloneProject(sshSession.getUrl() + "/" + project.get());
sshSession.close();
dev = accounts.user2();
sessionDev = new RestSession(server, dev);
db = reviewDbProvider.open();
}
@After
public void cleanup() {
db.close();
user2 = accounts.user2();
sessionDev = new RestSession(server, user2);
}
@Test
public void testChangeOwner_OwnerACLNotGranted() throws GitAPIException,
IOException, OrmException, ConfigInvalidException {
approve(sessionOwner, createChange(), HttpStatus.SC_FORBIDDEN);
approve(sessionOwner, createMyChange(), HttpStatus.SC_FORBIDDEN);
}
@Test
public void testChangeOwner_OwnerACLGranted() throws GitAPIException,
IOException, OrmException, ConfigInvalidException {
grantApproveToChangeOwner();
approve(sessionOwner, createChange(), HttpStatus.SC_OK);
approve(sessionOwner, createMyChange(), HttpStatus.SC_OK);
}
@Test
public void testChangeOwner_NotOwnerACLGranted() throws GitAPIException,
IOException, OrmException, ConfigInvalidException {
grantApproveToChangeOwner();
approve(sessionDev, createChange(), HttpStatus.SC_FORBIDDEN);
approve(sessionDev, createMyChange(), HttpStatus.SC_FORBIDDEN);
}
private void approve(RestSession s, String changeId, int expected)
@@ -142,17 +116,9 @@ public class ChangeOwnerIT extends AbstractDaemonTest {
projectCache.evict(config.getProject());
}
private String createChange() throws GitAPIException,
private String createMyChange() throws GitAPIException,
IOException {
PushOneCommit push = pushFactory.create(db, owner.getIdent());
PushOneCommit push = pushFactory.create(db, user.getIdent());
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;
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.assertTrue;
@@ -23,23 +22,16 @@ import com.google.common.base.Function;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.GitUtil;
import com.google.gerrit.acceptance.PushOneCommit;
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.gson.reflect.TypeToken;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.jcraft.jsch.JSchException;
import org.apache.http.HttpStatus;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
@@ -47,27 +39,11 @@ import java.util.Set;
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;
@Before
public void setUp() throws Exception {
project = new Project.NameKey("p");
db = reviewDbProvider.open();
}
@Test
public void noConflictingChanges() throws JSchException, IOException,
GitAPIException {
Git git = createProject();
PushOneCommit.Result change = createChange(git, true);
createChange(git, false);
@@ -78,7 +54,6 @@ public class ConflictsOperatorIT extends AbstractDaemonTest {
@Test
public void conflictingChanges() throws JSchException, IOException,
GitAPIException {
Git git = createProject();
PushOneCommit.Result change = createChange(git, true);
PushOneCommit.Result conflictingChange1 = createChange(git, true);
PushOneCommit.Result conflictingChange2 = createChange(git, true);
@@ -88,17 +63,6 @@ public class ConflictsOperatorIT extends AbstractDaemonTest {
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)
throws GitAPIException, IOException {
checkout(git, "origin/master");

View File

@@ -14,8 +14,6 @@
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 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.RestResponse;
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.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.SchemaFactory;
import com.google.inject.Inject;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
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
public void deleteChange() throws GitAPIException,
IOException {
String changeId = createChange();
ChangeInfo c = getChange(changeId);
assertEquals("p~master~" + changeId, c.id);
assertEquals(Change.Status.NEW, c.status);
IOException, RestApiException {
String changeId = createChange().getChangeId();
String triplet = "p~master~" + changeId;
ChangeInfo c = get(triplet);
assertEquals(triplet, c.id);
assertEquals(ChangeStatus.NEW, c.status);
RestResponse r = deleteChange(changeId, adminSession);
assertEquals("Change is not a draft", r.getEntityContent());
assertEquals(409, r.getStatusCode());
@@ -81,45 +50,41 @@ public class DeleteDraftChangeIT extends AbstractDaemonTest {
@Test
public void deleteDraftChange() throws GitAPIException,
IOException, OrmException {
IOException, RestApiException, OrmException {
String changeId = createDraftChange();
ChangeInfo c = getChange(changeId);
assertEquals("p~master~" + changeId, c.id);
assertEquals(Change.Status.DRAFT, c.status);
String triplet = "p~master~" + changeId;
ChangeInfo c = get(triplet);
assertEquals(triplet, c.id);
assertEquals(ChangeStatus.DRAFT, c.status);
RestResponse r = deleteChange(changeId, adminSession);
assertEquals(204, r.getStatusCode());
}
@Test
public void publishDraftChange() throws GitAPIException,
IOException {
IOException, RestApiException {
String changeId = createDraftChange();
ChangeInfo c = getChange(changeId);
assertEquals("p~master~" + changeId, c.id);
assertEquals(Change.Status.DRAFT, c.status);
String triplet = "p~master~" + changeId;
ChangeInfo c = get(triplet);
assertEquals(triplet, c.id);
assertEquals(ChangeStatus.DRAFT, c.status);
RestResponse r = publishChange(changeId);
assertEquals(204, r.getStatusCode());
c = getChange(changeId);
assertEquals(Change.Status.NEW, c.status);
c = get(triplet);
assertEquals(ChangeStatus.NEW, c.status);
}
@Test
public void publishDraftPatchSet() throws GitAPIException,
IOException, OrmException {
IOException, OrmException, RestApiException {
String changeId = createDraftChange();
ChangeInfo c = getChange(changeId);
assertEquals("p~master~" + changeId, c.id);
assertEquals(Change.Status.DRAFT, c.status);
String triplet = "p~master~" + changeId;
ChangeInfo c = get(triplet);
assertEquals(triplet, c.id);
assertEquals(ChangeStatus.DRAFT, c.status);
RestResponse r = publishPatchSet(changeId);
assertEquals(204, r.getStatusCode());
c = getChange(changeId);
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();
assertEquals(ChangeStatus.NEW, get(triplet).status);
}
private String createDraftChange() throws GitAPIException, IOException {

View File

@@ -14,8 +14,6 @@
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 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.RestResponse;
import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.common.ChangeStatus;
import com.google.gerrit.reviewdb.client.Change;
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.SchemaFactory;
import com.google.inject.Inject;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
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
public void deletePatchSet() throws GitAPIException,
IOException, OrmException {
String changeId = createChangeWith2PS("refs/for/master");
public void deletePatchSet() throws Exception {
String changeId = createChange().getChangeId();
PatchSet ps = getCurrentPatchSet(changeId);
ChangeInfo c = getChange(changeId);
assertEquals("p~master~" + changeId, c.id);
assertEquals(Change.Status.NEW, c.status);
String triplet = "p~master~" + changeId;
ChangeInfo c = get(triplet);
assertEquals(triplet, c.id);
assertEquals(ChangeStatus.NEW, c.status);
RestResponse r = deletePatchSet(changeId, ps, adminSession);
assertEquals("Patch set is not a draft.", r.getEntityContent());
assertEquals(409, r.getStatusCode());
}
@Test
public void deleteDraftPatchSetNoACL() throws GitAPIException,
IOException, OrmException {
String changeId = createChangeWith2PS("refs/drafts/master");
public void deleteDraftPatchSetNoACL() throws Exception {
String changeId = createDraftChangeWith2PS();
PatchSet ps = getCurrentPatchSet(changeId);
ChangeInfo c = getChange(changeId);
assertEquals("p~master~" + changeId, c.id);
assertEquals(Change.Status.DRAFT, c.status);
String triplet = "p~master~" + changeId;
ChangeInfo c = get(triplet);
assertEquals(triplet, c.id);
assertEquals(ChangeStatus.DRAFT, c.status);
RestResponse r = deletePatchSet(changeId, ps, userSession);
assertEquals("Not found", r.getEntityContent());
assertEquals(404, r.getStatusCode());
}
@Test
public void deleteDraftPatchSetAndChange() throws GitAPIException,
IOException, OrmException {
String changeId = createChangeWith2PS("refs/drafts/master");
public void deleteDraftPatchSetAndChange() throws Exception {
String changeId = createDraftChangeWith2PS();
PatchSet ps = getCurrentPatchSet(changeId);
ChangeInfo c = getChange(changeId);
assertEquals("p~master~" + changeId, c.id);
assertEquals(Change.Status.DRAFT, c.status);
String triplet = "p~master~" + changeId;
ChangeInfo c = get(triplet);
assertEquals(triplet, c.id);
assertEquals(ChangeStatus.DRAFT, c.status);
RestResponse r = deletePatchSet(changeId, ps, adminSession);
assertEquals(204, r.getStatusCode());
Change change = Iterables.getOnlyElement(db.changes().byKey(
@@ -121,13 +82,13 @@ public class DeleteDraftPatchSetIT extends AbstractDaemonTest {
.toList().size());
}
private String createChangeWith2PS(String ref) throws GitAPIException,
private String createDraftChangeWith2PS() throws GitAPIException,
IOException {
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,
"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 {

View File

@@ -14,8 +14,6 @@
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.CURRENT_REVISION;
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.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.PushOneCommit;
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.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.google.gerrit.extensions.common.ChangeInfo;
import org.eclipse.jgit.api.Git;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -41,26 +32,11 @@ import java.util.List;
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 List<PushOneCommit.Result> results;
@Before
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.add(push("file contents", null));
changeId = results.get(0).getChangeId();
@@ -79,21 +55,16 @@ public class ListChangesOptionsIT extends AbstractDaemonTest {
return r;
}
@After
public void cleanup() {
db.close();
}
@Test
public void noRevisionOptions() throws Exception {
ChangeInfo c = getChange(changeId);
ChangeInfo c = info(changeId);
assertNull(c.currentRevision);
assertNull(c.revisions);
}
@Test
public void currentRevision() throws Exception {
ChangeInfo c = getChange(changeId, CURRENT_REVISION);
ChangeInfo c = get(changeId, CURRENT_REVISION);
assertEquals(commitId(2), c.currentRevision);
assertEquals(ImmutableSet.of(commitId(2)), c.revisions.keySet());
assertEquals(3, c.revisions.get(commitId(2))._number);
@@ -101,7 +72,7 @@ public class ListChangesOptionsIT extends AbstractDaemonTest {
@Test
public void allRevisions() throws Exception {
ChangeInfo c = getChange(changeId, ALL_REVISIONS);
ChangeInfo c = get(changeId, ALL_REVISIONS);
assertEquals(commitId(2), c.currentRevision);
assertEquals(ImmutableSet.of(commitId(0), commitId(1), commitId(2)),
c.revisions.keySet());

View File

@@ -14,26 +14,15 @@
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 com.google.gerrit.acceptance.AbstractDaemonTest;
import com.google.gerrit.acceptance.GerritConfig;
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.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.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -42,16 +31,6 @@ import java.util.List;
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
public void setUp() throws Exception {
group("users1");
@@ -61,25 +40,13 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
accounts.create("user1", "user1@example.com", "User1", "users1");
accounts.create("user2", "user2@example.com", "User2", "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
@GerritConfig(name = "suggest.accounts", value = "false")
public void suggestReviewersNoResult1() throws GitAPIException, IOException,
Exception {
String changeId = createChange(admin);
String changeId = createChange().getChangeId();
List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, "u", 6);
assertEquals(reviewers.size(), 0);
}
@@ -92,7 +59,7 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
})
public void suggestReviewersNoResult2() throws GitAPIException, IOException,
Exception {
String changeId = createChange(admin);
String changeId = createChange().getChangeId();
List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, "u", 6);
assertEquals(reviewers.size(), 0);
}
@@ -101,7 +68,7 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
@GerritConfig(name = "suggest.from", value = "2")
public void suggestReviewersNoResult3() throws GitAPIException, IOException,
Exception {
String changeId = createChange(admin);
String changeId = createChange().getChangeId();
List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, "u", 6);
assertEquals(reviewers.size(), 0);
}
@@ -109,7 +76,7 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
@Test
public void suggestReviewersChange() throws GitAPIException,
IOException, Exception {
String changeId = createChange(admin);
String changeId = createChange().getChangeId();
List<SuggestedReviewerInfo> reviewers = suggestReviewers(changeId, "u", 6);
assertEquals(reviewers.size(), 6);
reviewers = suggestReviewers(changeId, "u", 5);
@@ -136,10 +103,4 @@ public class SuggestReviewersIT extends AbstractDaemonTest {
private void group(String name) throws IOException {
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
public void addRemoveMember() throws Exception {
TestAccount u = accounts.create("user", "user@example.com", "Full Name");
RestResponse r = PUT("/groups/Administrators/members/user");
assertEquals(HttpStatus.SC_CREATED, r.getStatusCode());
AccountInfo ai = newGson().fromJson(r.getReader(), AccountInfo.class);
assertAccountInfo(u, ai);
assertMembers("Administrators", admin, u);
assertAccountInfo(user, ai);
assertMembers("Administrators", admin, user);
r.consume();
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.RestResponse;
import com.google.gerrit.acceptance.RestSession;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.reviewdb.client.AccountGroup;
import com.google.gerrit.server.account.GroupCache;
import com.google.gerrit.server.group.CreateGroup;
@@ -71,7 +70,6 @@ public class CreateGroupIT extends AbstractDaemonTest {
@Test
public void testCreateGroupWithoutCapability_Forbidden() throws OrmException,
JSchException, IOException {
TestAccount user = accounts.create("user", "user@example.com", "User");
RestResponse r = (new RestSession(server, user)).put("/groups/newGroup");
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.SshSession;
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.gson.reflect.TypeToken;
import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.jcraft.jsch.JSchException;
@@ -46,9 +43,6 @@ import java.util.Set;
*/
public class DefaultGroupsIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Test
public void defaultGroupsCreated_ssh() throws JSchException, IOException {
SshSession session = new SshSession(server, admin);
@@ -72,16 +66,11 @@ public class DefaultGroupsIT extends AbstractDaemonTest {
@Test
public void defaultGroupsCreated_internals() throws OrmException {
ReviewDb db = reviewDbProvider.open();
try {
Set<String> names = Sets.newHashSet();
for (AccountGroup g : db.accountGroups().all()) {
names.add(g.getName());
}
assertTrue(names.contains("Administrators"));
assertTrue(names.contains("Non-Interactive Users"));
} finally {
db.close();
Set<String> names = Sets.newHashSet();
for (AccountGroup g : db.accountGroups().all()) {
names.add(g.getName());
}
assertTrue(names.contains("Administrators"));
assertTrue(names.contains("Non-Interactive Users"));
}
}

View File

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

View File

@@ -14,19 +14,14 @@
package com.google.gerrit.acceptance.rest.project;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static org.junit.Assert.assertEquals;
import com.google.gerrit.acceptance.AbstractDaemonTest;
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.Permission;
import com.google.gerrit.common.data.PermissionRule;
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.git.MetaDataUpdate;
import com.google.gerrit.server.git.ProjectConfig;
@@ -51,25 +46,11 @@ public class CreateBranchIT extends AbstractDaemonTest {
@Inject
private AllProjectsNameProvider allProjects;
private RestSession userSession;
private Project.NameKey project;
private Branch.NameKey branch;
@Before
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");
SshSession sshSession = new SshSession(server, admin);
try {
createProject(sshSession, project.get(), null, true);
} finally {
sshSession.close();
}
}
@Test

View File

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

View File

@@ -14,19 +14,14 @@
package com.google.gerrit.acceptance.rest.project;
import static com.google.gerrit.acceptance.GitUtil.createProject;
import static org.junit.Assert.assertEquals;
import com.google.gerrit.acceptance.AbstractDaemonTest;
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.Permission;
import com.google.gerrit.common.data.PermissionRule;
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.git.MetaDataUpdate;
import com.google.gerrit.server.git.ProjectConfig;
@@ -52,26 +47,11 @@ public class DeleteBranchIT extends AbstractDaemonTest {
@Inject
private AllProjectsNameProvider allProjects;
private RestSession userSession;
private Project.NameKey project;
private Branch.NameKey branch;
@Before
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");
SshSession sshSession = new SshSession(server, admin);
try {
createProject(sshSession, project.get(), null, true);
} finally {
sshSession.close();
}
adminSession.put("/projects/" + project.get()
+ "/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.GcAssert;
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.reviewdb.client.Project;
import com.google.gerrit.server.config.AllProjectsName;
@@ -49,14 +47,11 @@ public class GarbageCollectionIT extends AbstractDaemonTest {
@Before
public void setUp() throws Exception {
SshSession sshSession = new SshSession(server, admin);
project1 = new Project.NameKey("p1");
createProject(sshSession, project1.get());
project2 = new Project.NameKey("p2");
createProject(sshSession, project2.get());
sshSession.close();
}
@Test
@@ -65,10 +60,11 @@ public class GarbageCollectionIT extends AbstractDaemonTest {
}
@Test
public void testGcNotAllowed_Forbidden() throws IOException, OrmException, JSchException {
public void testGcNotAllowed_Forbidden() throws IOException, OrmException,
JSchException {
assertEquals(HttpStatus.SC_FORBIDDEN,
new RestSession(server, accounts.create("user", "user@example.com", "User"))
.post("/projects/" + allProjects.get() + "/gc").getStatusCode());
userSession.post("/projects/" + allProjects.get() + "/gc")
.getStatusCode());
}
@Test

View File

@@ -14,7 +14,6 @@
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.rest.project.BranchAssert.assertBranches;
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.PushOneCommit;
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.Permission;
import com.google.gerrit.common.data.PermissionRule;
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.ProjectConfig;
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.gson.reflect.TypeToken;
import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.Inject;
import com.jcraft.jsch.JSchException;
import org.apache.http.HttpStatus;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
@@ -63,32 +55,6 @@ public class ListBranchesIT extends AbstractDaemonTest {
@Inject
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
public void listBranchesOfNonExistingProject_NotFound() throws IOException {
assertEquals(HttpStatus.SC_NOT_FOUND,
@@ -99,9 +65,8 @@ public class ListBranchesIT extends AbstractDaemonTest {
public void listBranchesOfNonVisibleProject_NotFound() throws IOException,
OrmException, JSchException, ConfigInvalidException {
blockRead(project, "refs/*");
RestSession session = new RestSession(server, accounts.user());
assertEquals(HttpStatus.SC_NOT_FOUND,
session.get("/projects/" + project.get() + "/branches").getStatusCode());
userSession.get("/projects/" + project.get() + "/branches").getStatusCode());
}
@Test
@@ -145,12 +110,10 @@ public class ListBranchesIT extends AbstractDaemonTest {
public void listBranchesSomeHidden() throws IOException, GitAPIException,
ConfigInvalidException, OrmException, JSchException {
blockRead(project, "refs/heads/dev");
RestSession session =
new RestSession(server, accounts.create("user", "user@example.com", "User"));
pushTo("refs/heads/master");
String masterCommit = git.getRepository().getRef("master").getTarget().getObjectId().getName();
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
List<BranchInfo> expected = Lists.asList(
new BranchInfo("HEAD", "master", false),
@@ -164,12 +127,10 @@ public class ListBranchesIT extends AbstractDaemonTest {
public void listBranchesHeadHidden() throws IOException, GitAPIException,
ConfigInvalidException, OrmException, JSchException {
blockRead(project, "refs/heads/master");
RestSession session =
new RestSession(server, accounts.create("user", "user@example.com", "User"));
pushTo("refs/heads/master");
pushTo("refs/heads/dev");
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
assertBranches(Collections.singletonList(new BranchInfo("refs/heads/dev",
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.RestResponse;
import com.google.gerrit.acceptance.SshSession;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.server.config.AllProjectsName;
import com.google.gerrit.server.project.ProjectJson.ProjectInfo;
@@ -52,27 +51,27 @@ public class ListChildProjectsIT extends AbstractDaemonTest {
public void listNoChildren() throws IOException {
RestResponse r = GET("/projects/" + allProjects.get() + "/children/");
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
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");
createProject(sshSession, child1.get());
Project.NameKey child2 = new Project.NameKey("p2");
createProject(sshSession, child2.get());
createProject(sshSession, "p1.1", child1);
sshSession.close();
RestResponse r = GET("/projects/" + allProjects.get() + "/children/");
assertEquals(HttpStatus.SC_OK, r.getStatusCode());
assertProjects(Arrays.asList(child1, child2), toProjectInfoList(r));
assertProjects(Arrays.asList(existingProject, child1, child2), toProjectInfoList(r));
}
@Test
public void listChildrenRecursively() throws IOException, JSchException {
SshSession sshSession = new SshSession(server, admin);
Project.NameKey child1 = new Project.NameKey("p1");
createProject(sshSession, child1.get());
createProject(sshSession, "p2");
@@ -84,12 +83,11 @@ public class ListChildProjectsIT extends AbstractDaemonTest {
createProject(sshSession, child1_1_1.get(), child1_1);
Project.NameKey child1_1_1_1 = new Project.NameKey("p1.1.1.1");
createProject(sshSession, child1_1_1_1.get(), child1_1_1);
sshSession.close();
RestResponse r = GET("/projects/" + child1.get() + "/children/?recursive");
assertEquals(HttpStatus.SC_OK, r.getStatusCode());
assertProjects(Arrays.asList(child1_1, child1_2, child1_1_1, child1_1_1_1),
toProjectInfoList(r));
assertProjects(Arrays.asList(child1_1, child1_2,
child1_1_1, child1_1_1_1), toProjectInfoList(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.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.server.config.AllProjectsNameProvider;
import com.google.gerrit.server.project.SetParent;
@@ -30,8 +27,6 @@ import com.google.inject.Inject;
import com.jcraft.jsch.JSchException;
import org.apache.http.HttpStatus;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
@@ -41,32 +36,12 @@ public class SetParentIT extends AbstractDaemonTest {
@Inject
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
public void setParent_Forbidden() throws IOException, JSchException {
String parent = "parent";
createProject(sshSession, parent, null, true);
RestResponse r =
userSession.put("/projects/" + project + "/parent",
userSession.put("/projects/" + project.get() + "/parent",
newParentInput(parent));
assertEquals(HttpStatus.SC_FORBIDDEN, r.getStatusCode());
r.consume();
@@ -77,12 +52,12 @@ public class SetParentIT extends AbstractDaemonTest {
String parent = "parent";
createProject(sshSession, parent, null, true);
RestResponse r =
adminSession.put("/projects/" + project + "/parent",
adminSession.put("/projects/" + project.get() + "/parent",
newParentInput(parent));
assertEquals(HttpStatus.SC_OK, r.getStatusCode());
r.consume();
r = adminSession.get("/projects/" + project + "/parent");
r = adminSession.get("/projects/" + project.get() + "/parent");
assertEquals(HttpStatus.SC_OK, r.getStatusCode());
String newParent =
newGson().fromJson(r.getReader(), String.class);
@@ -94,7 +69,7 @@ public class SetParentIT extends AbstractDaemonTest {
public void setParentForAllProjects_Conflict() throws IOException {
RestResponse r =
adminSession.put("/projects/" + allProjects.get() + "/parent",
newParentInput(project));
newParentInput(project.get()));
assertEquals(HttpStatus.SC_CONFLICT, r.getStatusCode());
r.consume();
}
@@ -102,21 +77,21 @@ public class SetParentIT extends AbstractDaemonTest {
@Test
public void setInvalidParent_Conflict() throws IOException, JSchException {
RestResponse r =
adminSession.put("/projects/" + project + "/parent",
newParentInput(project));
adminSession.put("/projects/" + project.get() + "/parent",
newParentInput(project.get()));
assertEquals(HttpStatus.SC_CONFLICT, r.getStatusCode());
r.consume();
String child = "child";
createProject(sshSession, child, new Project.NameKey(project), true);
r = adminSession.put("/projects/" + project + "/parent",
createProject(sshSession, child, project, true);
r = adminSession.put("/projects/" + project.get() + "/parent",
newParentInput(child));
assertEquals(HttpStatus.SC_CONFLICT, r.getStatusCode());
r.consume();
String grandchild = "grandchild";
createProject(sshSession, grandchild, new Project.NameKey(child), true);
r = adminSession.put("/projects/" + project + "/parent",
r = adminSession.put("/projects/" + project.get() + "/parent",
newParentInput(grandchild));
assertEquals(HttpStatus.SC_CONFLICT, r.getStatusCode());
r.consume();
@@ -125,7 +100,7 @@ public class SetParentIT extends AbstractDaemonTest {
@Test
public void setNonExistingParent_UnprocessibleEntity() throws IOException {
RestResponse r =
adminSession.put("/projects/" + project + "/parent",
adminSession.put("/projects/" + project.get() + "/parent",
newParentInput("non-existing"));
assertEquals(HttpStatus.SC_UNPROCESSABLE_ENTITY, r.getStatusCode());
r.consume();

View File

@@ -15,9 +15,7 @@
package com.google.gerrit.acceptance.server.change;
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.createProject;
import static com.google.gerrit.acceptance.GitUtil.pushHead;
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.GitUtil.Commit;
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.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.RelatedInfo;
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.errors.GitAPIException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
@@ -49,30 +39,6 @@ import java.util.List;
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
public void getRelatedNoResult() throws GitAPIException,
IOException, Exception {

View File

@@ -15,64 +15,32 @@
package com.google.gerrit.acceptance.server.project;
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.server.group.SystemGroupBackend.ANONYMOUS_USERS;
import static com.google.gerrit.server.project.Util.grant;
import static org.junit.Assert.assertEquals;
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.acceptance.TestAccount;
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.RevisionApi;
import com.google.gerrit.reviewdb.client.AccountGroup;
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.change.ChangeJson.ChangeInfo;
import com.google.gerrit.server.change.ChangeJson.LabelInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.common.LabelInfo;
import com.google.gerrit.server.config.AllProjectsName;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.MetaDataUpdate;
import com.google.gerrit.server.git.ProjectConfig;
import com.google.gerrit.server.group.SystemGroupBackend;
import com.google.gerrit.server.project.ProjectCache;
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.lib.Repository;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
public class LabelTypeIT extends AbstractDaemonTest {
@Inject
private SchemaFactory<ReviewDb> reviewDbProvider;
@Inject
private GitRepositoryManager repoManager;
@Inject
private GerritApi gApi;
@Inject
private AcceptanceTestRequestScope atrScope;
@Inject
private IdentifiedUser.GenericFactory identifiedUserFactory;
@Inject
private ProjectCache projectCache;
@@ -82,36 +50,11 @@ public class LabelTypeIT extends AbstractDaemonTest {
@Inject
private MetaDataUpdate.Server metaDataUpdateFactory;
@Inject
private PushOneCommit.Factory pushFactory;
private Project.NameKey project;
private LabelType codeReview;
private TestAccount user;
private Git git;
private ReviewDb db;
@Before
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();
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.setCopyMinScore(false);
codeReview.setCopyMaxScore(false);
@@ -120,120 +63,69 @@ public class LabelTypeIT extends AbstractDaemonTest {
saveProjectConfig(cfg);
}
@After
public void cleanup() {
db.close();
}
@Test
public void noCopyMinScoreOnRework() throws Exception {
String subject = "test commit";
String file = "a.txt";
PushOneCommit push = pushFactory.create(db, user.getIdent(),
subject, file, "first contents");
PushOneCommit.Result r = push.to(git, "refs/for/master");
PushOneCommit.Result r = createChange();
revision(r).review(ReviewInput.reject());
assertApproval(r, -2);
push = pushFactory.create(db, user.getIdent(),
subject, file, "second contents", r.getChangeId());
r = push.to(git, "refs/for/master");
r = ammendChange(r.getChangeId());
assertApproval(r, 0);
}
@Test
public void copyMinScoreOnRework() throws Exception {
String subject = "test commit";
String file = "a.txt";
codeReview.setCopyMinScore(true);
saveLabelConfig();
PushOneCommit push = pushFactory.create(db, user.getIdent(),
subject, file, "first contents");
PushOneCommit.Result r = push.to(git, "refs/for/master");
PushOneCommit.Result r = createChange();
revision(r).review(ReviewInput.reject());
assertApproval(r, -2);
push = pushFactory.create(db, user.getIdent(),
subject, file, "second contents", r.getChangeId());
r = push.to(git, "refs/for/master");
r = ammendChange(r.getChangeId());
assertApproval(r, -2);
}
@Test
public void noCopyMaxScoreOnRework() throws Exception {
String subject = "test commit";
String file = "a.txt";
PushOneCommit push = pushFactory.create(db, user.getIdent(),
subject, file, "first contents");
PushOneCommit.Result r = push.to(git, "refs/for/master");
PushOneCommit.Result r = createChange();
revision(r).review(ReviewInput.approve());
assertApproval(r, 2);
push = pushFactory.create(db, user.getIdent(),
subject, file, "second contents", r.getChangeId());
r = push.to(git, "refs/for/master");
r = ammendChange(r.getChangeId());
assertApproval(r, 0);
}
@Test
public void copyMaxScoreOnRework() throws Exception {
String subject = "test commit";
String file = "a.txt";
codeReview.setCopyMaxScore(true);
saveLabelConfig();
PushOneCommit push = pushFactory.create(db, user.getIdent(),
subject, file, "first contents");
PushOneCommit.Result r = push.to(git, "refs/for/master");
PushOneCommit.Result r = createChange();
revision(r).review(ReviewInput.approve());
assertApproval(r, 2);
push = pushFactory.create(db, user.getIdent(),
subject, file, "second contents", r.getChangeId());
r = push.to(git, "refs/for/master");
r = ammendChange(r.getChangeId());
assertApproval(r, 2);
}
@Test
public void noCopyNonMaxScoreOnRework() throws Exception {
String subject = "test commit";
String file = "a.txt";
codeReview.setCopyMinScore(true);
codeReview.setCopyMaxScore(true);
saveLabelConfig();
PushOneCommit push = pushFactory.create(db, user.getIdent(),
subject, file, "first contents");
PushOneCommit.Result r = push.to(git, "refs/for/master");
PushOneCommit.Result r = createChange();
revision(r).review(ReviewInput.recommend());
assertApproval(r, 1);
push = pushFactory.create(db, user.getIdent(),
subject, file, "second contents", r.getChangeId());
r = push.to(git, "refs/for/master");
r = ammendChange(r.getChangeId());
assertApproval(r, 0);
}
@Test
public void noCopyNonMinScoreOnRework() throws Exception {
String subject = "test commit";
String file = "a.txt";
codeReview.setCopyMinScore(true);
codeReview.setCopyMaxScore(true);
saveLabelConfig();
PushOneCommit push = pushFactory.create(db, user.getIdent(),
subject, file, "first contents");
PushOneCommit.Result r = push.to(git, "refs/for/master");
PushOneCommit.Result r = createChange();
revision(r).review(ReviewInput.dislike());
assertApproval(r, -1);
push = pushFactory.create(db, user.getIdent(),
subject, file, "second contents", r.getChangeId());
r = push.to(git, "refs/for/master");
r = ammendChange(r.getChangeId());
assertApproval(r, 0);
}
@@ -242,13 +134,13 @@ public class LabelTypeIT extends AbstractDaemonTest {
String file = "a.txt";
String contents = "contents";
PushOneCommit push = pushFactory.create(db, user.getIdent(),
PushOneCommit push = pushFactory.create(db, admin.getIdent(),
"first subject", file, contents);
PushOneCommit.Result r = push.to(git, "refs/for/master");
revision(r).review(ReviewInput.recommend());
assertApproval(r, 1);
push = pushFactory.create(db, user.getIdent(),
push = pushFactory.create(db, admin.getIdent(),
"second subject", file, contents, r.getChangeId());
r = push.to(git, "refs/for/master");
assertApproval(r, 0);
@@ -261,13 +153,13 @@ public class LabelTypeIT extends AbstractDaemonTest {
codeReview.setCopyAllScoresIfNoCodeChange(true);
saveLabelConfig();
PushOneCommit push = pushFactory.create(db, user.getIdent(),
PushOneCommit push = pushFactory.create(db, admin.getIdent(),
"first subject", file, contents);
PushOneCommit.Result r = push.to(git, "refs/for/master");
revision(r).review(ReviewInput.recommend());
assertApproval(r, 1);
push = pushFactory.create(db, user.getIdent(),
push = pushFactory.create(db, admin.getIdent(),
"second subject", file, contents, r.getChangeId());
r = push.to(git, "refs/for/master");
assertApproval(r, 1);
@@ -279,17 +171,17 @@ public class LabelTypeIT extends AbstractDaemonTest {
String file = "a.txt";
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");
merge(r1);
push = pushFactory.create(db, user.getIdent(),
push = pushFactory.create(db, admin.getIdent(),
"non-conflicting", "b.txt", "other contents");
PushOneCommit.Result r2 = push.to(git, "refs/for/master");
merge(r2);
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");
revision(r3).review(ReviewInput.recommend());
assertApproval(r3, 1);
@@ -306,17 +198,17 @@ public class LabelTypeIT extends AbstractDaemonTest {
codeReview.setCopyAllScoresOnTrivialRebase(true);
saveLabelConfig();
PushOneCommit push = pushFactory.create(db, user.getIdent());
PushOneCommit push = pushFactory.create(db, admin.getIdent());
PushOneCommit.Result r1 = push.to(git, "refs/for/master");
merge(r1);
push = pushFactory.create(db, user.getIdent(),
push = pushFactory.create(db, admin.getIdent(),
"non-conflicting", "b.txt", "other contents");
PushOneCommit.Result r2 = push.to(git, "refs/for/master");
merge(r2);
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");
revision(r3).review(ReviewInput.recommend());
assertApproval(r3, 1);
@@ -344,7 +236,7 @@ public class LabelTypeIT extends AbstractDaemonTest {
private RevisionApi revision(PushOneCommit.Result r) throws Exception {
return gApi.changes()
.id(r.getChangeId())
.revision(r.getCommit().name());
.current();
}
private void merge(PushOneCommit.Result r) throws Exception {
@@ -367,13 +259,10 @@ public class LabelTypeIT extends AbstractDaemonTest {
throws Exception {
// Don't use asserts from PushOneCommit so we can test the round-trip
// 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("User", cr.all.get(0).name);
assertEquals("Administrator", cr.all.get(0).name);
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -55,15 +54,12 @@ public class GarbageCollectionIT extends AbstractDaemonTest {
@Inject
private GcAssert gcAssert;
private SshSession sshSession;
private Project.NameKey project1;
private Project.NameKey project2;
private Project.NameKey project3;
@Before
public void setUp() throws Exception {
sshSession = new SshSession(server, admin);
project1 = new Project.NameKey("p1");
createProject(sshSession, project1.get());
@@ -74,11 +70,6 @@ public class GarbageCollectionIT extends AbstractDaemonTest {
createProject(sshSession, project3.get());
}
@After
public void cleanup() {
sshSession.close();
}
@Test
@UseLocalDisk
public void testGc() throws JSchException, IOException {
@@ -103,7 +94,7 @@ public class GarbageCollectionIT extends AbstractDaemonTest {
@Test
public void testGcWithoutCapability_Error() throws IOException, OrmException,
JSchException {
SshSession s = new SshSession(server, accounts.create("user", "user@example.com", "User"));
SshSession s = new SshSession(server, user);
s.exec("gerrit gc --all");
assertError("Capability runGC is required to access this resource", s.getError());
s.close();