Merge "Move all CLA test code into AgreementsIT"
diff --git a/java/com/google/gerrit/acceptance/AbstractDaemonTest.java b/java/com/google/gerrit/acceptance/AbstractDaemonTest.java
index 0107bae..b7db6e8 100644
--- a/java/com/google/gerrit/acceptance/AbstractDaemonTest.java
+++ b/java/com/google/gerrit/acceptance/AbstractDaemonTest.java
@@ -38,10 +38,8 @@
import com.google.common.primitives.Chars;
import com.google.gerrit.acceptance.AcceptanceTestRequestScope.Context;
import com.google.gerrit.acceptance.testsuite.account.TestSshKeys;
-import com.google.gerrit.acceptance.testsuite.group.GroupOperations;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.AccessSection;
-import com.google.gerrit.common.data.ContributorAgreement;
import com.google.gerrit.common.data.GroupDescription;
import com.google.gerrit.common.data.GroupReference;
import com.google.gerrit.common.data.LabelFunction;
@@ -55,7 +53,6 @@
import com.google.gerrit.extensions.api.changes.ReviewInput;
import com.google.gerrit.extensions.api.changes.RevisionApi;
import com.google.gerrit.extensions.api.changes.SubmittedTogetherInfo;
-import com.google.gerrit.extensions.api.groups.GroupApi;
import com.google.gerrit.extensions.api.projects.BranchApi;
import com.google.gerrit.extensions.api.projects.BranchInput;
import com.google.gerrit.extensions.api.projects.ProjectInput;
@@ -264,7 +261,6 @@
@Inject protected ChangeNotes.Factory notesFactory;
@Inject protected BatchAbandon batchAbandon;
@Inject protected TestSshKeys sshKeys;
- @Inject protected GroupOperations groupOperations;
protected EventRecorder eventRecorder;
protected GerritServer server;
@@ -1000,15 +996,6 @@
}
}
- protected void setUseContributorAgreements(InheritableBoolean value) throws Exception {
- try (MetaDataUpdate md = metaDataUpdateFactory.create(project)) {
- ProjectConfig config = projectConfigFactory.read(md);
- config.getProject().setBooleanConfig(BooleanProjectConfig.USE_CONTRIBUTOR_AGREEMENTS, value);
- config.commit(md);
- projectCache.evict(config.getProject());
- }
- }
-
protected void setUseSignedOffBy(InheritableBoolean value) throws Exception {
try (MetaDataUpdate md = metaDataUpdateFactory.create(project)) {
ProjectConfig config = projectConfigFactory.read(md);
@@ -1229,36 +1216,6 @@
assertThat(replyTo.getString()).contains(email);
}
- protected ContributorAgreement configureContributorAgreement(boolean autoVerify)
- throws Exception {
- ContributorAgreement ca;
- String name = autoVerify ? "cla-test-group" : "cla-test-no-auto-verify-group";
- String g = groupOperations.newGroup().name(name).create().get();
- GroupApi groupApi = gApi.groups().id(g);
- groupApi.description("CLA test group");
- InternalGroup caGroup = group(new AccountGroup.UUID(groupApi.detail().id));
- GroupReference groupRef = new GroupReference(caGroup.getGroupUUID(), caGroup.getName());
- PermissionRule rule = new PermissionRule(groupRef);
- rule.setAction(PermissionRule.Action.ALLOW);
- if (autoVerify) {
- ca = new ContributorAgreement("cla-test");
- ca.setAutoVerify(groupRef);
- ca.setAccepted(ImmutableList.of(rule));
- } else {
- ca = new ContributorAgreement("cla-test-no-auto-verify");
- }
- ca.setDescription("description");
- ca.setAgreementUrl("agreement-url");
- ca.setAccepted(ImmutableList.of(rule));
- ca.setExcludeProjectsRegexes(ImmutableList.of("ExcludedProject"));
-
- try (ProjectConfigUpdate u = updateProject(allProjects)) {
- u.getConfig().replace(ca);
- u.save();
- return ca;
- }
- }
-
protected Map<Branch.NameKey, ObjectId> fetchFromSubmitPreview(String changeId) throws Exception {
try (BinaryResult result = gApi.changes().id(changeId).current().submitPreview()) {
return fetchFromBundles(result);
diff --git a/javatests/com/google/gerrit/acceptance/api/accounts/AgreementsIT.java b/javatests/com/google/gerrit/acceptance/api/accounts/AgreementsIT.java
index c939ac1..b4416302 100644
--- a/javatests/com/google/gerrit/acceptance/api/accounts/AgreementsIT.java
+++ b/javatests/com/google/gerrit/acceptance/api/accounts/AgreementsIT.java
@@ -16,13 +16,22 @@
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.TruthJUnit.assume;
+import static java.nio.charset.StandardCharsets.UTF_8;
import static java.util.concurrent.TimeUnit.SECONDS;
+import com.google.common.collect.ImmutableList;
import com.google.gerrit.acceptance.AbstractDaemonTest;
+import com.google.gerrit.acceptance.GerritConfig;
+import com.google.gerrit.acceptance.PushOneCommit;
+import com.google.gerrit.acceptance.testsuite.group.GroupOperations;
+import com.google.gerrit.common.RawInputUtil;
import com.google.gerrit.common.data.ContributorAgreement;
+import com.google.gerrit.common.data.GroupReference;
+import com.google.gerrit.common.data.PermissionRule;
import com.google.gerrit.extensions.api.changes.CherryPickInput;
import com.google.gerrit.extensions.api.changes.ReviewInput;
import com.google.gerrit.extensions.api.changes.SubmitInput;
+import com.google.gerrit.extensions.api.groups.GroupApi;
import com.google.gerrit.extensions.api.projects.BranchInfo;
import com.google.gerrit.extensions.api.projects.BranchInput;
import com.google.gerrit.extensions.client.InheritableBoolean;
@@ -34,8 +43,14 @@
import com.google.gerrit.extensions.restapi.BadRequestException;
import com.google.gerrit.extensions.restapi.MethodNotAllowedException;
import com.google.gerrit.extensions.restapi.UnprocessableEntityException;
+import com.google.gerrit.reviewdb.client.AccountGroup;
+import com.google.gerrit.reviewdb.client.BooleanProjectConfig;
+import com.google.gerrit.server.git.meta.MetaDataUpdate;
+import com.google.gerrit.server.group.InternalGroup;
+import com.google.gerrit.server.project.ProjectConfig;
import com.google.gerrit.testing.ConfigSuite;
import com.google.gerrit.testing.TestTimeUtil;
+import com.google.inject.Inject;
import java.util.List;
import org.eclipse.jgit.lib.Config;
import org.junit.AfterClass;
@@ -46,6 +61,46 @@
public class AgreementsIT extends AbstractDaemonTest {
private ContributorAgreement caAutoVerify;
private ContributorAgreement caNoAutoVerify;
+ @Inject private GroupOperations groupOperations;
+
+ protected void setUseContributorAgreements(InheritableBoolean value) throws Exception {
+ try (MetaDataUpdate md = metaDataUpdateFactory.create(project)) {
+ ProjectConfig config = projectConfigFactory.read(md);
+ config.getProject().setBooleanConfig(BooleanProjectConfig.USE_CONTRIBUTOR_AGREEMENTS, value);
+ config.commit(md);
+ projectCache.evict(config.getProject());
+ }
+ }
+
+ protected ContributorAgreement configureContributorAgreement(boolean autoVerify)
+ throws Exception {
+ ContributorAgreement ca;
+ String name = autoVerify ? "cla-test-group" : "cla-test-no-auto-verify-group";
+ AccountGroup.UUID g = groupOperations.newGroup().name(name).create();
+ GroupApi groupApi = gApi.groups().id(g.get());
+ groupApi.description("CLA test group");
+ InternalGroup caGroup = group(new AccountGroup.UUID(groupApi.detail().id));
+ GroupReference groupRef = new GroupReference(caGroup.getGroupUUID(), caGroup.getName());
+ PermissionRule rule = new PermissionRule(groupRef);
+ rule.setAction(PermissionRule.Action.ALLOW);
+ if (autoVerify) {
+ ca = new ContributorAgreement("cla-test");
+ ca.setAutoVerify(groupRef);
+ ca.setAccepted(ImmutableList.of(rule));
+ } else {
+ ca = new ContributorAgreement("cla-test-no-auto-verify");
+ }
+ ca.setDescription("description");
+ ca.setAgreementUrl("agreement-url");
+ ca.setAccepted(ImmutableList.of(rule));
+ ca.setExcludeProjectsRegexes(ImmutableList.of("ExcludedProject"));
+
+ try (ProjectConfigUpdate u = updateProject(allProjects)) {
+ u.getConfig().replace(ca);
+ u.save();
+ return ca;
+ }
+ }
@ConfigSuite.Config
public static Config enableAgreementsConfig() {
@@ -291,4 +346,33 @@
in.project = project.get();
return in;
}
+
+ @Test
+ @GerritConfig(name = "auth.contributorAgreements", value = "true")
+ public void anonymousAccessServerInfoEvenWithCLAs() throws Exception {
+ setApiUserAnonymous();
+ gApi.config().server().getInfo();
+ }
+
+ @Test
+ public void publishEditRestWithoutCLA() throws Exception {
+ String filename = "foo";
+ PushOneCommit push =
+ pushFactory.create(db, admin.getIdent(), testRepo, "subject1", filename, "contentold");
+ PushOneCommit.Result result = push.to("refs/for/master");
+ result.assertOkStatus();
+ String changeId = result.getChangeId();
+
+ gApi.changes().id(changeId).edit().create();
+ gApi.changes()
+ .id(changeId)
+ .edit()
+ .modifyFile(filename, RawInputUtil.create("newcontent".getBytes(UTF_8)));
+
+ String url = "/changes/" + changeId + "/edit:publish";
+ setUseContributorAgreements(InheritableBoolean.TRUE);
+ userRestSession.post(url).assertForbidden();
+ setUseContributorAgreements(InheritableBoolean.FALSE);
+ userRestSession.post(url).assertNoContent();
+ }
}
diff --git a/javatests/com/google/gerrit/acceptance/api/group/GroupsIT.java b/javatests/com/google/gerrit/acceptance/api/group/GroupsIT.java
index 4a4ee2a..db96ac1 100644
--- a/javatests/com/google/gerrit/acceptance/api/group/GroupsIT.java
+++ b/javatests/com/google/gerrit/acceptance/api/group/GroupsIT.java
@@ -39,6 +39,7 @@
import com.google.gerrit.acceptance.Sandboxed;
import com.google.gerrit.acceptance.TestAccount;
import com.google.gerrit.acceptance.testsuite.account.AccountOperations;
+import com.google.gerrit.acceptance.testsuite.group.GroupOperations;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.common.data.GlobalCapability;
import com.google.gerrit.common.data.GroupReference;
@@ -126,6 +127,7 @@
@Inject private DynamicSet<GroupIndexedListener> groupIndexedListeners;
@Inject private Sequences seq;
@Inject private AccountOperations accountOperations;
+ @Inject private GroupOperations groupOperations;
@Before
public void setTimeForTesting() {
diff --git a/javatests/com/google/gerrit/acceptance/edit/ChangeEditIT.java b/javatests/com/google/gerrit/acceptance/edit/ChangeEditIT.java
index 9ad14ee..96566f6 100644
--- a/javatests/com/google/gerrit/acceptance/edit/ChangeEditIT.java
+++ b/javatests/com/google/gerrit/acceptance/edit/ChangeEditIT.java
@@ -41,7 +41,6 @@
import com.google.gerrit.extensions.api.changes.NotifyHandling;
import com.google.gerrit.extensions.api.changes.PublishChangeEditInput;
import com.google.gerrit.extensions.api.changes.ReviewInput;
-import com.google.gerrit.extensions.client.InheritableBoolean;
import com.google.gerrit.extensions.client.ListChangesOption;
import com.google.gerrit.extensions.common.ApprovalInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
@@ -238,16 +237,6 @@
}
@Test
- public void publishEditRestWithoutCLA() throws Exception {
- configureContributorAgreement(true);
- createArbitraryEditFor(changeId);
- setUseContributorAgreements(InheritableBoolean.TRUE);
- adminRestSession.post(urlPublish(changeId)).assertForbidden();
- setUseContributorAgreements(InheritableBoolean.FALSE);
- adminRestSession.post(urlPublish(changeId)).assertNoContent();
- }
-
- @Test
public void rebaseEdit() throws Exception {
PatchSet previousPatchSet = getCurrentPatchSet(changeId2);
createEmptyEditFor(changeId2);
diff --git a/javatests/com/google/gerrit/acceptance/rest/config/ServerInfoIT.java b/javatests/com/google/gerrit/acceptance/rest/config/ServerInfoIT.java
index 6c12dd6..6c0b707 100644
--- a/javatests/com/google/gerrit/acceptance/rest/config/ServerInfoIT.java
+++ b/javatests/com/google/gerrit/acceptance/rest/config/ServerInfoIT.java
@@ -196,13 +196,4 @@
// user
assertThat(i.user.anonymousCowardName).isEqualTo(AnonymousCowardNameProvider.DEFAULT);
}
-
- @Test
- @GerritConfig(name = "auth.contributorAgreements", value = "true")
- public void anonymousAccess() throws Exception {
- configureContributorAgreement(true);
-
- setApiUserAnonymous();
- gApi.config().server().getInfo();
- }
}