@Test
  public void testConfigure() throws InvalidConfigurationException, NamingException {
    try {
      ldapContextFactory.getSystemLdapContext();
      Assert.fail("Expected NamingException");
    } catch (NamingException e) {
      // expected
    }

    // now configure the relam
    CConnectionInfo connectionInfo = new CConnectionInfo();
    connectionInfo.setHost("localhost");
    connectionInfo.setPort(12345);
    connectionInfo.setAuthScheme("none");
    connectionInfo.setSearchBase("o=sonatype");
    connectionInfo.setProtocol("ldap");

    ldapConfig.updateConnectionInfo(connectionInfo);
    ldapConfig.save();

    // now we should be able to get a valid configuration
    ldapContextFactory.getSystemLdapContext();
  }
  @SuppressWarnings("unchecked")
  public void validateLdapConfig(LdapConnectionInfoDTO connInfo) throws Exception {
    CConnectionInfo fileConfig = LdapConfigurationUtil.getConfiguration().getConnectionInfo();
    Assert.assertEquals(connInfo.getAuthScheme(), fileConfig.getAuthScheme());
    Assert.assertEquals(connInfo.getHost(), fileConfig.getHost());
    Assert.assertEquals(connInfo.getPort(), fileConfig.getPort());
    Assert.assertEquals(connInfo.getProtocol(), fileConfig.getProtocol());
    Assert.assertEquals(connInfo.getRealm(), fileConfig.getRealm());
    Assert.assertEquals(connInfo.getSearchBase(), fileConfig.getSearchBase());
    Assert.assertEquals(connInfo.getSystemUsername(), fileConfig.getSystemUsername());

    // if the expectedPassword == null then the actual should be null
    if (connInfo.getSystemPassword() == null) {
      Assert.assertNull(fileConfig.getSystemPassword());
    } else {
      // make sure its not clear text
      Assert.assertNotSame(connInfo.getSystemPassword(), fileConfig.getSystemPassword());
      Assert.assertTrue(fileConfig.getSystemPassword().length() > 0);
    }
  }