Do not reject '*' as email if allowed email domains are configured
Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: Ifdb65a252a588c67e2d9b1cdd8c9a6cbcdbc1862
diff --git a/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerResolver.java b/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerResolver.java
index fdd4da2..cf9a16b 100644
--- a/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerResolver.java
+++ b/java/com/google/gerrit/plugins/codeowners/backend/CodeOwnerResolver.java
@@ -377,6 +377,10 @@
return true;
}
+ if (email.equals(ALL_USERS_WILDCARD)) {
+ return true;
+ }
+
int emailAtIndex = email.lastIndexOf('@');
if (emailAtIndex >= 0 && emailAtIndex < email.length() - 1) {
String emailDomain = email.substring(emailAtIndex + 1);
diff --git a/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnerConfigValidatorIT.java b/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnerConfigValidatorIT.java
index 609411f..357c5d8 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnerConfigValidatorIT.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/acceptance/api/CodeOwnerConfigValidatorIT.java
@@ -43,6 +43,7 @@
import com.google.gerrit.plugins.codeowners.backend.CodeOwnerConfigImportMode;
import com.google.gerrit.plugins.codeowners.backend.CodeOwnerConfigImportType;
import com.google.gerrit.plugins.codeowners.backend.CodeOwnerConfigReference;
+import com.google.gerrit.plugins.codeowners.backend.CodeOwnerResolver;
import com.google.gerrit.plugins.codeowners.backend.CodeOwnerSet;
import com.google.gerrit.plugins.codeowners.backend.findowners.FindOwnersBackend;
import com.google.gerrit.plugins.codeowners.backend.findowners.FindOwnersCodeOwnerConfigParser;
@@ -99,6 +100,35 @@
}
@Test
+ public void canUploadConfigWhichAssignsCodeOwnershipToAllUsers() throws Exception {
+ testCanUploadConfigWhichAssignsCodeOwnershipToAllUsers();
+ }
+
+ @Test
+ @GerritConfig(name = "plugin.code-owners.allowedEmailDomain", value = "example.com")
+ public void canUploadConfigWhichAssignsCodeOwnershipToAllUsers_restrictedAllowedEmailDomain()
+ throws Exception {
+ testCanUploadConfigWhichAssignsCodeOwnershipToAllUsers();
+ }
+
+ private void testCanUploadConfigWhichAssignsCodeOwnershipToAllUsers() throws Exception {
+ CodeOwnerConfig.Key codeOwnerConfigKey = createCodeOwnerConfigKey("/");
+
+ // Create a code owner config without issues that assigns code ownership to all users.
+ PushOneCommit.Result r =
+ createChange(
+ "Add code owners",
+ codeOwnerConfigOperations.codeOwnerConfig(codeOwnerConfigKey).getJGitFilePath(),
+ format(
+ CodeOwnerConfig.builder(codeOwnerConfigKey, TEST_REVISION)
+ .addCodeOwnerSet(
+ CodeOwnerSet.createWithoutPathExpressions(
+ CodeOwnerResolver.ALL_USERS_WILDCARD))
+ .build()));
+ assertOkWithHints(r, "code owner config files validated, no issues found");
+ }
+
+ @Test
public void canSubmitConfigWithoutIssues() throws Exception {
CodeOwnerConfig.Key codeOwnerConfigKey = createCodeOwnerConfigKey("/");
diff --git a/javatests/com/google/gerrit/plugins/codeowners/backend/CodeOwnerResolverTest.java b/javatests/com/google/gerrit/plugins/codeowners/backend/CodeOwnerResolverTest.java
index f390336..0ac0deb 100644
--- a/javatests/com/google/gerrit/plugins/codeowners/backend/CodeOwnerResolverTest.java
+++ b/javatests/com/google/gerrit/plugins/codeowners/backend/CodeOwnerResolverTest.java
@@ -334,6 +334,8 @@
assertThat(codeOwnerResolver.get().isEmailDomainAllowed("foo")).isFalse();
assertThat(codeOwnerResolver.get().isEmailDomainAllowed("foo@example.com@example.org"))
.isFalse();
+ assertThat(codeOwnerResolver.get().isEmailDomainAllowed(CodeOwnerResolver.ALL_USERS_WILDCARD))
+ .isTrue();
}
@Test
@@ -346,6 +348,8 @@
assertThat(codeOwnerResolver.get().isEmailDomainAllowed("foo")).isTrue();
assertThat(codeOwnerResolver.get().isEmailDomainAllowed("foo@example.com@example.org"))
.isTrue();
+ assertThat(codeOwnerResolver.get().isEmailDomainAllowed(CodeOwnerResolver.ALL_USERS_WILDCARD))
+ .isTrue();
}
@Test