From 4e8d63d5a6200ce7958125593f269eeef5a4ff9b Mon Sep 17 00:00:00 2001 From: Alfred Schmid Date: Fri, 21 Feb 2014 08:47:11 +0100 Subject: [PATCH] Fixed and introduced tests for synching ldap users and groups. Using new settings key realm.ldap.synchronize Switched from key String to Keys class. To avoid letting tests pass with hardcoded keys wich doesn't exist anymore. Now on Key Refactorings the test gets compile error again. Test the isReady behavior from LdapSyncService. --- .../gitblit/service/LdapSyncServiceTest.java | 71 +++++++++++++++++++ .../gitblit/tests/LdapAuthenticationTest.java | 41 +++++------ 2 files changed, 90 insertions(+), 22 deletions(-) create mode 100644 src/test/java/com/gitblit/service/LdapSyncServiceTest.java diff --git a/src/test/java/com/gitblit/service/LdapSyncServiceTest.java b/src/test/java/com/gitblit/service/LdapSyncServiceTest.java new file mode 100644 index 00000000..434043cb --- /dev/null +++ b/src/test/java/com/gitblit/service/LdapSyncServiceTest.java @@ -0,0 +1,71 @@ +/* + * Copyright 2014 gitblit.com. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gitblit.service; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.Before; +import org.junit.Test; + +import com.gitblit.Keys; +import com.gitblit.tests.mock.MemorySettings; + +/** + * A behavior driven test for the LdapSyncService with in-memory Settings. + * + * @author Alfred Schmid + * + */ +public class LdapSyncServiceTest { + + private MemorySettings settings; + + @Before + public void init() throws Exception { + settings = getSettings(); + } + + @Test + public void defaultOfUnAvailableLdapSynchronizeKeyIsLdapServiceNotReady() { + LdapSyncService ldapSyncService = new LdapSyncService(settings, null); + assertFalse("When key " + Keys.realm.ldap.synchronize + " is not configured ldap sync is not ready." , ldapSyncService.isReady()); + } + + @Test + public void whenLdapSynchronizeKeyIsFalseLdapServiceNotReady() { + LdapSyncService ldapSyncService = new LdapSyncService(settings, null); + settings.put(Keys.realm.ldap.synchronize, "false"); + assertFalse("When key " + Keys.realm.ldap.synchronize + " is configured with value false ldap sync is not ready." , ldapSyncService.isReady()); + } + + @Test + public void whenLdapSynchronizeKeyIsTrueLdapServiceIsReady() { + LdapSyncService ldapSyncService = new LdapSyncService(settings, null); + settings.put(Keys.realm.ldap.synchronize, "true"); + assertTrue("When key " + Keys.realm.ldap.synchronize + " is configured with value true ldap sync is not ready." , ldapSyncService.isReady()); + } + + private MemorySettings getSettings() { + Map backingMap = new HashMap(); + MemorySettings ms = new MemorySettings(backingMap); + return ms; + } + +} diff --git a/src/test/java/com/gitblit/tests/LdapAuthenticationTest.java b/src/test/java/com/gitblit/tests/LdapAuthenticationTest.java index b4f7e6a1..e4dc2db2 100644 --- a/src/test/java/com/gitblit/tests/LdapAuthenticationTest.java +++ b/src/test/java/com/gitblit/tests/LdapAuthenticationTest.java @@ -30,6 +30,7 @@ import org.junit.rules.TemporaryFolder; import com.gitblit.Constants.AccountType; import com.gitblit.IStoredSettings; +import com.gitblit.Keys; import com.gitblit.auth.LdapAuthProvider; import com.gitblit.manager.IUserManager; import com.gitblit.manager.RuntimeManager; @@ -90,7 +91,7 @@ public class LdapAuthenticationTest extends GitblitUnitTest { ldap = newLdapAuthentication(settings); } - public LdapAuthProvider newLdapAuthentication(IStoredSettings settings) { + private LdapAuthProvider newLdapAuthentication(IStoredSettings settings) { RuntimeManager runtime = new RuntimeManager(settings, GitBlitSuite.BASEFOLDER).start(); userManager = new UserManager(runtime).start(); LdapAuthProvider ldap = new LdapAuthProvider(); @@ -100,21 +101,21 @@ public class LdapAuthenticationTest extends GitblitUnitTest { private MemorySettings getSettings() { Map backingMap = new HashMap(); - backingMap.put("realm.userService", usersConf.getAbsolutePath()); - backingMap.put("realm.ldap.server", "ldap://localhost:" + ldapPort); - backingMap.put("realm.ldap.domain", ""); - backingMap.put("realm.ldap.username", "cn=Directory Manager"); - backingMap.put("realm.ldap.password", "password"); - backingMap.put("realm.ldap.backingUserService", "users.conf"); - backingMap.put("realm.ldap.maintainTeams", "true"); - backingMap.put("realm.ldap.accountBase", "OU=Users,OU=UserControl,OU=MyOrganization,DC=MyDomain"); - backingMap.put("realm.ldap.accountPattern", "(&(objectClass=person)(sAMAccountName=${username}))"); - backingMap.put("realm.ldap.groupBase", "OU=Groups,OU=UserControl,OU=MyOrganization,DC=MyDomain"); - backingMap.put("realm.ldap.groupPattern", "(&(objectClass=group)(member=${dn}))"); - backingMap.put("realm.ldap.admins", "UserThree @Git_Admins \"@Git Admins\""); - backingMap.put("realm.ldap.displayName", "displayName"); - backingMap.put("realm.ldap.email", "email"); - backingMap.put("realm.ldap.uid", "sAMAccountName"); + backingMap.put(Keys.realm.userService, usersConf.getAbsolutePath()); + backingMap.put(Keys.realm.ldap.server, "ldap://localhost:" + ldapPort); +// backingMap.put(Keys.realm.ldap.domain, ""); + backingMap.put(Keys.realm.ldap.username, "cn=Directory Manager"); + backingMap.put(Keys.realm.ldap.password, "password"); +// backingMap.put(Keys.realm.ldap.backingUserService, "users.conf"); + backingMap.put(Keys.realm.ldap.maintainTeams, "true"); + backingMap.put(Keys.realm.ldap.accountBase, "OU=Users,OU=UserControl,OU=MyOrganization,DC=MyDomain"); + backingMap.put(Keys.realm.ldap.accountPattern, "(&(objectClass=person)(sAMAccountName=${username}))"); + backingMap.put(Keys.realm.ldap.groupBase, "OU=Groups,OU=UserControl,OU=MyOrganization,DC=MyDomain"); + backingMap.put(Keys.realm.ldap.groupMemberPattern, "(&(objectClass=group)(member=${dn}))"); + backingMap.put(Keys.realm.ldap.admins, "UserThree @Git_Admins \"@Git Admins\""); + backingMap.put(Keys.realm.ldap.displayName, "displayName"); + backingMap.put(Keys.realm.ldap.email, "email"); + backingMap.put(Keys.realm.ldap.uid, "sAMAccountName"); MemorySettings ms = new MemorySettings(backingMap); return ms; @@ -194,7 +195,6 @@ public class LdapAuthenticationTest extends GitblitUnitTest { @Test public void addingUserInLdapShouldNotUpdateGitBlitUsersAndGroups() throws Exception { - settings.put("realm.ldap.ldapCachePeriod", "0 MINUTES"); ds.addEntries(LDIFReader.readEntries(RESOURCE_DIR + "adduser.ldif")); ldap.sync(); assertEquals("Number of ldap users in gitblit user model", 5, countLdapUsersInUserManager()); @@ -202,8 +202,7 @@ public class LdapAuthenticationTest extends GitblitUnitTest { @Test public void addingUserInLdapShouldUpdateGitBlitUsersAndGroups() throws Exception { - settings.put("realm.ldap.synchronizeUsers.enable", "true"); - settings.put("realm.ldap.ldapCachePeriod", "0 MINUTES"); + settings.put(Keys.realm.ldap.synchronize, "true"); ds.addEntries(LDIFReader.readEntries(RESOURCE_DIR + "adduser.ldif")); ldap.sync(); assertEquals("Number of ldap users in gitblit user model", 6, countLdapUsersInUserManager()); @@ -211,7 +210,6 @@ public class LdapAuthenticationTest extends GitblitUnitTest { @Test public void addingGroupsInLdapShouldNotUpdateGitBlitUsersAndGroups() throws Exception { - settings.put("realm.ldap.ldapCachePeriod", "0 MINUTES"); ds.addEntries(LDIFReader.readEntries(RESOURCE_DIR + "addgroup.ldif")); ldap.sync(); assertEquals("Number of ldap groups in gitblit team model", 0, countLdapTeamsInUserManager()); @@ -219,8 +217,7 @@ public class LdapAuthenticationTest extends GitblitUnitTest { @Test public void addingGroupsInLdapShouldUpdateGitBlitUsersAndGroups() throws Exception { - settings.put("realm.ldap.synchronizeUsers.enable", "true"); - settings.put("realm.ldap.ldapCachePeriod", "0 MINUTES"); + settings.put(Keys.realm.ldap.synchronize, "true"); ds.addEntries(LDIFReader.readEntries(RESOURCE_DIR + "addgroup.ldif")); ldap.sync(); assertEquals("Number of ldap groups in gitblit team model", 1, countLdapTeamsInUserManager()); -- 2.39.5