Paul Martin
2016-04-27 c2188a840bc4153ae92112b04b2e06a90d3944aa
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());