diff options
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( |