diff options
author | Patrick Hiesel <hiesel@google.com> | 2021-03-10 14:45:34 +0100 |
---|---|---|
committer | Patrick Hiesel <hiesel@google.com> | 2021-08-05 12:55:02 +0000 |
commit | 2c23004e5ac569194e627dc065b744f7fb5dfb64 (patch) | |
tree | f10c7b6007ce2a363980f012511d50fab6d13e15 | |
parent | 6bc4f98a97ac3f2cf86f77e0fce3ed5fce572774 (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)
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( |