From eecaad8b8e2c447429c31a01d49260ddd6b4ee03 Mon Sep 17 00:00:00 2001 From: Paul Martin <paul@paulsputer.com> Date: Sat, 16 Apr 2016 17:35:32 -0400 Subject: [PATCH] Proof of concept #1026 --- src/test/java/com/gitblit/tests/GitDaemonTest.java | 70 +++++++++++++++++------------------ 1 files changed, 34 insertions(+), 36 deletions(-) diff --git a/src/test/java/com/gitblit/tests/GitDaemonTest.java b/src/test/java/com/gitblit/tests/GitDaemonTest.java index 6b181d0..74af251 100644 --- a/src/test/java/com/gitblit/tests/GitDaemonTest.java +++ b/src/test/java/com/gitblit/tests/GitDaemonTest.java @@ -31,23 +31,21 @@ import org.eclipse.jgit.transport.RemoteRefUpdate.Status; import org.eclipse.jgit.util.FileUtils; import org.junit.AfterClass; -import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import com.gitblit.Constants.AccessRestrictionType; import com.gitblit.Constants.AuthorizationControl; -import com.gitblit.GitBlit; import com.gitblit.models.RepositoryModel; -public class GitDaemonTest extends Assert { +public class GitDaemonTest extends GitblitUnitTest { static File ticgitFolder = new File(GitBlitSuite.REPOSITORIES, "working/ticgit"); - + static File ticgit2Folder = new File(GitBlitSuite.REPOSITORIES, "working/ticgit2"); static File jgitFolder = new File(GitBlitSuite.REPOSITORIES, "working/jgit"); - + static File jgit2Folder = new File(GitBlitSuite.REPOSITORIES, "working/jgit2"); String url = GitBlitSuite.gitDaemonUrl; @@ -94,25 +92,25 @@ } // set push restriction - RepositoryModel model = GitBlit.self().getRepositoryModel("ticgit.git"); + RepositoryModel model = repositories().getRepositoryModel("ticgit.git"); model.accessRestriction = AccessRestrictionType.PUSH; model.authorizationControl = AuthorizationControl.NAMED; - GitBlit.self().updateRepositoryModel(model.name, model, false); - + repositories().updateRepositoryModel(model.name, model, false); + CloneCommand clone = Git.cloneRepository(); clone.setURI(MessageFormat.format("{0}/ticgit.git", url)); clone.setDirectory(ticgitFolder); clone.setBare(false); clone.setCloneAllBranches(true); - GitBlitSuite.close(clone.call()); + GitBlitSuite.close(clone.call()); assertTrue(true); - + // restore anonymous repository access model.accessRestriction = AccessRestrictionType.NONE; model.authorizationControl = AuthorizationControl.NAMED; - GitBlit.self().updateRepositoryModel(model.name, model, false); + repositories().updateRepositoryModel(model.name, model, false); } - + @Test public void testCloneRestrictedRepo() throws Exception { GitBlitSuite.close(ticgit2Folder); @@ -121,12 +119,12 @@ } // restrict repository access - RepositoryModel model = GitBlit.self().getRepositoryModel("ticgit.git"); + RepositoryModel model = repositories().getRepositoryModel("ticgit.git"); model.accessRestriction = AccessRestrictionType.CLONE; model.authorizationControl = AuthorizationControl.NAMED; - GitBlit.self().updateRepositoryModel(model.name, model, false); - - // delete any existing working folder + repositories().updateRepositoryModel(model.name, model, false); + + // delete any existing working folder boolean cloned = false; try { CloneCommand clone = Git.cloneRepository(); @@ -143,11 +141,11 @@ assertFalse("Anonymous was able to clone the repository?!", cloned); FileUtils.delete(ticgit2Folder, FileUtils.RECURSIVE); - + // restore anonymous repository access model.accessRestriction = AccessRestrictionType.NONE; model.authorizationControl = AuthorizationControl.NAMED; - GitBlit.self().updateRepositoryModel(model.name, model, false); + repositories().updateRepositoryModel(model.name, model, false); } @Test @@ -158,19 +156,19 @@ } // restore anonymous repository access - RepositoryModel model = GitBlit.self().getRepositoryModel("ticgit.git"); + RepositoryModel model = repositories().getRepositoryModel("ticgit.git"); model.accessRestriction = AccessRestrictionType.NONE; model.authorizationControl = AuthorizationControl.NAMED; - GitBlit.self().updateRepositoryModel(model.name, model, false); + repositories().updateRepositoryModel(model.name, model, false); CloneCommand clone = Git.cloneRepository(); clone.setURI(MessageFormat.format("{0}/ticgit.git", url)); clone.setDirectory(ticgitFolder); clone.setBare(false); clone.setCloneAllBranches(true); - GitBlitSuite.close(clone.call()); + GitBlitSuite.close(clone.call()); assertTrue(true); - + Git git = Git.open(ticgitFolder); File file = new File(ticgitFolder, "TODO"); OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file, true), Constants.CHARSET); @@ -196,19 +194,19 @@ } // restore anonymous repository access - RepositoryModel model = GitBlit.self().getRepositoryModel("ticgit.git"); + RepositoryModel model = repositories().getRepositoryModel("ticgit.git"); model.accessRestriction = AccessRestrictionType.PUSH; model.authorizationControl = AuthorizationControl.NAMED; - GitBlit.self().updateRepositoryModel(model.name, model, false); + repositories().updateRepositoryModel(model.name, model, false); CloneCommand clone = Git.cloneRepository(); clone.setURI(MessageFormat.format("{0}/ticgit.git", url)); clone.setDirectory(ticgitFolder); clone.setBare(false); clone.setCloneAllBranches(true); - GitBlitSuite.close(clone.call()); + GitBlitSuite.close(clone.call()); assertTrue(true); - + Git git = Git.open(ticgitFolder); File file = new File(ticgitFolder, "TODO"); OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file, true), Constants.CHARSET); @@ -232,7 +230,7 @@ if (jgitFolder.exists()) { FileUtils.delete(jgitFolder, FileUtils.RECURSIVE | FileUtils.RETRY); } - + CloneCommand clone = Git.cloneRepository(); clone.setURI(MessageFormat.format("{0}/test/jgit.git", url)); clone.setDirectory(jgitFolder); @@ -240,11 +238,11 @@ clone.setCloneAllBranches(true); GitBlitSuite.close(clone.call()); assertTrue(true); - + // freeze repo - RepositoryModel model = GitBlit.self().getRepositoryModel("test/jgit.git"); + RepositoryModel model = repositories().getRepositoryModel("test/jgit.git"); model.isFrozen = true; - GitBlit.self().updateRepositoryModel(model.name, model, false); + repositories().updateRepositoryModel(model.name, model, false); Git git = Git.open(jgitFolder); File file = new File(jgitFolder, "TODO"); @@ -254,17 +252,17 @@ w.close(); git.add().addFilepattern(file.getName()).call(); git.commit().setMessage("test commit").call(); - + Iterable<PushResult> results = git.push().call(); for (PushResult result : results) { for (RemoteRefUpdate update : result.getRemoteUpdates()) { assertEquals(Status.REJECTED_OTHER_REASON, update.getStatus()); } } - + // unfreeze repo model.isFrozen = false; - GitBlit.self().updateRepositoryModel(model.name, model, false); + repositories().updateRepositoryModel(model.name, model, false); results = git.push().setPushAll().call(); GitBlitSuite.close(git); @@ -274,14 +272,14 @@ } } } - + @Test public void testPushToNonBareRepository() throws Exception { GitBlitSuite.close(jgit2Folder); if (jgit2Folder.exists()) { FileUtils.delete(jgit2Folder, FileUtils.RECURSIVE | FileUtils.RETRY); } - + CloneCommand clone = Git.cloneRepository(); clone.setURI(MessageFormat.format("{0}/working/jgit", url)); clone.setDirectory(jgit2Folder); @@ -301,7 +299,7 @@ Iterable<PushResult> results = git.push().setPushAll().call(); GitBlitSuite.close(git); - + for (PushResult result : results) { for (RemoteRefUpdate update : result.getRemoteUpdates()) { assertEquals(Status.REJECTED_OTHER_REASON, update.getStatus()); -- Gitblit v1.9.1