use of com.zimbra.cs.account.ldap.LdapProv in project zm-mailbox by Zimbra.
the class TestLdapProvExternalLdapAuth method externalLdapAuthByDNOnAccount.
@Test
public void externalLdapAuthByDNOnAccount() throws Exception {
LdapProv ldapProv = (LdapProv) prov;
String DOMAIN_NAME = Names.makeDomainName(genDomainSegmentName() + "." + baseDomainName());
String authMech = AuthMech.ldap.name();
Map<String, Object> domainAttrs = new HashMap<String, Object>();
domainAttrs.put(Provisioning.A_zimbraAuthMech, authMech);
domainAttrs.put(Provisioning.A_zimbraAuthLdapURL, getLdapURL());
domainAttrs.put(Provisioning.A_zimbraAuthLdapStartTlsEnabled, getWantStartTLS());
Domain domain = provUtil.createDomain(DOMAIN_NAME, domainAttrs);
String ACCT_NAME_LOCALPART = Names.makeAccountNameLocalPart(genAcctNameLocalPart());
Account acct = provUtil.createAccount(ACCT_NAME_LOCALPART, domain);
String ACCT_DN = getAccountDN(acct);
Map<String, Object> acctAttrs = new HashMap<String, Object>();
acctAttrs.put(Provisioning.A_zimbraAuthLdapExternalDn, ACCT_DN);
ldapProv.modifyAttrs(acct, acctAttrs);
prov.authAccount(acct, "test123", AuthContext.Protocol.test);
provUtil.deleteAccount(acct);
}
use of com.zimbra.cs.account.ldap.LdapProv in project zm-mailbox by Zimbra.
the class TestProvAlias method testRemoveAlias_entryExist_aliasExist_aliasPointToOtherEntry.
//
// A - alias points to other existing entry
//
@Test
public void testRemoveAlias_entryExist_aliasExist_aliasPointToOtherEntry() throws Exception {
String testName = getTestName();
// create the domain
String domainName = "EE-AE-aliasPointToOtherEntry" + "." + BASE_DOMAIN_NAME;
domainName = domainName.toLowerCase();
Map<String, Object> attrs = new HashMap<String, Object>();
attrs.put(Provisioning.A_zimbraDomainType, Provisioning.DomainType.local.name());
Domain domain = prov.createDomain(domainName, attrs);
// create the account the alias points to
String acctName = getEmail("acct-1", domainName);
Account acct = prov.createAccount(acctName, PASSWORD, new HashMap<String, Object>());
// add an alias to the account
String aliasName = getEmail("alias-1", domainName);
prov.addAlias(acct, aliasName);
// create 2 DLs
String dl1Name = getEmail("dl-1", domainName);
DistributionList dl1 = prov.createDistributionList(dl1Name, new HashMap<String, Object>());
String dl2Name = getEmail("dl-2", domainName);
DistributionList dl2 = prov.createDistributionList(dl2Name, new HashMap<String, Object>());
// add the alias to the two DLs
prov.addMembers(dl1, new String[] { aliasName });
prov.addMembers(dl2, new String[] { aliasName });
// create another account
String otherAcctName = getEmail("acct-other", domainName);
Account otherAcct = prov.createAccount(otherAcctName, PASSWORD, new HashMap<String, Object>());
// and hack the other account to also contain the alias in it's mail/zimbraMailAlias attrs
// the hacked attrs should be removed after the removeAlais call
{
Map<String, Object> attributes = new HashMap<String, Object>();
// can no long do this, we now have an unique constraint on mail
// attributes.put(Provisioning.A_mail, aliasName);
attributes.put(Provisioning.A_zimbraMailAlias, aliasName);
LdapEntry ldapAccount = (LdapEntry) otherAcct;
((LdapProv) prov).getHelper().modifyEntry(ldapAccount.getDN(), attributes, (Entry) ldapAccount, LdapUsage.UNITTEST);
// make sure the attrs did get hacked in
prov.reload(otherAcct);
Set<String> values;
// values = otherAcct.getMultiAttrSet(Provisioning.A_mail);
// assertTrue(values.contains(aliasName));
values = otherAcct.getMultiAttrSet(Provisioning.A_zimbraMailAlias);
assertTrue(values.contains(aliasName));
}
// remove the alias, on the "other" account, which is *not* the target for the alias we are removing
// ensure we *do* get a NO_SUCH_ALIAS exception
boolean good = false;
try {
prov.removeAlias(otherAcct, aliasName);
} catch (ServiceException e) {
assertEquals(e.getCode(), (AccountServiceException.NO_SUCH_ALIAS));
good = true;
}
assertTrue(good);
// reload all entries
prov.reload(acct);
prov.reload(otherAcct);
prov.reload(dl1);
prov.reload(dl2);
Set<String> values;
// ensure the alias is still on the account
values = acct.getMultiAttrSet(Provisioning.A_mail);
assertTrue(values.contains(aliasName));
values = acct.getMultiAttrSet(Provisioning.A_zimbraMailAlias);
assertTrue(values.contains(aliasName));
// ensure the hacked in attrs are removed from the other account
values = otherAcct.getMultiAttrSet(Provisioning.A_mail);
assertFalse(values.contains(aliasName));
values = otherAcct.getMultiAttrSet(Provisioning.A_zimbraMailAlias);
assertFalse(values.contains(aliasName));
// ensure the alias is *not* removed from any the DLs
values = dl1.getMultiAttrSet(Provisioning.A_zimbraMailForwardingAddress);
assertTrue(values.contains(aliasName));
values = dl2.getMultiAttrSet(Provisioning.A_zimbraMailForwardingAddress);
assertTrue(values.contains(aliasName));
// ensure the alias entry is *not* removed
List<NamedEntry> aliases = searchAliasesInDomain(domain);
assertEquals(aliases.size(), 1);
assertTrue(aliases.get(0).getName().equals(aliasName));
}
use of com.zimbra.cs.account.ldap.LdapProv in project zm-mailbox by Zimbra.
the class TestProvAlias method testRemoveAlias_entryExist_aliasExist_aliasPointToNonExistEntry.
//
// A - alias points to a non-existing entry
//
@Test
public void testRemoveAlias_entryExist_aliasExist_aliasPointToNonExistEntry() throws Exception {
String testName = getTestName();
// create the domain
String domainName = "EE-AE-aliasPointToNonExistEntry" + "." + BASE_DOMAIN_NAME;
domainName = domainName.toLowerCase();
Map<String, Object> attrs = new HashMap<String, Object>();
attrs.put(Provisioning.A_zimbraDomainType, Provisioning.DomainType.local.name());
Domain domain = prov.createDomain(domainName, attrs);
// create the account
String acctName = getEmail("acct-1", domainName);
Account acct = prov.createAccount(acctName, PASSWORD, new HashMap<String, Object>());
// add an alias to the account
String aliasName = getEmail("alias-1", domainName);
prov.addAlias(acct, aliasName);
// create 2 DLs
String dl1Name = getEmail("dl-1", domainName);
DistributionList dl1 = prov.createDistributionList(dl1Name, new HashMap<String, Object>());
String dl2Name = getEmail("dl-2", domainName);
DistributionList dl2 = prov.createDistributionList(dl2Name, new HashMap<String, Object>());
// add the alias to the two DLs
prov.addMembers(dl1, new String[] { aliasName });
prov.addMembers(dl2, new String[] { aliasName });
// now, hack it so the alias points to a non-existing entry
{
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put(Provisioning.A_zimbraAliasTargetId, LdapUtil.generateUUID());
List<NamedEntry> aliases = searchAliasesInDomain(domain);
assertEquals(aliases.size(), 1);
LdapEntry ldapAlias = (LdapEntry) aliases.get(0);
((LdapProv) prov).getHelper().modifyEntry(ldapAlias.getDN(), attributes, (Entry) ldapAlias, LdapUsage.UNITTEST);
}
// remove the alias
// ensure we *do* get a NO_SUCH_ALIAS exception
boolean good = false;
try {
prov.removeAlias(acct, aliasName);
} catch (ServiceException e) {
assertEquals(e.getCode(), (AccountServiceException.NO_SUCH_ALIAS));
good = true;
}
assertTrue(good);
// reload all entries
prov.reload(acct);
prov.reload(dl1);
prov.reload(dl2);
Set<String> values;
// ensure the alias is removed from the account's mail/zimbraMailAlias attrs
values = acct.getMultiAttrSet(Provisioning.A_mail);
assertFalse(values.contains(aliasName));
values = acct.getMultiAttrSet(Provisioning.A_zimbraMailAlias);
assertFalse(values.contains(aliasName));
// ensure the alias is removed from all the DLs
values = dl1.getMultiAttrSet(Provisioning.A_zimbraMailForwardingAddress);
assertFalse(values.contains(aliasName));
values = dl2.getMultiAttrSet(Provisioning.A_zimbraMailForwardingAddress);
assertFalse(values.contains(aliasName));
// ensure the alias entry is removed
List<NamedEntry> aliases = searchAliasesInDomain(domain);
assertEquals(aliases.size(), 0);
}
use of com.zimbra.cs.account.ldap.LdapProv in project zm-mailbox by Zimbra.
the class TestObjectClass method getAttrsInOCs.
@Test
public void getAttrsInOCs() throws Exception {
LdapProv ldapProv = (LdapProv) prov;
String[] ocs = { "amavisAccount" };
Set<String> attrsInOCs = new HashSet<String>();
ldapProv.getAttrsInOCs(ocs, attrsInOCs);
assertEquals(48, attrsInOCs.size());
assertTrue(attrsInOCs.contains("amavisBlacklistSender"));
assertTrue(attrsInOCs.contains("amavisWhitelistSender"));
/*
int i = 1;
for (String attr : attrsInOCs) {
System.out.println(i++ + " " + attr);
}
*/
}
use of com.zimbra.cs.account.ldap.LdapProv in project zm-mailbox by Zimbra.
the class TestProvAlias method testRemoveAlias_entryExist_aliasNotExist.
//
// B
//
@Test
public void testRemoveAlias_entryExist_aliasNotExist() throws Exception {
String testName = getTestName();
// create the domain
String domainName = "EE-AN" + "." + BASE_DOMAIN_NAME;
domainName = domainName.toLowerCase();
Map<String, Object> attrs = new HashMap<String, Object>();
attrs.put(Provisioning.A_zimbraDomainType, Provisioning.DomainType.local.name());
Domain domain = prov.createDomain(domainName, attrs);
// create the account
String acctName = getEmail("acct-1", domainName);
Account acct = prov.createAccount(acctName, PASSWORD, new HashMap<String, Object>());
// add an alias to the account
String aliasName = getEmail("alias-1", domainName);
prov.addAlias(acct, aliasName);
// create 2 DLs
String dl1Name = getEmail("dl-1", domainName);
DistributionList dl1 = prov.createDistributionList(dl1Name, new HashMap<String, Object>());
String dl2Name = getEmail("dl-2", domainName);
DistributionList dl2 = prov.createDistributionList(dl2Name, new HashMap<String, Object>());
// add the alias to the two DLs
prov.addMembers(dl1, new String[] { aliasName });
prov.addMembers(dl2, new String[] { aliasName });
// now, hack it to delete the alias entry
{
List<NamedEntry> aliases = searchAliasesInDomain(domain);
assertEquals(aliases.size(), 1);
LdapEntry ldapAlias = (LdapEntry) aliases.get(0);
String aliasDn = ldapAlias.getDN();
((LdapProv) prov).getHelper().deleteEntry(aliasDn, LdapUsage.UNITTEST);
}
// remove the alias
// ensure we *do* get a NO_SUCH_ALIAS exception
boolean good = false;
try {
prov.removeAlias(acct, aliasName);
} catch (ServiceException e) {
assertEquals(e.getCode(), (AccountServiceException.NO_SUCH_ALIAS));
good = true;
}
assertTrue(good);
// reload all entries
prov.reload(acct);
prov.reload(dl1);
prov.reload(dl2);
Set<String> values;
// ensure the alias is removed from the account's mail/zimbraMailAlias attrs
values = acct.getMultiAttrSet(Provisioning.A_mail);
assertFalse(values.contains(aliasName));
values = acct.getMultiAttrSet(Provisioning.A_zimbraMailAlias);
assertFalse(values.contains(aliasName));
// ensure the alias is removed from all the DLs
values = dl1.getMultiAttrSet(Provisioning.A_zimbraMailForwardingAddress);
assertFalse(values.contains(aliasName));
values = dl2.getMultiAttrSet(Provisioning.A_zimbraMailForwardingAddress);
assertFalse(values.contains(aliasName));
// ensure the alias entry is removed (should have been removed when we hacked to unbind it)
List<NamedEntry> aliases = searchAliasesInDomain(domain);
assertEquals(aliases.size(), 0);
}
Aggregations