diff --git a/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/Module.java b/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/Module.java
index 98261ea..fe30271 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/Module.java
@@ -15,7 +15,7 @@
 package com.googlesource.gerrit.plugins.uploadvalidator;
 
 import com.google.gerrit.extensions.registration.DynamicSet;
-import com.google.gerrit.server.git.receive.PluginPushOption;
+import com.google.gerrit.server.PluginPushOption;
 import com.google.inject.AbstractModule;
 import com.google.inject.Scopes;
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/SkipValidationPushOption.java b/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/SkipValidationPushOption.java
index b690bd4..a969d83 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/SkipValidationPushOption.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/uploadvalidator/SkipValidationPushOption.java
@@ -14,7 +14,7 @@
 
 package com.googlesource.gerrit.plugins.uploadvalidator;
 
-import com.google.gerrit.server.git.receive.PluginPushOption;
+import com.google.gerrit.server.PluginPushOption;
 
 /** Push option that allows to skip the uploadvalidator plugin validation. */
 public final class SkipValidationPushOption implements PluginPushOption {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/TestUtils.java b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/TestUtils.java
index 358e527..2e96d1d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/TestUtils.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/TestUtils.java
@@ -14,7 +14,6 @@
 
 package com.googlesource.gerrit.plugins.uploadvalidator;
 
-import com.google.common.base.Charsets;
 import com.google.common.base.Function;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.LoadingCache;
@@ -24,6 +23,7 @@
 import com.google.gerrit.server.git.validators.CommitValidationMessage;
 import java.io.File;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -47,7 +47,7 @@
   public static final PluginConfig EMPTY_PLUGIN_CONFIG =
       PluginConfig.create("", new Config(), null);
 
-  protected static final byte[] EMPTY_CONTENT = "".getBytes(Charsets.UTF_8);
+  protected static final byte[] EMPTY_CONTENT = "".getBytes(StandardCharsets.UTF_8);
 
   private static final Function<CommitValidationMessage, String> MESSAGE_TRANSFORMER =
       new Function<CommitValidationMessage, String>() {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/UploadValidatorIT.java b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/UploadValidatorIT.java
index ef54724..b81a97d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/UploadValidatorIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/UploadValidatorIT.java
@@ -30,8 +30,6 @@
 import com.google.gerrit.entities.Permission;
 import com.google.gerrit.entities.RefNames;
 import com.google.gerrit.extensions.api.changes.DraftInput;
-import com.google.gerrit.extensions.api.changes.ReviewInput;
-import com.google.gerrit.extensions.api.changes.ReviewInput.DraftHandling;
 import com.google.gerrit.extensions.client.ChangeStatus;
 import com.google.gerrit.extensions.common.ChangeInput;
 import com.google.gerrit.extensions.common.MergeInput;
@@ -74,7 +72,7 @@
         .add(allow(Permission.PUSH).ref("refs/*").group(SystemGroupBackend.REGISTERED_USERS))
         .update();
 
-    clone = GitUtil.cloneProject(project, registerRepoConnection(project, admin));
+    clone = cloneProject(project, admin);
   }
 
   @Test
@@ -113,14 +111,10 @@
     DraftInput in = new DraftInput();
     in.message = "the password is secr3t ! ";
     in.path = "file.txt";
-    gApi.changes().id(r1.getChangeId()).revision("current").createDraft(in);
-
-    ReviewInput reviewIn = new ReviewInput();
-    reviewIn.drafts = DraftHandling.PUBLISH;
     BadRequestException e =
         assertThrows(
             BadRequestException.class,
-            () -> gApi.changes().id(r1.getChangeId()).revision("current").review(reviewIn));
+            () -> gApi.changes().id(r1.getChangeId()).revision("current").createDraft(in));
     assertThat(e.getMessage()).contains("banned words");
   }
 
@@ -219,8 +213,7 @@
                 "    group = " + adminGroupUuid(),
                 "    rejectDuplicatePathnames = true"));
 
-    TestRepository<InMemoryRepository> userClone =
-        GitUtil.cloneProject(project, registerRepoConnection(project, user));
+    TestRepository<InMemoryRepository> userClone = cloneProject(project, user);
     pushFactory
         .create(
             user.newIdent(),
@@ -453,8 +446,10 @@
   @Test
   public void blockRejectedAuthor() throws Exception {
     pushConfig(
-        Joiner.on("\n").join("[plugin \"uploadvalidator\"]",
-                             "    rejectedAuthorEmailPattern = .*@example\\\\.com"));
+        Joiner.on("\n")
+            .join(
+                "[plugin \"uploadvalidator\"]",
+                "    rejectedAuthorEmailPattern = .*@example\\\\.com"));
 
     TestAccount user = accountCreator.create("user", "user@example.com", "User", null);
 
@@ -467,8 +462,10 @@
   @Test
   public void blockRejectedCommitter() throws Exception {
     pushConfig(
-        Joiner.on("\n").join("[plugin \"uploadvalidator\"]",
-                             "    rejectedCommitterEmailPattern = .*@example\\\\.com"));
+        Joiner.on("\n")
+            .join(
+                "[plugin \"uploadvalidator\"]",
+                "    rejectedCommitterEmailPattern = .*@example\\\\.com"));
 
     TestAccount user = accountCreator.create("user", "user@example.com", "User", null);
 
@@ -481,8 +478,10 @@
   @Test
   public void restrictToAuthor() throws Exception {
     pushConfig(
-        Joiner.on("\n").join("[plugin \"uploadvalidator\"]",
-                             "    allowedAuthorEmailPattern = .*@other\\\\.com"));
+        Joiner.on("\n")
+            .join(
+                "[plugin \"uploadvalidator\"]",
+                "    allowedAuthorEmailPattern = .*@other\\\\.com"));
 
     TestAccount user = accountCreator.create("user", "user@example.com", "User", null);
 
@@ -495,8 +494,10 @@
   @Test
   public void restrictToCommitter() throws Exception {
     pushConfig(
-        Joiner.on("\n").join("[plugin \"uploadvalidator\"]",
-                             "    allowedCommitterEmailPattern = .*@other\\\\.com"));
+        Joiner.on("\n")
+            .join(
+                "[plugin \"uploadvalidator\"]",
+                "    allowedCommitterEmailPattern = .*@other\\\\.com"));
 
     TestAccount user = accountCreator.create("user", "user@example.com", "User", null);
 
diff --git a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/ValidatorTestCase.java b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/ValidatorTestCase.java
index 07a78ab..2702f95 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/ValidatorTestCase.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/ValidatorTestCase.java
@@ -14,9 +14,9 @@
 
 package com.googlesource.gerrit.plugins.uploadvalidator;
 
+import com.google.common.io.MoreFiles;
 import java.io.File;
 import java.io.IOException;
-import org.apache.commons.io.FileUtils;
 import org.eclipse.jgit.lib.Repository;
 import org.junit.After;
 import org.junit.Before;
@@ -36,7 +36,7 @@
   public void cleanup() throws IOException {
     repo.close();
     if (repoFolder.exists()) {
-      FileUtils.deleteDirectory(repoFolder);
+      MoreFiles.deleteRecursively(repoFolder.toPath());
     }
   }
 }
