Refactor UploadValidatorIT to set up per-test/per-repo configs
The previous code set up configs for All-Projects, which made it
hard to test different variations of configs.
Change-Id: Ia247dc0b75b07b95f7b6b44598917d8f46e847af
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 1a02d08..cafc18c 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/UploadValidatorIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/uploadvalidator/UploadValidatorIT.java
@@ -36,6 +36,7 @@
import com.google.inject.Inject;
import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
import org.eclipse.jgit.junit.TestRepository;
+import org.eclipse.jgit.revwalk.RevCommit;
import org.junit.Before;
import org.junit.Test;
@@ -49,31 +50,17 @@
TestRepository<InMemoryRepository> clone;
void pushConfig(String config) throws Exception {
- TestRepository<InMemoryRepository> allProjectRepo = cloneProject(allProjects, admin);
- GitUtil.fetch(allProjectRepo, RefNames.REFS_CONFIG + ":config");
- allProjectRepo.reset("config");
+ TestRepository<InMemoryRepository> repo = cloneProject(project, admin);
+ GitUtil.fetch(repo, RefNames.REFS_CONFIG + ":config");
+ repo.reset("config");
PushOneCommit push =
- pushFactory.create(admin.newIdent(), allProjectRepo, "Subject", "project.config", config);
+ pushFactory.create(admin.newIdent(), repo, "Subject", "project.config", config);
PushOneCommit.Result res = push.to(RefNames.REFS_CONFIG);
res.assertOkStatus();
}
@Before
public void setup() throws Exception {
- pushConfig(
- Joiner.on("\n")
- .join(
- "[plugin \"uploadvalidator\"]",
- " skipViaPushOption = true",
- " group = " + adminGroupUuid(),
- " blockedFileExtension = jar",
- " blockedFileExtension = .zip",
- " blockedKeywordPattern = secr3t",
- " invalidFilenamePattern = [%:@]",
- " rejectWindowsLineEndings = true",
- " maxPathLength = 20",
- " rejectDuplicatePathnames = true"));
-
projectOperations
.project(allProjects)
.forUpdate()
@@ -86,20 +73,37 @@
}
@Test
- public void testFileExtension() throws Exception {
+ public void fileExtension() throws Exception {
+ pushConfig(
+ Joiner.on("\n")
+ .join(
+ "[plugin \"uploadvalidator\"]",
+ " blockedFileExtension = jar",
+ " blockedFileExtension = .zip"));
+ RevCommit head = getHead(testRepo.getRepository(), "HEAD");
pushFactory
.create(admin.newIdent(), clone, "Subject", "file.jar", "content")
.to("refs/heads/master")
.assertErrorStatus("blocked file extensions");
+ clone.reset(head);
pushFactory
.create(admin.newIdent(), clone, "Subject", "file.zip", "content")
.to("refs/heads/master")
.assertErrorStatus("blocked file extensions");
+
+ clone.reset(head);
+ pushFactory
+ .create(admin.newIdent(), clone, "Subject", "file.txt", "content")
+ .to("refs/heads/master")
+ .assertOkStatus();
}
@Test
- public void testKeywordInComment() throws Exception {
+ public void keywordInComment() throws Exception {
+ pushConfig(
+ Joiner.on("\n").join("[plugin \"uploadvalidator\"]", " blockedKeywordPattern = secr3t"));
+
PushOneCommit.Result r1 = createChange("Subject", "file.txt", "content");
DraftInput in = new DraftInput();
in.message = "the password is secr3t ! ";
@@ -116,7 +120,10 @@
}
@Test
- public void testKeywordInFile() throws Exception {
+ public void keywordInNewFile() throws Exception {
+ pushConfig(
+ Joiner.on("\n").join("[plugin \"uploadvalidator\"]", " blockedKeywordPattern = secr3t"));
+
pushFactory
.create(admin.newIdent(), clone, "Subject", "file.txt", "blah secr3t blah")
.to("refs/heads/master")
@@ -124,23 +131,47 @@
}
@Test
- public void testFilenamePattern() throws Exception {
+ public void filenamePattern() throws Exception {
+ pushConfig(
+ Joiner.on("\n").join("[plugin \"uploadvalidator\"]", " invalidFilenamePattern = [%:@]"));
+
+ RevCommit head = getHead(testRepo.getRepository(), "HEAD");
pushFactory
.create(admin.newIdent(), clone, "Subject", "f:le.txt", "content")
.to("refs/heads/master")
.assertErrorStatus("invalid filename");
+
+ clone.reset(head);
+ pushFactory
+ .create(admin.newIdent(), clone, "Subject", "file.txt", "content")
+ .to("refs/heads/master")
+ .assertOkStatus();
}
@Test
- public void testWindowsLineEndings() throws Exception {
+ public void windowsLineEndings() throws Exception {
+ pushConfig(
+ Joiner.on("\n")
+ .join("[plugin \"uploadvalidator\"]", " rejectWindowsLineEndings = true"));
+
+ RevCommit head = getHead(testRepo.getRepository(), "HEAD");
pushFactory
.create(admin.newIdent(), clone, "Subject", "win.ini", "content\r\nline2\r\n")
.to("refs/heads/master")
.assertErrorStatus("Windows line ending");
+
+ clone.reset(head);
+ pushFactory
+ .create(admin.newIdent(), clone, "Subject", "file.txt", "content\nline2\n")
+ .to("refs/heads/master")
+ .assertOkStatus();
}
@Test
- public void testPathLength() throws Exception {
+ public void pathLength() throws Exception {
+ pushConfig(Joiner.on("\n").join("[plugin \"uploadvalidator\"]", " maxPathLength = 20"));
+
+ RevCommit head = getHead(testRepo.getRepository(), "HEAD");
pushFactory
.create(
admin.newIdent(),
@@ -150,10 +181,20 @@
"content\nline2\n")
.to("refs/heads/master")
.assertErrorStatus("too long paths");
+
+ clone.reset(head);
+ pushFactory
+ .create(admin.newIdent(), clone, "Subject", "file.txt", "content\nline2\n")
+ .to("refs/heads/master")
+ .assertOkStatus();
}
@Test
- public void testUniqueName() throws Exception {
+ public void uniqueName() throws Exception {
+ pushConfig(
+ Joiner.on("\n")
+ .join("[plugin \"uploadvalidator\"]", " rejectDuplicatePathnames = true"));
+
pushFactory
.create(
admin.newIdent(),
@@ -165,7 +206,14 @@
}
@Test
- public void testRulesNotEnforcedForNonGroupMembers() throws Exception {
+ public void rulesNotEnforcedForNonGroupMembers() throws Exception {
+ pushConfig(
+ Joiner.on("\n")
+ .join(
+ "[plugin \"uploadvalidator\"]",
+ " group = " + adminGroupUuid(),
+ " rejectDuplicatePathnames = true"));
+
TestRepository<InMemoryRepository> userClone =
GitUtil.cloneProject(project, registerRepoConnection(project, user));
pushFactory
@@ -179,7 +227,14 @@
}
@Test
- public void testRulesNotEnforcedForSkipPushOption() throws Exception {
+ public void rulesNotEnforcedForSkipPushOption() throws Exception {
+ pushConfig(
+ Joiner.on("\n")
+ .join(
+ "[plugin \"uploadvalidator\"]",
+ " skipViaPushOption = true",
+ " rejectDuplicatePathnames = true"));
+
PushOneCommit push =
pushFactory.create(
admin.newIdent(),