Alfred Schmid
2014-02-21 4e8d63d5a6200ce7958125593f269eeef5a4ff9b
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.
1 files added
1 files modified
112 ■■■■ changed files
src/test/java/com/gitblit/service/LdapSyncServiceTest.java 71 ●●●●● patch | view | raw | blame | history
src/test/java/com/gitblit/tests/LdapAuthenticationTest.java 41 ●●●● patch | view | raw | blame | history
src/test/java/com/gitblit/service/LdapSyncServiceTest.java
New file
@@ -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<String, Object> backingMap = new HashMap<String, Object>();
        MemorySettings ms = new MemorySettings(backingMap);
        return ms;
    }
}
src/test/java/com/gitblit/tests/LdapAuthenticationTest.java
@@ -30,6 +30,7 @@
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 @@
        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 @@
    private MemorySettings getSettings() {
        Map<String, Object> backingMap = new HashMap<String, Object>();
        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 @@
    @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 @@
    @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 @@
    @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 @@
    @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());