From fddab0300aaec0741f8b2de86952c675f82948dd Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 04 Dec 2012 11:20:22 -0500
Subject: [PATCH] Fixed regression in sendmail-html.groovy

---
 tests/com/gitblit/tests/FederationTests.java |  153 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 104 insertions(+), 49 deletions(-)

diff --git a/tests/com/gitblit/tests/FederationTests.java b/tests/com/gitblit/tests/FederationTests.java
index c5f7e8d..c8f686a 100644
--- a/tests/com/gitblit/tests/FederationTests.java
+++ b/tests/com/gitblit/tests/FederationTests.java
@@ -15,64 +15,55 @@
  */
 package com.gitblit.tests;
 
-import java.io.IOException;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
-import java.util.concurrent.Executors;
+import java.util.concurrent.atomic.AtomicBoolean;
 
-import junit.framework.TestCase;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
 import com.gitblit.Constants.AccessRestrictionType;
 import com.gitblit.Constants.FederationProposalResult;
 import com.gitblit.Constants.FederationRequest;
 import com.gitblit.Constants.FederationToken;
-import com.gitblit.FederationServlet;
-import com.gitblit.GitBlitServer;
+import com.gitblit.models.FederationModel;
 import com.gitblit.models.FederationProposal;
 import com.gitblit.models.RepositoryModel;
+import com.gitblit.models.TeamModel;
+import com.gitblit.models.UserModel;
 import com.gitblit.utils.FederationUtils;
-import com.google.gson.Gson;
+import com.gitblit.utils.JsonUtils;
+import com.gitblit.utils.RpcUtils;
 
-public class FederationTests extends TestCase {
+public class FederationTests {
 
-	int port = 8180;
+	String url = GitBlitSuite.url;
+	String account = GitBlitSuite.account;
+	String password = GitBlitSuite.password;
+	String token = "d7cc58921a80b37e0329a4dae2f9af38bf61ef5c";
 
-	int shutdownPort = 8181;
+	private static final AtomicBoolean started = new AtomicBoolean(false);
 
-	@Override
-	protected void setUp() throws Exception {
-		// Start a Gitblit instance
-		Executors.newSingleThreadExecutor().execute(new Runnable() {
-			public void run() {
-				GitBlitServer.main("--httpPort", "" + port, "--httpsPort", "0", "--shutdownPort",
-						"" + shutdownPort, "--repositoriesFolder",
-						"\"" + GitBlitSuite.REPOSITORIES.getAbsolutePath() + "\"", "--userService",
-						"distrib/users.properties");
-			}
-		});
-
-		// Wait a few seconds for it to be running
-		Thread.sleep(2500);
+	@BeforeClass
+	public static void startGitblit() throws Exception {
+		started.set(GitBlitSuite.startGitblit());
 	}
 
-	@Override
-	protected void tearDown() throws Exception {
-		// Stop Gitblit
-		GitBlitServer.main("--stop", "--shutdownPort", "" + shutdownPort);
-
-		// Wait a few seconds for it to be running
-		Thread.sleep(2500);
+	@AfterClass
+	public static void stopGitblit() throws Exception {
+		if (started.get()) {
+			GitBlitSuite.stopGitblit();
+		}
 	}
 
-	public void testDeserialization() throws Exception {
-		String json = "{\"https://localhost:8443/git/a.b.c.orphan.git\":{\"name\":\"a.b.c.orphan.git\",\"description\":\"\",\"owner\":\"\",\"lastChange\":\"Jul 22, 2011 3:15:07 PM\",\"hasCommits\":true,\"showRemoteBranches\":false,\"useTickets\":false,\"useDocs\":false,\"accessRestriction\":\"NONE\",\"isFrozen\":false,\"showReadme\":false,\"isFederated\":false},\"https://localhost:8443/git/test/jgit.git\":{\"name\":\"test/jgit.git\",\"description\":\"\",\"owner\":\"\",\"lastChange\":\"Jul 13, 2011 9:42:33 AM\",\"hasCommits\":true,\"showRemoteBranches\":true,\"useTickets\":false,\"useDocs\":false,\"accessRestriction\":\"NONE\",\"isFrozen\":false,\"showReadme\":false,\"isFederated\":false},\"https://localhost:8443/git/test/helloworld.git\":{\"name\":\"test/helloworld.git\",\"description\":\"\",\"owner\":\"\",\"lastChange\":\"Jul 15, 2008 7:26:48 PM\",\"hasCommits\":true,\"showRemoteBranches\":false,\"useTickets\":false,\"useDocs\":false,\"accessRestriction\":\"NONE\",\"isFrozen\":false,\"showReadme\":false,\"isFederated\":false},\"https://localhost:8443/git/working/ticgit\":{\"name\":\"working/ticgit\",\"description\":\"\",\"owner\":\"\",\"lastChange\":\"Jul 22, 2011 10:35:27 AM\",\"hasCommits\":true,\"showRemoteBranches\":false,\"useTickets\":false,\"useDocs\":false,\"accessRestriction\":\"NONE\",\"isFrozen\":false,\"showReadme\":false,\"isFederated\":false},\"https://localhost:8443/git/ticgit.git\":{\"name\":\"ticgit.git\",\"description\":\"\",\"owner\":\"\",\"lastChange\":\"Jul 22, 2011 10:35:27 AM\",\"hasCommits\":true,\"showRemoteBranches\":true,\"useTickets\":true,\"useDocs\":true,\"accessRestriction\":\"NONE\",\"isFrozen\":false,\"showReadme\":false,\"isFederated\":false},\"https://localhost:8443/git/helloworld.git\":{\"name\":\"helloworld.git\",\"description\":\"\",\"owner\":\"\",\"lastChange\":\"Jul 15, 2008 7:26:48 PM\",\"hasCommits\":true,\"showRemoteBranches\":false,\"useTickets\":false,\"useDocs\":false,\"accessRestriction\":\"NONE\",\"isFrozen\":false,\"showReadme\":false,\"isFederated\":false},\"https://localhost:8443/git/test/helloworld3.git\":{\"name\":\"test/helloworld3.git\",\"description\":\"\",\"owner\":\"\",\"lastChange\":\"Jul 15, 2008 7:26:48 PM\",\"hasCommits\":true,\"showRemoteBranches\":false,\"useTickets\":false,\"useDocs\":false,\"accessRestriction\":\"NONE\",\"isFrozen\":false,\"showReadme\":false,\"isFederated\":false},\"https://localhost:8443/git/test/bluez-gnome.git\":{\"name\":\"test/bluez-gnome.git\",\"description\":\"\",\"owner\":\"\",\"lastChange\":\"Dec 19, 2008 6:35:33 AM\",\"hasCommits\":true,\"showRemoteBranches\":false,\"useTickets\":false,\"useDocs\":false,\"accessRestriction\":\"NONE\",\"isFrozen\":false,\"showReadme\":false,\"isFederated\":false}}";
-		Gson gson = new Gson();
-		Map<String, RepositoryModel> models = gson
-				.fromJson(json, FederationUtils.REPOSITORIES_TYPE);
-		assertEquals(8, models.size());
-	}
-
+	@Test
 	public void testProposal() throws Exception {
 		// create dummy repository data
 		Map<String, RepositoryModel> repositories = new HashMap<String, RepositoryModel>();
@@ -92,20 +83,84 @@
 				"testtoken", repositories);
 
 		// propose federation
-		assertEquals("proposal refused",
-				FederationUtils.propose("http://localhost:" + port, proposal),
+		assertEquals("proposal refused", FederationUtils.propose(url, proposal),
 				FederationProposalResult.NO_PROPOSALS);
 	}
 
+	@Test
+	public void testJsonRepositories() throws Exception {
+		String requrl = FederationUtils.asLink(url, token, FederationRequest.PULL_REPOSITORIES);
+		String json = JsonUtils.retrieveJsonString(requrl, null, null);
+		assertNotNull(json);
+	}
+
+	@Test
+	public void testJsonUsers() throws Exception {
+		String requrl = FederationUtils.asLink(url, token, FederationRequest.PULL_USERS);
+		String json = JsonUtils.retrieveJsonString(requrl, null, null);
+		assertNotNull(json);
+	}
+
+	@Test
+	public void testJsonTeams() throws Exception {
+		String requrl = FederationUtils.asLink(url, token, FederationRequest.PULL_TEAMS);
+		String json = JsonUtils.retrieveJsonString(requrl, null, null);
+		assertNotNull(json);
+	}
+
+	private FederationModel getRegistration() {
+		FederationModel model = new FederationModel("localhost");
+		model.url = this.url;
+		model.token = this.token;
+		return model;
+	}
+
+	@Test
 	public void testPullRepositories() throws Exception {
-		try {
-			String url = FederationServlet.asFederationLink("http://localhost:" + port,
-					"testtoken", FederationRequest.PULL_REPOSITORIES);
-			String json = FederationUtils.readJson(url);
-		} catch (IOException e) {
-			if (!e.getMessage().contains("403")) {
-				throw e;
-			}
-		}
+		Map<String, RepositoryModel> repos = FederationUtils.getRepositories(getRegistration(),
+				false);
+		assertNotNull(repos);
+		assertTrue(repos.size() > 0);
+	}
+
+	@Test
+	public void testPullUsers() throws Exception {
+		List<UserModel> users = FederationUtils.getUsers(getRegistration());
+		assertNotNull(users);
+		// admin is excluded
+		assertEquals(0, users.size());
+		
+		UserModel newUser = new UserModel("test");
+		newUser.password = "whocares";
+		assertTrue(RpcUtils.createUser(newUser, url, account, password.toCharArray()));
+		
+		TeamModel team = new TeamModel("testteam");
+		team.addUser("test");
+		team.addRepositoryPermission("helloworld.git");
+		assertTrue(RpcUtils.createTeam(team, url, account, password.toCharArray()));
+		
+		users = FederationUtils.getUsers(getRegistration());
+		assertNotNull(users);
+		assertEquals(1, users.size());
+		
+		newUser = users.get(0);
+		assertTrue(newUser.isTeamMember("testteam"));		
+		
+		assertTrue(RpcUtils.deleteUser(newUser, url, account, password.toCharArray()));
+		assertTrue(RpcUtils.deleteTeam(team, url, account, password.toCharArray()));
+	}
+
+	@Test
+	public void testPullTeams() throws Exception {
+		List<TeamModel> teams = FederationUtils.getTeams(getRegistration());
+		assertNotNull(teams);
+		assertTrue(teams.size() > 0);
+	}
+	
+	@Test
+	public void testPullScripts() throws Exception {
+		Map<String, String> scripts = FederationUtils.getScripts(getRegistration());
+		assertNotNull(scripts);
+		assertTrue(scripts.keySet().contains("sendmail"));
 	}
 }

--
Gitblit v1.9.1