summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Hiesel <hiesel@google.com>2021-03-10 14:45:34 +0100
committerPatrick Hiesel <hiesel@google.com>2021-08-05 12:55:02 +0000
commit2c23004e5ac569194e627dc065b744f7fb5dfb64 (patch)
treef10c7b6007ce2a363980f012511d50fab6d13e15
parent6bc4f98a97ac3f2cf86f77e0fce3ed5fce572774 (diff)
ProjectOperations: Add method to wipe all access sections
This commit adds a method to the project test framework that allows us to wipe all access sections. This is useful when we want to test against a 'clean' and defined set of permissions that don't depend on Gerrit's default permissions. Change-Id: I63a85b4077834e170b53c93f14b05da929a6dda1 (cherry picked from commit 9c170519b3545e2f401969e7b0d5cde907263999)
-rw-r--r--java/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImpl.java3
-rw-r--r--java/com/google/gerrit/acceptance/testsuite/project/TestProjectUpdate.java15
-rw-r--r--javatests/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImplTest.java9
3 files changed, 26 insertions, 1 deletions
diff --git a/java/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImpl.java b/java/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImpl.java
index 7797fe0153..62a560b7a8 100644
--- a/java/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImpl.java
+++ b/java/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImpl.java
@@ -135,6 +135,9 @@ public class ProjectOperationsImpl implements ProjectOperations {
throws IOException, ConfigInvalidException {
try (MetaDataUpdate metaDataUpdate = metaDataUpdateFactory.create(nameKey)) {
ProjectConfig projectConfig = projectConfigFactory.read(metaDataUpdate);
+ if (projectUpdate.removeAllAccessSections()) {
+ projectConfig.getAccessSections().forEach(as -> projectConfig.remove(as));
+ }
removePermissions(projectConfig, projectUpdate.removedPermissions());
addCapabilities(projectConfig, projectUpdate.addedCapabilities());
addPermissions(projectConfig, projectUpdate.addedPermissions());
diff --git a/java/com/google/gerrit/acceptance/testsuite/project/TestProjectUpdate.java b/java/com/google/gerrit/acceptance/testsuite/project/TestProjectUpdate.java
index 734854b041..739ed19bf5 100644
--- a/java/com/google/gerrit/acceptance/testsuite/project/TestProjectUpdate.java
+++ b/java/com/google/gerrit/acceptance/testsuite/project/TestProjectUpdate.java
@@ -294,7 +294,8 @@ public abstract class TestProjectUpdate {
return new AutoValue_TestProjectUpdate.Builder()
.nameKey(nameKey)
.allProjectsName(allProjectsName)
- .projectUpdater(projectUpdater);
+ .projectUpdater(projectUpdater)
+ .removeAllAccessSections(false);
}
/** Builder for {@link TestProjectUpdate}. */
@@ -314,6 +315,16 @@ public abstract class TestProjectUpdate {
abstract ImmutableMap.Builder<TestPermissionKey, Boolean> exclusiveGroupPermissionsBuilder();
+ abstract Builder removeAllAccessSections(boolean value);
+
+ /**
+ * Removes all access sections. Useful when testing against a specific set of access sections or
+ * permissions.
+ */
+ public Builder removeAllAccessSections() {
+ return removeAllAccessSections(true);
+ }
+
/** Adds a permission to be included in this update. */
public Builder add(TestPermission testPermission) {
addedPermissionsBuilder().add(testPermission);
@@ -418,6 +429,8 @@ public abstract class TestProjectUpdate {
abstract ThrowingConsumer<TestProjectUpdate> projectUpdater();
+ abstract boolean removeAllAccessSections();
+
boolean hasCapabilityUpdates() {
return !addedCapabilities().isEmpty()
|| removedPermissions().stream().anyMatch(k -> k.section().equals(GLOBAL_CAPABILITIES));
diff --git a/javatests/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImplTest.java b/javatests/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImplTest.java
index c7a8eb6eaa..2a445711d5 100644
--- a/javatests/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImplTest.java
+++ b/javatests/com/google/gerrit/acceptance/testsuite/project/ProjectOperationsImplTest.java
@@ -562,6 +562,15 @@ public class ProjectOperationsImplTest extends AbstractDaemonTest {
}
@Test
+ public void removeAllAccessSections() {
+ projectOperations.allProjectsForUpdate().removeAllAccessSections().update();
+
+ assertThat(projectOperations.project(allProjects).getConfig())
+ .sectionValues("access")
+ .isEmpty();
+ }
+
+ @Test
public void updatingCapabilitiesNotAllowedForNonAllProjects() throws Exception {
Project.NameKey key = projectOperations.newProject().create();
assertThrows(