From 889e695280f9b82cc31aeb5e8a28b60f8cd6c260 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sat, 13 Jul 2013 13:10:04 -0400
Subject: [PATCH] Adjust unit test to confirm null permission fix (issue-259)

---
 src/test/java/com/gitblit/tests/PermissionsTest.java |  256 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 251 insertions(+), 5 deletions(-)

diff --git a/src/test/java/com/gitblit/tests/PermissionsTest.java b/src/test/java/com/gitblit/tests/PermissionsTest.java
index 5a95104..12225e4 100644
--- a/src/test/java/com/gitblit/tests/PermissionsTest.java
+++ b/src/test/java/com/gitblit/tests/PermissionsTest.java
@@ -17,8 +17,7 @@
 
 import java.util.Date;
 
-import junit.framework.Assert;
-
+import org.junit.Assert;
 import org.junit.Test;
 
 import com.gitblit.Constants.AccessPermission;
@@ -57,6 +56,8 @@
 			assertTrue("admin CAN NOT delete ref!", user.canDeleteRef(repository));
 			assertTrue("admin CAN NOT rewind ref!", user.canRewindRef(repository));
 			
+			assertEquals("admin has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 			assertTrue("admin CAN NOT fork!", user.canFork(repository));
 			
 			assertTrue("admin CAN NOT delete!", user.canDelete(repository));
@@ -74,7 +75,7 @@
 		repository.accessRestriction = AccessRestrictionType.NONE;
 		
 		UserModel user = UserModel.ANONYMOUS;
-		
+				
 		// all permissions, except fork
 		assertTrue("anonymous CAN NOT view!", user.canView(repository));
 		assertTrue("anonymous CAN NOT clone!", user.canClone(repository));
@@ -83,6 +84,8 @@
 		assertTrue("anonymous CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("anonymous CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("anonymous CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("anonymous has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 
 		repository.allowForks = false;
 		assertFalse("anonymous CAN fork!", user.canFork(repository));
@@ -109,6 +112,8 @@
 		assertFalse("anonymous CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("anonymous CAN rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("anonymous has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		assertFalse("anonymous CAN fork!", user.canFork(repository));
 		repository.allowForks = true;
@@ -131,6 +136,8 @@
 		assertFalse("anonymous CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("anonymous CAN rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("anonymous has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		assertFalse("anonymous CAN fork!", user.canFork(repository));
 		repository.allowForks = true;
@@ -152,6 +159,8 @@
 		assertFalse("anonymous CAN create ref!", user.canCreateRef(repository));
 		assertFalse("anonymous CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("anonymous CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("anonymous has wrong permission!", AccessPermission.NONE, user.getRepositoryPermission(repository).permission);
 
 		repository.allowForks = false;
 		assertFalse("anonymous CAN fork!", user.canFork(repository));
@@ -178,6 +187,8 @@
 		assertTrue("authenticated CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("authenticated CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("authenticated CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("authenticated has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 
 		user.canFork = false;
 		repository.allowForks = false;
@@ -207,6 +218,8 @@
 		assertTrue("authenticated CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("authenticated CAN NOT rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("authenticated has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		user.canFork = false;
 		repository.allowForks = false;
 		assertFalse("authenticated CAN fork!", user.canFork(repository));
@@ -232,6 +245,8 @@
 		assertTrue("authenticated CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("authenticated CAN NOT rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("authenticated has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		user.canFork = false;
 		repository.allowForks = false;
 		assertFalse("authenticated CAN fork!", user.canFork(repository));
@@ -256,6 +271,8 @@
 		assertTrue("authenticated CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("authenticated CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("authenticated CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("authenticated has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 
 		user.canFork = false;
 		repository.allowForks = false;
@@ -285,6 +302,8 @@
 		assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -316,6 +335,8 @@
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("named has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -343,6 +364,8 @@
 		assertFalse("named CAN create ref!", user.canCreateRef(repository));
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("named has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
 
 		repository.allowForks = false;
 		user.canFork = false;
@@ -372,6 +395,8 @@
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.NONE, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -402,7 +427,9 @@
 		assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
-		
+
+		assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -431,6 +458,8 @@
 		assertFalse("named CAN create ref!", user.canCreateRef(repository));
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("named has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
 
 		repository.allowForks = false;
 		user.canFork = false;
@@ -461,6 +490,8 @@
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("named has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -490,6 +521,8 @@
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -520,6 +553,8 @@
 		assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -533,7 +568,7 @@
 	 * PUSH_CLONE = PUSH access restriction, CLONE access permission
 	 */
 	@Test
-	public void testNamed_PUSH_READ() throws Exception {
+	public void testNamed_PUSH_CLONE() throws Exception {
 		RepositoryModel repository = new RepositoryModel("myrepo.git", null, null, new Date());
 		repository.authorizationControl = AuthorizationControl.NAMED;
 		repository.accessRestriction = AccessRestrictionType.PUSH;
@@ -548,6 +583,8 @@
 		assertFalse("named CAN create ref!", user.canCreateRef(repository));
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("named has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
 
 		repository.allowForks = false;
 		user.canFork = false;
@@ -578,6 +615,8 @@
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("named has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -607,6 +646,8 @@
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -637,6 +678,8 @@
 		assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -665,6 +708,8 @@
 		assertFalse("named CAN create ref!", user.canCreateRef(repository));
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("named has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(repository).permission);
 
 		repository.allowForks = false;
 		user.canFork = false;
@@ -695,6 +740,8 @@
 		assertFalse("named CAN delete red!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("named has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -724,6 +771,8 @@
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -754,6 +803,8 @@
 		assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -782,6 +833,8 @@
 		assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("named has wrong permission!", AccessPermission.CREATE, user.getRepositoryPermission(repository).permission);
 
 		repository.allowForks = false;
 		user.canFork = false;
@@ -812,6 +865,8 @@
 		assertFalse("named CAN delete red!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("named has wrong permission!", AccessPermission.CREATE, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -841,6 +896,8 @@
 		assertFalse("named CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.CREATE, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -871,6 +928,8 @@
 		assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -899,6 +958,8 @@
 		assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("named has wrong permission!", AccessPermission.DELETE, user.getRepositoryPermission(repository).permission);
 
 		repository.allowForks = false;
 		user.canFork = false;
@@ -929,6 +990,8 @@
 		assertTrue("named CAN NOT delete red!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("named has wrong permission!", AccessPermission.DELETE, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -958,6 +1021,8 @@
 		assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertFalse("named CAN rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.DELETE, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -988,6 +1053,8 @@
 		assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -1016,6 +1083,8 @@
 		assertTrue("named CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 
 		repository.allowForks = false;
 		user.canFork = false;
@@ -1046,6 +1115,8 @@
 		assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -1075,6 +1146,8 @@
 		assertTrue("named CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("named CAN NOT rewind ref!", user.canRewindRef(repository));
 		
+		assertEquals("named has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		repository.allowForks = false;
 		user.canFork = false;
 		assertFalse("named CAN fork!", user.canFork(repository));
@@ -1102,6 +1175,9 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
+		
+		assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
+
 	}
 	
 	/**
@@ -1122,6 +1198,9 @@
 		assertFalse("team CAN create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+		
+		assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repository).permission);
+
 	}
 
 	/**
@@ -1142,6 +1221,8 @@
 		assertFalse("team CAN create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+		
+		assertEquals("team has wrong permission!", AccessPermission.VIEW, team.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -1162,6 +1243,8 @@
 		assertFalse("team CAN create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+		
+		assertEquals("team has wrong permission!", AccessPermission.NONE, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1184,6 +1267,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
+		
+		assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1205,6 +1290,8 @@
 		assertFalse("team CAN create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+		
+		assertEquals("team has wrong permission!", AccessPermission.PUSH, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1226,6 +1313,8 @@
 		assertFalse("team CAN create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+		
+		assertEquals("team has wrong permission!", AccessPermission.PUSH, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1247,6 +1336,8 @@
 		assertFalse("team CAN create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.PUSH, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1269,6 +1360,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1290,6 +1383,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.CREATE, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1311,6 +1406,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.CREATE, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1332,6 +1429,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.CREATE, team.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -1354,6 +1453,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1375,6 +1476,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.DELETE, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1396,6 +1499,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+		
+		assertEquals("team has wrong permission!", AccessPermission.DELETE, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1417,6 +1522,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.DELETE, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1439,6 +1546,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1460,6 +1569,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1481,6 +1592,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1502,6 +1615,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1524,6 +1639,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -1545,6 +1662,8 @@
 		assertFalse("team CAN create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -1566,6 +1685,8 @@
 		assertFalse("team CAN create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1587,6 +1708,8 @@
 		assertFalse("team CAN create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -1609,6 +1732,8 @@
 		assertTrue("team CAN NOT create ref!", team.canCreateRef(repository));
 		assertTrue("team CAN NOT delete ref!", team.canDeleteRef(repository));
 		assertTrue("team CAN NOT rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -1630,6 +1755,8 @@
 		assertFalse("team CAN create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1651,6 +1778,8 @@
 		assertFalse("team CAN create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.VIEW, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1672,6 +1801,8 @@
 		assertFalse("team CAN create ref!", team.canCreateRef(repository));
 		assertFalse("team CAN delete ref!", team.canDeleteRef(repository));
 		assertFalse("team CAN rewind ref!", team.canRewindRef(repository));
+
+		assertEquals("team has wrong permission!", AccessPermission.VIEW, team.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1694,6 +1825,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1716,6 +1849,8 @@
 		assertFalse("team member CAN create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -1738,6 +1873,8 @@
 		assertFalse("team member CAN create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -1760,6 +1897,8 @@
 		assertFalse("team member CAN create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.NONE, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1784,6 +1923,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1807,6 +1948,8 @@
 		assertFalse("team member CAN create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1830,6 +1973,8 @@
 		assertFalse("team member CAN create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1853,6 +1998,8 @@
 		assertFalse("team member CAN create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1877,6 +2024,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1900,6 +2049,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.CREATE, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1923,6 +2074,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.CREATE, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1946,6 +2099,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.CREATE, user.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -1970,6 +2125,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -1993,6 +2150,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.DELETE, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -2016,6 +2175,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.DELETE, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -2039,6 +2200,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.DELETE, user.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -2063,6 +2226,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -2086,6 +2251,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -2109,6 +2276,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -2132,6 +2301,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -2156,6 +2327,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -2179,6 +2352,8 @@
 		assertFalse("team member CAN create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -2202,6 +2377,8 @@
 		assertFalse("team member CAN create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -2225,6 +2402,8 @@
 		assertFalse("team member CAN create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -2249,6 +2428,8 @@
 		assertTrue("team member CAN NOT create ref!", user.canCreateRef(repository));
 		assertTrue("team member CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("team member CAN NOT rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 	}
 
 	/**
@@ -2272,6 +2453,8 @@
 		assertFalse("team member CAN create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -2295,6 +2478,8 @@
 		assertFalse("team member CAN create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
 	}
 	
 	/**
@@ -2318,6 +2503,8 @@
 		assertFalse("team member CAN create ref!", user.canCreateRef(repository));
 		assertFalse("team member CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("team member CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("team member has wrong permission!", AccessPermission.VIEW, user.getRepositoryPermission(repository).permission);
 	}
 	
 	@Test
@@ -2337,6 +2524,8 @@
 		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));
+
+		assertEquals("owner has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
 
 		assertTrue("owner CAN NOT fork!", user.canFork(repository));
 		
@@ -2365,6 +2554,8 @@
 		assertTrue("owner CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("owner CAN NOT rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("owner has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		assertTrue("owner CAN NOT fork!", user.canFork(repository));
 		
 		assertFalse("owner CAN NOT delete!", user.canDelete(repository));
@@ -2379,6 +2570,8 @@
 		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));
+
+		assertEquals("owner has wrong permission!", AccessPermission.REWIND, user2.getRepositoryPermission(repository).permission);
 
 		assertTrue("owner CAN NOT fork!", user2.canFork(repository));
 		
@@ -2407,6 +2600,8 @@
 		assertTrue("user CAN NOT delete ref!", user.canDeleteRef(repository));
 		assertTrue("user CAN NOT rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("user has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repository).permission);
+
 		assertFalse("user CAN fork!", user.canFork(repository));
 		
 		assertTrue("user CAN NOT delete!", user.canDelete(repository));
@@ -2431,6 +2626,8 @@
 		assertFalse("user CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("user CAN rewind ref!", user.canRewindRef(repository));
 
+		assertEquals("user has wrong permission!", AccessPermission.NONE, user.getRepositoryPermission(repository).permission);
+
 		assertFalse("user CAN fork!", user.canFork(repository));
 		
 		assertFalse("user CAN delete!", user.canDelete(repository));
@@ -2454,6 +2651,8 @@
 		assertFalse("user CAN create ref!", user.canCreateRef(repository));
 		assertFalse("user CAN delete ref!", user.canDeleteRef(repository));
 		assertFalse("user CAN rewind ref!", user.canRewindRef(repository));
+
+		assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repository).permission);
 
 		assertFalse("user CAN fork!", user.canFork(repository));
 		
@@ -2481,6 +2680,8 @@
 		assertFalse("user CAN delete ref!", user.canDeleteRef(common));
 		assertFalse("user CAN rewind ref!", user.canRewindRef(common));
 
+		assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(common).permission);
+
 		assertFalse("user CAN fork!", user.canFork(common));
 		
 		assertFalse("user CAN delete!", user.canDelete(common));
@@ -2499,6 +2700,8 @@
 		assertFalse("user CAN create ref!", user.canCreateRef(personal));
 		assertFalse("user CAN delete ref!", user.canDeleteRef(personal));
 		assertFalse("user CAN rewind ref!", user.canRewindRef(personal));
+
+		assertEquals("user has wrong permission!", AccessPermission.NONE, user.getRepositoryPermission(personal).permission);
 
 		assertFalse("user CAN fork!", user.canFork(personal));
 		
@@ -2528,6 +2731,8 @@
 		assertFalse("user CAN delete ref!", user.canDeleteRef(personal));
 		assertFalse("user CAN rewind ref!", user.canRewindRef(personal));
 
+		assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(personal).permission);
+
 		assertFalse("user CAN fork!", user.canFork(personal));
 		
 		assertFalse("user CAN delete!", user.canDelete(personal));
@@ -2554,6 +2759,8 @@
 		assertFalse("user CAN delete ref!", user.canDeleteRef(personal));
 		assertFalse("user CAN rewind ref!", user.canRewindRef(personal));
 
+		assertEquals("user has wrong permission!", AccessPermission.PUSH, user.getRepositoryPermission(personal).permission);
+
 		assertFalse("user CAN fork!", user.canFork(personal));
 		
 		assertFalse("user CAN delete!", user.canDelete(personal));
@@ -2572,6 +2779,8 @@
 		assertFalse("user CAN create ref!", user.canCreateRef(personal));
 		assertFalse("user CAN delete ref!", user.canDeleteRef(personal));
 		assertFalse("user CAN rewind ref!", user.canRewindRef(personal));
+
+		assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(personal).permission);
 
 		assertFalse("user CAN fork!", user.canFork(personal));
 				
@@ -2598,6 +2807,8 @@
 		assertFalse("user CAN create ref!", user.canCreateRef(personal));
 		assertFalse("user CAN delete ref!", user.canDeleteRef(personal));
 		assertFalse("user CAN rewind ref!", user.canRewindRef(personal));
+
+		assertEquals("user has wrong permission!", AccessPermission.EXCLUDE, user.getRepositoryPermission(personal).permission);
 
 		assertFalse("user CAN fork!", user.canFork(personal));
 				
@@ -2632,4 +2843,39 @@
 		assertTrue("User did not inherit create privileges", user.canCreate());
 	}
 
+	@Test
+	public void testIsFrozen() throws Exception {
+		RepositoryModel repo = new RepositoryModel("somerepo.git", null, null, new Date());
+		repo.authorizationControl = AuthorizationControl.NAMED;
+		repo.accessRestriction = AccessRestrictionType.NONE;
+
+		UserModel user = new UserModel("test");
+		TeamModel team = new TeamModel("team");
+
+		assertEquals("user has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repo).permission);
+		assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repo).permission);
+		
+		// freeze repo
+		repo.isFrozen = true;
+		assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repo).permission);
+		assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repo).permission);
+	}
+	
+	@Test
+	public void testIsBare() throws Exception {
+		RepositoryModel repo = new RepositoryModel("somerepo.git", null, null, new Date());
+		repo.authorizationControl = AuthorizationControl.NAMED;
+		repo.accessRestriction = AccessRestrictionType.NONE;
+
+		UserModel user = new UserModel("test");
+		TeamModel team = new TeamModel("team");
+
+		assertEquals("user has wrong permission!", AccessPermission.REWIND, user.getRepositoryPermission(repo).permission);
+		assertEquals("team has wrong permission!", AccessPermission.REWIND, team.getRepositoryPermission(repo).permission);
+		
+		// set repo to have a working copy, pushes prohibited
+		repo.isBare = false;
+		assertEquals("user has wrong permission!", AccessPermission.CLONE, user.getRepositoryPermission(repo).permission);
+		assertEquals("team has wrong permission!", AccessPermission.CLONE, team.getRepositoryPermission(repo).permission);
+	}
 }

--
Gitblit v1.9.1