diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/AccessIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/AccessIT.java index f67012af76..a0c8275fd0 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/AccessIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/AccessIT.java @@ -524,6 +524,34 @@ public class AccessIT extends AbstractDaemonTest { assertThat(cfg.getString(access, refsFor, unknownPermission)).isEqualTo(registeredUsers); } + @Test + public void addAccessSectionForInvalidRef() throws Exception { + ProjectAccessInput accessInput = newProjectAccessInput(); + AccessSectionInfo accessSectionInfo = createDefaultAccessSectionInfo(); + + // 'refs/heads/stable_*' is invalid, correct would be '^refs/heads/stable_.*' + String invalidRef = Constants.R_HEADS + "stable_*"; + accessInput.add.put(invalidRef, accessSectionInfo); + + exception.expect(BadRequestException.class); + exception.expectMessage("Invalid Name: " + invalidRef); + pApi.access(accessInput); + } + + @Test + public void createAccessChangeWithAccessSectionForInvalidRef() throws Exception { + ProjectAccessInput accessInput = newProjectAccessInput(); + AccessSectionInfo accessSectionInfo = createDefaultAccessSectionInfo(); + + // 'refs/heads/stable_*' is invalid, correct would be '^refs/heads/stable_.*' + String invalidRef = Constants.R_HEADS + "stable_*"; + accessInput.add.put(invalidRef, accessSectionInfo); + + exception.expect(BadRequestException.class); + exception.expectMessage("Invalid Name: " + invalidRef); + pApi.accessChange(accessInput); + } + private ProjectAccessInput newProjectAccessInput() { ProjectAccessInput p = new ProjectAccessInput(); p.add = new HashMap<>(); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateAccessChange.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateAccessChange.java index 326d395d75..459a413f19 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateAccessChange.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateAccessChange.java @@ -22,6 +22,7 @@ import com.google.gerrit.common.errors.PermissionDeniedException; import com.google.gerrit.extensions.api.access.ProjectAccessInput; import com.google.gerrit.extensions.common.ChangeInfo; import com.google.gerrit.extensions.restapi.AuthException; +import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.extensions.restapi.Response; import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.extensions.restapi.RestModifyView; @@ -145,6 +146,8 @@ public class CreateAccessChange implements RestModifyView