Package com.sonatype.security.ldap

Source Code of com.sonatype.security.ldap.LdapManagerTest

/*
* Sonatype Nexus (TM) Open Source Version
* Copyright (c) 2007-2014 Sonatype, Inc.
* All rights reserved. Includes the third-party code listed at http://links.sonatype.com/products/nexus/oss/attributions.
*
* This program and the accompanying materials are made available under the terms of the Eclipse Public License Version 1.0,
* which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html.
*
* Sonatype Nexus (TM) Professional Version is available from Sonatype, Inc. "Sonatype" and "Sonatype Nexus" are trademarks
* of Sonatype, Inc. Apache Maven is a trademark of the Apache Software Foundation. M2eclipse is a trademark of the
* Eclipse Foundation. All other trademarks are the property of their respective owners.
*/
package com.sonatype.security.ldap;

import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;

import com.sonatype.security.ldap.persist.LdapConfigurationManager;
import com.sonatype.security.ldap.realms.persist.model.CLdapServerConfiguration;

import org.sonatype.security.authentication.AuthenticationException;
import org.sonatype.security.ldap.dao.LdapUser;
import org.sonatype.security.ldap.dao.NoLdapUserRolesFoundException;
import org.sonatype.security.ldap.dao.NoSuchLdapGroupException;
import org.sonatype.security.ldap.dao.NoSuchLdapUserException;
import org.sonatype.security.ldap.realms.LdapManager;

import com.thoughtworks.xstream.XStream;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;

@Ignore("Test has not been run in a while, disabled in old surefire config")
public class LdapManagerTest
    extends AbstractLdapTestCase
{

  @Test
  public void testAuthenticate()
      throws Exception
  {
    LdapManager ldapManager = this.lookup(LdapManager.class);

    Assert.assertNotNull(ldapManager.authenticateUser("brianf", "brianf123"));

    try {
      ldapManager.authenticateUser("brianf", "junk");
      Assert.fail("Expected AuthenticationException");
    }
    catch (AuthenticationException e) {
      // expected
    }

    try {
      ldapManager.authenticateUser("junk", "junk");
      Assert.fail("Expected AuthenticationException");
    }
    catch (AuthenticationException e) {
      // expected
    }
  }

  @Test
  public void testAuthenticateTest()
      throws Exception
  {
    EnterpriseLdapManager ldapManager = (EnterpriseLdapManager) this.lookup(LdapManager.class);
    LdapConfigurationManager ldapConfiguration = this.lookup(LdapConfigurationManager.class);

    CLdapServerConfiguration ldapServer = ldapConfiguration.getLdapServerConfiguration("default");
    ldapServer = this.clone(ldapServer);

    Assert.assertNotNull(ldapManager.authenticateUserTest("brianf", "brianf123", ldapServer));

    try {
      ldapManager.authenticateUserTest("brianf", "junk", ldapServer);
      Assert.fail("Expected NoSuchUserException");
    }
    catch (AuthenticationException e) {
      // expected
    }
  }

  @Test
  public void testAuthenticateTestInvalidServer()
      throws Exception
  {
    EnterpriseLdapManager ldapManager = (EnterpriseLdapManager) this.lookup(LdapManager.class);
    LdapConfigurationManager ldapConfiguration = this.lookup(LdapConfigurationManager.class);

    CLdapServerConfiguration ldapServer = ldapConfiguration.getLdapServerConfiguration("default");
    ldapServer = this.clone(ldapServer);
    ldapServer.getConnectionInfo().setHost("INVALIDSERVERNAME");

    try {
      ldapManager.authenticateUserTest("brianf", "brianf123", ldapServer);
      Assert.fail("Expected NoSuchUserException");
    }
    catch (AuthenticationException e) {
      // expected
    }
  }

  @Test
  public void testGetAllGroups()
      throws Exception
  {
    LdapManager ldapManager = this.lookup(LdapManager.class);

    SortedSet<String> expectedGroups = new TreeSet<String>();
    // from the default
    expectedGroups.add("public");
    expectedGroups.add("releases");
    expectedGroups.add("snapshots");

    // from second
    expectedGroups.add("cilbup");
    expectedGroups.add("groupone");
    expectedGroups.add("grouptwo");

    // from backup
    expectedGroups.add("alpha");
    expectedGroups.add("beta");
    expectedGroups.add("gamma");

    SortedSet<String> actualGroups = ldapManager.getAllGroups();
    Assert.assertEquals(expectedGroups, actualGroups);
  }

  @Test
  public void testGetAllUsers()
      throws Exception
  {
    LdapManager ldapManager = this.lookup(LdapManager.class);

    List<String> userIds = new ArrayList<String>();
    userIds.add("brianf");
    userIds.add("cstamas");
    userIds.add("ehearn");
    userIds.add("jcoder");
    userIds.add("jgoodman");
    userIds.add("jvanzyl");
    userIds.add("mpowers");
    userIds.add("rwalker");
    userIds.add("toby");

    List<String> actualUserIds = new ArrayList<String>();
    SortedSet<LdapUser> users = ldapManager.getAllUsers();
    for (LdapUser ldapUser : users) {
      actualUserIds.add(ldapUser.getUsername());
    }

    Assert.assertEquals(userIds, actualUserIds);
  }

  @Test
  public void testGetGroupName()
      throws Exception
  {
    LdapManager ldapManager = this.lookup(LdapManager.class);

    Assert.assertEquals("cilbup", ldapManager.getGroupName("cilbup"));
    Assert.assertEquals("public", ldapManager.getGroupName("public"));
    Assert.assertEquals("beta", ldapManager.getGroupName("beta"));

    try {
      ldapManager.getGroupName("INVALID_GROUP_ID");
      Assert.fail("expected NoSuchLdapGroupException");
    }
    catch (NoSuchLdapGroupException e) {
      // expected
    }
  }

  @Test
  public void testGetUser()
      throws Exception
  {
    LdapManager ldapManager = this.lookup(LdapManager.class);

    LdapUser toby = ldapManager.getUser("toby");
    Assert.assertNotNull(toby);
    Assert.assertEquals("toby", toby.getUsername());
    Assert.assertEquals(toby.getUsername() + "123", toby.getPassword());
    Assert.assertEquals("Toby Stevens", toby.getRealName());
    Assert.assertEquals(2, toby.getMembership().size());

    LdapUser cstamas = ldapManager.getUser("cstamas");
    Assert.assertNotNull(cstamas);
    Assert.assertEquals("cstamas", cstamas.getUsername());
    Assert.assertEquals(cstamas.getUsername() + "123", cstamas.getPassword());
    Assert.assertEquals("Tamas Cservenak", cstamas.getRealName());
    Assert.assertEquals(2, cstamas.getMembership().size());

    LdapUser jgoodman = ldapManager.getUser("jgoodman");
    Assert.assertNotNull(jgoodman);
    Assert.assertEquals("jgoodman", jgoodman.getUsername());
    Assert.assertEquals(jgoodman.getUsername() + "123", jgoodman.getPassword());
    Assert.assertEquals("Joseph M. Goodman", jgoodman.getRealName());
    Assert.assertEquals(2, jgoodman.getMembership().size());

    try {
      ldapManager.getUser("INVALID_USER_ID");
      Assert.fail("expected NoSuchLdapUserException");
    }
    catch (NoSuchLdapUserException e) {
      // expected
    }
  }

  @Test
  public void testGetUserRoles()
      throws Exception
  {
    LdapManager ldapManager = this.lookup(LdapManager.class);

    Assert.assertEquals(2, ldapManager.getUserRoles("toby").size());
    Assert.assertEquals(2, ldapManager.getUserRoles("cstamas").size());
    Assert.assertEquals(2, ldapManager.getUserRoles("jgoodman").size());

    try {
      ldapManager.getUserRoles("INVALID_USER_ID");
      Assert.fail("expected NoLdapUserRolesFoundException");
    }
    catch (NoLdapUserRolesFoundException e) {
      // expected
    }
  }

  @Test
  public void testGetUsers()
      throws Exception
  {
    LdapManager ldapManager = this.lookup(LdapManager.class);

    List<String> userIds = new ArrayList<String>();
    userIds.add("brianf"); // 1
    userIds.add("cstamas"); // 1
    userIds.add("ehearn"); // 3
    userIds.add("jcoder");// 2
    userIds.add("jgoodman");// 3
    userIds.add("jvanzyl"); // 1
    userIds.add("mpowers");// 2
    userIds.add("rwalker");// 3
    userIds.add("toby");// 2

    // exact number

    List<String> actualUserIds = new ArrayList<String>();
    SortedSet<LdapUser> users = ldapManager.getUsers(userIds.size());
    for (LdapUser ldapUser : users) {
      actualUserIds.add(ldapUser.getUsername());
    }

    Assert.assertEquals(userIds, actualUserIds);

    // all + 1
    actualUserIds.clear();
    users = ldapManager.getUsers(userIds.size() + 1);
    for (LdapUser ldapUser : users) {
      actualUserIds.add(ldapUser.getUsername());
    }
    Assert.assertEquals(userIds, actualUserIds);

    // all -1
    userIds = new ArrayList<String>();
    actualUserIds.clear();
    userIds.add("brianf");
    userIds.add("cstamas");
    userIds.add("jvanzyl");
    userIds.add("jcoder");// 2
    userIds.add("mpowers");// 2
    userIds.add("toby");// 2

    actualUserIds.clear();
    users = ldapManager.getUsers(8);
    for (LdapUser ldapUser : users) {
      actualUserIds.add(ldapUser.getUsername());
    }
    // we should have all of the first server and then part of the second
    Assert.assertTrue("actualUserIds: " + actualUserIds + " does not contain all of: " + userIds, actualUserIds
        .containsAll(userIds));
    Assert.assertEquals(8, actualUserIds.size());

    // 3 but just the first server
    userIds = new ArrayList<String>();
    actualUserIds.clear();
    userIds.add("brianf");
    userIds.add("cstamas");
    userIds.add("jvanzyl");

    actualUserIds.clear();
    users = ldapManager.getUsers(3);
    for (LdapUser ldapUser : users) {
      actualUserIds.add(ldapUser.getUsername());
    }
    Assert.assertEquals(userIds, actualUserIds);

  }

  @Test
  public void testSearchUsers()
      throws Exception
  {
    LdapManager ldapManager = this.lookup(LdapManager.class);

    List<String> userIds = new ArrayList<String>();
    userIds.add("jcoder");
    userIds.add("jgoodman");
    userIds.add("jvanzyl");

    // exact number

    List<String> actualUserIds = new ArrayList<String>();
    SortedSet<LdapUser> users = ldapManager.searchUsers("j", null);
    for (LdapUser ldapUser : users) {
      actualUserIds.add(ldapUser.getUsername());
    }
    Assert.assertEquals(userIds, actualUserIds);

    Assert.assertEquals(9, ldapManager.searchUsers("", null).size());
    Assert.assertEquals(0, ldapManager.searchUsers("z", null).size());
  }

  private CLdapServerConfiguration clone(CLdapServerConfiguration ldapServer) {
    XStream xstream = new XStream();
    return (CLdapServerConfiguration) xstream.fromXML(xstream.toXML(ldapServer));
  }
}
TOP

Related Classes of com.sonatype.security.ldap.LdapManagerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.