From 661db6c2948e4848b29645c66e17cbfcaa780ae0 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 23 Jan 2013 07:52:20 -0500
Subject: [PATCH] Revised multiple owners contribution

---
 tests/com/gitblit/tests/PermissionsTest.java |   51 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 48 insertions(+), 3 deletions(-)

diff --git a/tests/com/gitblit/tests/PermissionsTest.java b/tests/com/gitblit/tests/PermissionsTest.java
index 6eca046..5a95104 100644
--- a/tests/com/gitblit/tests/PermissionsTest.java
+++ b/tests/com/gitblit/tests/PermissionsTest.java
@@ -2327,7 +2327,7 @@
 		repository.accessRestriction = AccessRestrictionType.VIEW;
 
 		UserModel user = new UserModel("test");
-		repository.addRepoAdministrator(user.username);
+		repository.addOwner(user.username);
 
 		assertFalse("user SHOULD NOT HAVE a repository permission!", user.hasRepositoryPermission(repository.name));
 		assertTrue("owner CAN NOT view!", user.canView(repository));
@@ -2345,13 +2345,58 @@
 	}
 	
 	@Test
+	public void testMultipleOwners() throws Exception {
+		RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
+		repository.authorizationControl = AuthorizationControl.NAMED;
+		repository.accessRestriction = AccessRestrictionType.VIEW;
+
+		UserModel user = new UserModel("test");
+		repository.addOwner(user.username);
+		UserModel user2 = new UserModel("test2");
+		repository.addOwner(user2.username);
+
+		// first owner
+		assertFalse("user SHOULD NOT HAVE a repository permission!", user.hasRepositoryPermission(repository.name));
+		assertTrue("owner CAN NOT view!", user.canView(repository));
+		assertTrue("owner CAN NOT clone!", user.canClone(repository));
+		assertTrue("owner CAN NOT push!", user.canPush(repository));
+		
+		assertTrue("owner CAN NOT create ref!", user.canCreateRef(repository));
+		assertTrue("owner CAN NOT delete ref!", user.canDeleteRef(repository));
+		assertTrue("owner CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertTrue("owner CAN NOT fork!", user.canFork(repository));
+		
+		assertFalse("owner CAN NOT delete!", user.canDelete(repository));
+		assertTrue("owner CAN NOT edit!", user.canEdit(repository));
+		
+		// second owner
+		assertFalse("user SHOULD NOT HAVE a repository permission!", user2.hasRepositoryPermission(repository.name));
+		assertTrue("owner CAN NOT view!", user2.canView(repository));
+		assertTrue("owner CAN NOT clone!", user2.canClone(repository));
+		assertTrue("owner CAN NOT push!", user2.canPush(repository));
+		
+		assertTrue("owner CAN NOT create ref!", user2.canCreateRef(repository));
+		assertTrue("owner CAN NOT delete ref!", user2.canDeleteRef(repository));
+		assertTrue("owner CAN NOT rewind ref!", user2.canRewindRef(repository));
+
+		assertTrue("owner CAN NOT fork!", user2.canFork(repository));
+		
+		assertFalse("owner CAN NOT delete!", user2.canDelete(repository));
+		assertTrue("owner CAN NOT edit!", user2.canEdit(repository));
+		
+		assertTrue(repository.isOwner(user.username));
+		assertTrue(repository.isOwner(user2.username));	
+	}
+	
+	@Test
 	public void testOwnerPersonalRepository() throws Exception {
 		RepositoryModel repository = new RepositoryModel("~test/myrepo.git", null, null, new Date());
 		repository.authorizationControl = AuthorizationControl.NAMED;
 		repository.accessRestriction = AccessRestrictionType.VIEW;
 
 		UserModel user = new UserModel("test");
-		repository.addRepoAdministrator(user.username);
+		repository.addOwner(user.username);
 
 		assertFalse("user SHOULD NOT HAVE a repository permission!", user.hasRepositoryPermission(repository.name));
 		assertTrue("user CAN NOT view!", user.canView(repository));
@@ -2375,7 +2420,7 @@
 		repository.accessRestriction = AccessRestrictionType.VIEW;
 
 		UserModel user = new UserModel("visitor");
-		repository.addRepoAdministrator("test");
+		repository.addOwner("test");
 
 		assertFalse("user HAS a repository permission!", user.hasRepositoryPermission(repository.name));
 		assertFalse("user CAN view!", user.canView(repository));

--
Gitblit v1.9.1