From 78dc06a87f82ed19e3eebe1f16dc6c1bdaf5fbc5 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Tue, 31 Jan 2012 09:35:30 -0500 Subject: [PATCH] Merge pull request #6 from lemval/master --- tests/com/gitblit/tests/UserServiceTest.java | 128 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 126 insertions(+), 2 deletions(-) diff --git a/tests/com/gitblit/tests/UserServiceTest.java b/tests/com/gitblit/tests/UserServiceTest.java index 3f410fa..03051bd 100644 --- a/tests/com/gitblit/tests/UserServiceTest.java +++ b/tests/com/gitblit/tests/UserServiceTest.java @@ -38,6 +38,7 @@ file.delete(); IUserService service = new FileUserService(file); testUsers(service); + testTeams(service); file.delete(); } @@ -47,6 +48,7 @@ file.delete(); IUserService service = new ConfigUserService(file); testUsers(service); + testTeams(service); file.delete(); } @@ -55,13 +57,19 @@ UserModel admin = service.getUserModel("admin"); assertTrue(admin == null); - // add admin + // add admin and admins team + TeamModel admins = new TeamModel("admins"); + admins.mailingLists.add("admins@localhost.com"); + admin = new UserModel("admin"); admin.password = "password"; admin.canAdmin = true; admin.excludeFromFederation = true; + admin.teams.add(admins); + service.updateUserModel(admin); admin = null; + admins = null; // add new user UserModel newUser = new UserModel("test"); @@ -72,12 +80,15 @@ service.updateUserModel(newUser); // add one more new user and then test reload of first new user - newUser = new UserModel("garbage"); + newUser = new UserModel("GARBAGE"); newUser.password = "garbage"; service.updateUserModel(newUser); // confirm all added users assertEquals(3, service.getAllUsernames().size()); + assertTrue(service.getUserModel("garbage") != null); + assertTrue(service.getUserModel("GaRbAgE") != null); + assertTrue(service.getUserModel("GARBAGE") != null); // confirm reloaded test user newUser = service.getUserModel("test"); @@ -106,4 +117,117 @@ testUser = service.getUserModel("test"); assertTrue(testUser.hasRepository("newrepo1")); } + + protected void testTeams(IUserService service) { + + // confirm we have 1 team (admins) + assertEquals(1, service.getAllTeamNames().size()); + assertEquals("admins", service.getAllTeamNames().get(0)); + + // remove newrepo1 from test user + // now test user has no repositories + UserModel user = service.getUserModel("test"); + user.repositories.clear(); + service.updateUserModel(user); + user = service.getUserModel("test"); + assertEquals(0, user.repositories.size()); + assertFalse(user.canAccessRepository("newrepo1")); + assertFalse(user.canAccessRepository("NEWREPO1")); + + // create test team and add test user and newrepo1 + TeamModel team = new TeamModel("testteam"); + team.addUser("test"); + team.addRepository("newrepo1"); + service.updateTeamModel(team); + + // confirm 1 user and 1 repo + team = service.getTeamModel("testteam"); + assertEquals(1, team.repositories.size()); + assertEquals(1, team.users.size()); + + // confirm team membership + user = service.getUserModel("test"); + assertEquals(0, user.repositories.size()); + assertEquals(1, user.teams.size()); + + // confirm team access + assertTrue(team.hasRepository("newrepo1")); + assertTrue(user.hasTeamAccess("newrepo1")); + assertTrue(team.hasRepository("NEWREPO1")); + assertTrue(user.hasTeamAccess("NEWREPO1")); + + // rename the team and add new repository + team.addRepository("newrepo2"); + team.name = "testteam2"; + service.updateTeamModel("testteam", team); + + team = service.getTeamModel("testteam2"); + user = service.getUserModel("test"); + + // confirm user and team can access newrepo2 + assertEquals(2, team.repositories.size()); + assertTrue(team.hasRepository("newrepo2")); + assertTrue(user.hasTeamAccess("newrepo2")); + assertTrue(team.hasRepository("NEWREPO2")); + assertTrue(user.hasTeamAccess("NEWREPO2")); + + // delete testteam2 + service.deleteTeam("testteam2"); + team = service.getTeamModel("testteam2"); + user = service.getUserModel("test"); + + // confirm team does not exist and user can not access newrepo1 and 2 + assertEquals(null, team); + assertFalse(user.canAccessRepository("newrepo1")); + assertFalse(user.canAccessRepository("newrepo2")); + + // create new team and add it to user + // this tests the inverse team creation/team addition + team = new TeamModel("testteam"); + team.addRepository("NEWREPO1"); + team.addRepository("NEWREPO2"); + user.teams.add(team); + service.updateUserModel(user); + + // confirm the inverted team addition + user = service.getUserModel("test"); + team = service.getTeamModel("testteam"); + assertTrue(user.hasTeamAccess("newrepo1")); + assertTrue(user.hasTeamAccess("newrepo2")); + assertTrue(team.hasUser("test")); + + // drop testteam from user and add nextteam to user + team = new TeamModel("nextteam"); + team.addRepository("NEWREPO1"); + team.addRepository("NEWREPO2"); + user.teams.clear(); + user.teams.add(team); + service.updateUserModel(user); + + // confirm implicit drop + user = service.getUserModel("test"); + team = service.getTeamModel("testteam"); + assertTrue(user.hasTeamAccess("newrepo1")); + assertTrue(user.hasTeamAccess("newrepo2")); + assertFalse(team.hasUser("test")); + team = service.getTeamModel("nextteam"); + assertTrue(team.hasUser("test")); + + // delete the user and confirm team no longer has user + service.deleteUser("test"); + team = service.getTeamModel("testteam"); + assertFalse(team.hasUser("test")); + + // delete both teams + service.deleteTeam("testteam"); + service.deleteTeam("nextteam"); + + // assert we still have the admins team + assertEquals(1, service.getAllTeamNames().size()); + assertEquals("admins", service.getAllTeamNames().get(0)); + + team = service.getTeamModel("admins"); + assertEquals(1, team.mailingLists.size()); + assertTrue(team.mailingLists.contains("admins@localhost.com")); + } } \ No newline at end of file -- Gitblit v1.9.1