Fix problem where users with similiar usernames are suggested

If you disable an account, accounts with similiar
usernames will be invited to review instead. This happens
because account resolver will use fuzzy prefix matching to
get an account if it can not find one with an exact match.

Bug: Issue 355451194
Change-Id: I68c502bf89a3357d0daeff4f50586897c9d20b1c
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolver.java b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolver.java
index 9454455..987372b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolver.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolver.java
@@ -99,8 +99,8 @@
     try {
       AccountResolver.Result result =
           ignoreAccountVisibility
-              ? accountResolver.resolveIgnoreVisibility(accountName)
-              : accountResolver.resolve(accountName);
+              ? accountResolver.resolveExactIgnoreVisibility(accountName)
+              : accountResolver.resolveExact(accountName);
       if (result.asList().size() == 1) {
         Account.Id id = result.asList().get(0).account().id();
         if (uploader == null || id.get() != uploader._accountId) {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolverIT.java b/src/test/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolverIT.java
index 76d5b2b..4b2f47a 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolverIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/reviewers/ReviewersResolverIT.java
@@ -115,6 +115,22 @@
     assertThat(reviewers).containsExactly(system.id(), foo.id(), bar.id(), baz.id(), qux.id());
   }
 
+  @Test
+  public void accountExactResolve() throws Exception {
+    String username = "user1";
+    String almostMatchingUsername = "user";
+    accountCreator.create(username);
+
+    Set<Account.Id> reviewers =
+        resolver.resolve(
+            ImmutableSet.of(almostMatchingUsername),
+            project,
+            change,
+            gApi.accounts().id(admin.id().get()).get(),
+            false);
+    assertThat(reviewers).isEmpty();
+  }
+
   private TestAccount createTestAccount(String name, String group) throws Exception {
     name = name(name);
     return accountCreator.create(name, name + "@example.com", name + " full name", null, group);