From 0e44acbb2fec928a1606dc60f427a148fff405c9 Mon Sep 17 00:00:00 2001
From: Mohamed Ragab <moragab@gmail.com>
Date: Wed, 02 May 2012 11:15:01 -0400
Subject: [PATCH] Added a script to facilitate setting the proxy host and port and no proxy hosts, and then it concatenates all the java system properties for setting the java proxy configurations and puts the resulting string in an environment variable JAVA_PROXY_CONFIG, modified the scirpts gitblit,  gitblit-ubuntu, and gitblit-centos to source the java-proxy-config.sh script and then include the resulting java proxy configuration in the java command

---
 tests/com/gitblit/tests/GitServletTest.java |  124 ++++++++++++++++++++++++++++-------------
 1 files changed, 84 insertions(+), 40 deletions(-)

diff --git a/tests/com/gitblit/tests/GitServletTest.java b/tests/com/gitblit/tests/GitServletTest.java
index a4c5e88..2f9a9c4 100644
--- a/tests/com/gitblit/tests/GitServletTest.java
+++ b/tests/com/gitblit/tests/GitServletTest.java
@@ -13,6 +13,7 @@
 
 import org.eclipse.jgit.api.CloneCommand;
 import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
 import org.eclipse.jgit.util.FileUtils;
 import org.junit.AfterClass;
@@ -25,9 +26,13 @@
 
 public class GitServletTest {
 
-	File folder = new File(GitBlitSuite.REPOSITORIES, "working/ticgit");
+	static File ticgitFolder = new File(GitBlitSuite.REPOSITORIES, "working/ticgit");
 	
-	File jgitFolder = new File(GitBlitSuite.REPOSITORIES, "working/jgit");
+	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.url;
 	String account = GitBlitSuite.account;
@@ -37,6 +42,7 @@
 
 	@BeforeClass
 	public static void startGitblit() throws Exception {
+		deleteWorkingFolders();
 		started.set(GitBlitSuite.startGitblit());
 	}
 
@@ -45,20 +51,33 @@
 		if (started.get()) {
 			GitBlitSuite.stopGitblit();
 		}
+		deleteWorkingFolders();
+	}
+	
+	private static void deleteWorkingFolders() throws Exception {
+		if (ticgitFolder.exists()) {
+			FileUtils.delete(ticgitFolder, FileUtils.RECURSIVE);
+		}
+		if (ticgit2Folder.exists()) {
+			FileUtils.delete(ticgit2Folder, FileUtils.RECURSIVE);
+		}
+		if (jgitFolder.exists()) {
+			FileUtils.delete(jgitFolder, FileUtils.RECURSIVE);
+		}
+		if (jgit2Folder.exists()) {
+			FileUtils.delete(jgit2Folder, FileUtils.RECURSIVE);
+		}
 	}
 
 	@Test
 	public void testClone() throws Exception {
-		if (folder.exists()) {
-			FileUtils.delete(folder, FileUtils.RECURSIVE);
-		}
 		CloneCommand clone = Git.cloneRepository();
 		clone.setURI(MessageFormat.format("{0}/git/ticgit.git", url));
-		clone.setDirectory(folder);
+		clone.setDirectory(ticgitFolder);
 		clone.setBare(false);
 		clone.setCloneAllBranches(true);
 		clone.setCredentialsProvider(new UsernamePasswordCredentialsProvider(account, password));
-		clone.call();
+		close(clone.call());		
 		assertTrue(true);
 	}
 
@@ -69,20 +88,16 @@
 		model.accessRestriction = AccessRestrictionType.CLONE;
 		GitBlit.self().updateRepositoryModel(model.name, model, false);
 
-		// delete any existing working folder
-		File folder = new File(GitBlitSuite.REPOSITORIES, "working/gitblit");
-		if (folder.exists()) {
-			FileUtils.delete(folder, FileUtils.RECURSIVE);
-		}
+		// delete any existing working folder		
 		boolean cloned = false;
 		try {
 			CloneCommand clone = Git.cloneRepository();
 			clone.setURI(MessageFormat.format("{0}/git/ticgit.git", url));
-			clone.setDirectory(folder);
+			clone.setDirectory(ticgit2Folder);
 			clone.setBare(false);
 			clone.setCloneAllBranches(true);
 			clone.setCredentialsProvider(new UsernamePasswordCredentialsProvider("bogus", "bogus"));
-			clone.call();
+			close(clone.call());
 			cloned = true;
 		} catch (Exception e) {
 			// swallow the exception which we expect
@@ -97,45 +112,74 @@
 
 	@Test
 	public void testAnonymousPush() throws Exception {
-		Git git = Git.open(folder);
-		File file = new File(folder, "TODO");
-		for (int i = 0; i < 3; i++) {
-			OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file, true));
-			BufferedWriter w = new BufferedWriter(os);
-			w.write("// " + new Date().toString() + "\n");
-			w.close();
-			git.add().addFilepattern(file.getName()).call();
-			git.commit().setMessage("test commit #" + (i + 1)).call();
-		}
+		Git git = Git.open(ticgitFolder);
+		File file = new File(ticgitFolder, "TODO");
+		OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file, true), Constants.CHARSET);
+		BufferedWriter w = new BufferedWriter(os);
+		w.write("// hellol中文 " + new Date().toString() + "\n");
+		w.close();
+		git.add().addFilepattern(file.getName()).call();
+		git.commit().setMessage("test commit").call();
 		git.push().setPushAll().call();
-		git.getRepository().close();
+		close(git);
 	}
-	
+
 	@Test
 	public void testSubfolderPush() throws Exception {
-		if (jgitFolder.exists()) {
-			FileUtils.delete(jgitFolder, FileUtils.RECURSIVE);
-		}
 		CloneCommand clone = Git.cloneRepository();
 		clone.setURI(MessageFormat.format("{0}/git/test/jgit.git", url));
 		clone.setDirectory(jgitFolder);
 		clone.setBare(false);
 		clone.setCloneAllBranches(true);
 		clone.setCredentialsProvider(new UsernamePasswordCredentialsProvider(account, password));
-		clone.call();
+		close(clone.call());
 		assertTrue(true);
-		
+
 		Git git = Git.open(jgitFolder);
 		File file = new File(jgitFolder, "TODO");
-		for (int i = 0; i < 3; i++) {
-			OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file, true));
-			BufferedWriter w = new BufferedWriter(os);
-			w.write("// " + new Date().toString() + "\n");
-			w.close();
-			git.add().addFilepattern(file.getName()).call();
-			git.commit().setMessage("test commit #" + (i + 1)).call();
-		}
+		OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file, true), Constants.CHARSET);
+		BufferedWriter w = new BufferedWriter(os);
+		w.write("// " + new Date().toString() + "\n");
+		w.close();
+		git.add().addFilepattern(file.getName()).call();
+		git.commit().setMessage("test commit").call();
 		git.push().setPushAll().call();
-		git.getRepository().close();
+		close(git);
+	}
+	
+	@Test
+	public void testPushToNonBareRepository() throws Exception {
+		CloneCommand clone = Git.cloneRepository();
+		clone.setURI(MessageFormat.format("{0}/git/working/jgit", url));
+		clone.setDirectory(jgit2Folder);
+		clone.setBare(false);
+		clone.setCloneAllBranches(true);
+		clone.setCredentialsProvider(new UsernamePasswordCredentialsProvider(account, password));
+		close(clone.call());
+		assertTrue(true);
+
+		Git git = Git.open(jgit2Folder);
+		File file = new File(jgit2Folder, "NONBARE");
+		OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(file, true), Constants.CHARSET);
+		BufferedWriter w = new BufferedWriter(os);
+		w.write("// " + new Date().toString() + "\n");
+		w.close();
+		git.add().addFilepattern(file.getName()).call();
+		git.commit().setMessage("test commit followed by push to non-bare repository").call();
+		try {
+			git.push().setPushAll().call();
+			assertTrue(false);
+		} catch (Exception e) {
+			assertTrue(e.getCause().getMessage().contains("git-receive-pack not permitted"));
+		}
+		close(git);
+	}
+	
+	private void close(Git git) {
+		// really close the repository
+		// decrement the use counter to 0
+		for (int i = 0; i < 2; i++) {
+			git.getRepository().close();
+		}
 	}
 }

--
Gitblit v1.9.1