Search in sources :

Example 16 with Bug

use of com.zimbra.qa.QA.Bug in project zm-mailbox by Zimbra.

the class TestACLUserRights method testFallbackToFolderRight.

@Test
@Bug(bug = 42146)
public void testFallbackToFolderRight() throws Exception {
    // grantees
    Account allowed = createUserAccount("allowed");
    Account denied = createUserAccount("denied");
    Account noAclButHasFolderGrant = createUserAccount("noAclButHasFolderGrant");
    Account noAclAndNoFolderGrant = createUserAccount("noAclAndNoFolderGrant");
    // owner
    Account owner = createUserAccount("owner");
    ZMailbox ownerMbox = TestUtil.getZMailbox(owner.getName());
    // grant account right
    ZAce aceAllow = new ZAce(ZAce.GranteeType.usr, allowed.getId(), allowed.getName(), "invite", false, null);
    ownerMbox.grantRight(aceAllow);
    ZAce aceDeny = new ZAce(ZAce.GranteeType.usr, denied.getId(), denied.getName(), "invite", true, null);
    ownerMbox.grantRight(aceDeny);
    // grant folder right
    String folderPath = "/Calendar";
    short rights = ACL.RIGHT_READ | ACL.RIGHT_WRITE | ACL.RIGHT_INSERT | ACL.RIGHT_DELETE;
    String rightsStr = ACL.rightsToString(rights);
    ZFolder folder = ownerMbox.getFolder(folderPath);
    ownerMbox.modifyFolderGrant(folder.getId(), ZGrant.GranteeType.usr, denied.getName(), rightsStr, null);
    ownerMbox.modifyFolderGrant(folder.getId(), ZGrant.GranteeType.usr, noAclButHasFolderGrant.getName(), rightsStr, null);
    // check permission
    List<String> rightsToCheck = new ArrayList<String>();
    rightsToCheck.add("invite");
    boolean result;
    result = TestUtil.getZMailbox(allowed.getName()).checkRights(owner.getName(), rightsToCheck);
    assertTrue(result);
    result = TestUtil.getZMailbox(denied.getName()).checkRights(owner.getName(), rightsToCheck);
    assertTrue(result);
    result = TestUtil.getZMailbox(noAclButHasFolderGrant.getName()).checkRights(owner.getName(), rightsToCheck);
    assertTrue(result);
    result = TestUtil.getZMailbox(noAclAndNoFolderGrant.getName()).checkRights(owner.getName(), rightsToCheck);
    assertFalse(result);
}
Also used : ZAce(com.zimbra.client.ZAce) Account(com.zimbra.cs.account.Account) ZMailbox(com.zimbra.client.ZMailbox) ArrayList(java.util.ArrayList) ZFolder(com.zimbra.client.ZFolder) Bug(com.zimbra.qa.QA.Bug)

Example 17 with Bug

use of com.zimbra.qa.QA.Bug in project zm-mailbox by Zimbra.

the class TestSearchDirectory method bug24168.

@Test
// takes too long to run, must create at least ldap page size (1000) accounts
@Ignore
@Bug(bug = 24168)
public void bug24168() throws Exception {
    final int NUM_ACCTS = 1000;
    List results;
    String DOMAIN_NAME = ("bug24168." + TestSearchDirectory.domain.getName()).toLowerCase();
    Domain domain = provUtil.createDomain(DOMAIN_NAME);
    createAccounts(DOMAIN_NAME, NUM_ACCTS);
    System.out.flush();
    for (int i = 0; i < 10; i++) {
        System.out.flush();
        System.out.println("iteration " + (i + 1));
        System.out.flush();
        System.out.println("search all");
        System.out.flush();
        results = searchDirectory("user", true);
        System.out.println("search one");
        System.out.flush();
        results = searchDirectory("user-1000", false);
        assertEquals(1, results.size());
        Account acct = (Account) results.get(0);
        assertEquals("user-1000", acct.getName().substring(0, 9));
    }
}
Also used : Account(com.zimbra.cs.account.Account) ArrayList(java.util.ArrayList) DistributionList(com.zimbra.cs.account.DistributionList) List(java.util.List) Domain(com.zimbra.cs.account.Domain) Ignore(org.junit.Ignore) Test(org.junit.Test) Bug(com.zimbra.qa.QA.Bug)

Example 18 with Bug

use of com.zimbra.qa.QA.Bug in project zm-mailbox by Zimbra.

the class TestLdapProvDistributionList method bug42132.

@Test
@Bug(bug = 42132)
public // @Ignore  // LdapProvisioning no long allows adding self as a group 
void bug42132() throws Exception {
    Domain domain = provUtil.createDomain(genDomainSegmentName() + "." + BASE_DOMAIN_NAME);
    DistributionList group1 = provUtil.createDistributionList("group1", domain);
    DistributionList group2 = provUtil.createDistributionList("group2", domain);
    Account acct1 = provUtil.createAccount("acct1", domain);
    Account acct2 = provUtil.createAccount("acct2", domain);
    String acct1Id = acct1.getId();
    String acct2Id = acct2.getId();
    group2.addMembers(new String[] { group1.getName() });
    // group2.addMembers(new String[]{group2.getName()}); // no longer allowed in LdapProvisioning
    Map<String, Object> attrs = Maps.newHashMap();
    attrs.put("+" + Provisioning.A_zimbraMailForwardingAddress, group2.getName());
    // modifyAttrs directly
    prov.modifyAttrs(group2, attrs);
    group1.addMembers(new String[] { acct1.getName(), acct2.getName() });
    Set<String> expectedAllGroups = new HashSet<String>();
    Set<String> expectedDirectGroups = new HashSet<String>();
    expectedAllGroups.add(group1.getName());
    expectedAllGroups.add(group2.getName());
    expectedDirectGroups.add(group1.getName());
    verifyMembership(acct1Id, expectedAllGroups, expectedDirectGroups);
    verifyMembership(acct2Id, expectedAllGroups, expectedDirectGroups);
}
Also used : Account(com.zimbra.cs.account.Account) Domain(com.zimbra.cs.account.Domain) DistributionList(com.zimbra.cs.account.DistributionList) HashSet(java.util.HashSet) Bug(com.zimbra.qa.QA.Bug)

Example 19 with Bug

use of com.zimbra.qa.QA.Bug in project zm-mailbox by Zimbra.

the class TestProvAlias method testBug41884.

/*
     * To repro:
     *    - create two domains
     *      zmporv -l cd main.com
     *      zmporv -l cd other.com
     *      
     *    - create an account in the main domain
     *      zmprov -l ca junk@main.com test123
     *      
     *    - add two aliases to the account, one in the same domain, the other in the other domain
     *      zmprov -l aaa junk@main.com phoebe@main.com  (this is required to repro)
     *      zmprov -l aaa junk@main.com phoebe@other.com (can be skipped - A)
     *      
     *    - remove the alias in the other domain
     *      zmprov -l raa junk@main.com phoebe@other.com (can be skipped if A is skipped) 
     *      
     *    - now, rename the account to the alias just removed
     *      zmprov -v -l ra junk@main.com phoebe@other.com 
[] WARN: unable to move alias from uid=phoebe,ou=people,dc=main,dc=com to uid=phoebe,ou=people,dc=other,dc=com
javax.naming.NameAlreadyBoundException: [LDAP: error code 68 - Entry Already Exists]; remaining name 'uid=phoebe,ou=people,dc=main,dc=com'
        at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3012)
        at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2963)
        at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2769)
        at com.sun.jndi.ldap.LdapCtx.c_rename(LdapCtx.java:699)
        at com.sun.jndi.toolkit.ctx.ComponentContext.p_rename(ComponentContext.java:693)
        at com.sun.jndi.toolkit.ctx.PartialCompositeContext.rename(PartialCompositeContext.java:251)
        at javax.naming.InitialContext.rename(InitialContext.java:389)
        at com.zimbra.cs.account.ldap.ZimbraLdapContext.renameEntry(ZimbraLdapContext.java:756)
        at com.zimbra.cs.account.ldap.LdapProvisioning.moveAliases(LdapProvisioning.java:5398)
        at com.zimbra.cs.account.ldap.LdapProvisioning.renameAccount(LdapProvisioning.java:2297)
        at com.zimbra.cs.account.ProvUtil.execute(ProvUtil.java:934)
        at com.zimbra.cs.account.ProvUtil.main(ProvUtil.java:2810)
        
        This only happens if 
        - domain for the account is also changed for the renameAccount
        - when the account is being renamed, there is an alias named as:
          {same localpart as the account's new localpart}@{same domain as the account's old domain}
     
        This is because when we do validation to see if there is any clash with new alias names, 
        the account has not been renamed yet, therefore it is not caught.
        
        After the fix, it should throw ACCOUNT_EXISTS (com.zimbra.cs.account.AccountServiceException: email address already exists: phoebe@other.com)
        i.e. the renameAccount should not be allowed
      */
@Test
@Bug(bug = 41884)
public void testBug41884() throws Exception {
    String OLD_DOMAIN_NAME = "main." + BASE_DOMAIN_NAME;
    String NEW_DOMAIN_NAME = "other." + BASE_DOMAIN_NAME;
    String OLD_LOCALPART = "junk";
    String NEW_LOCALPART = "phoebe";
    String OLD_ACCT_NAME = OLD_LOCALPART + "@" + OLD_DOMAIN_NAME;
    String NEW_ACCT_NAME = NEW_LOCALPART + "@" + NEW_DOMAIN_NAME;
    String ALIAS_NAME = NEW_LOCALPART + "@" + OLD_DOMAIN_NAME;
    Domain oldDomain = prov.createDomain(OLD_DOMAIN_NAME, new HashMap<String, Object>());
    Domain newDomain = prov.createDomain(NEW_DOMAIN_NAME, new HashMap<String, Object>());
    Account acct = prov.createAccount(OLD_ACCT_NAME, "test123", new HashMap<String, Object>());
    prov.addAlias(acct, ALIAS_NAME);
    boolean good = false;
    try {
        prov.renameAccount(acct.getId(), NEW_ACCT_NAME);
    } catch (ServiceException e) {
        if (AccountServiceException.ACCOUNT_EXISTS.equals(e.getCode())) {
            good = true;
        }
    }
    assertTrue(good);
}
Also used : Account(com.zimbra.cs.account.Account) AccountServiceException(com.zimbra.cs.account.AccountServiceException) ServiceException(com.zimbra.common.service.ServiceException) Domain(com.zimbra.cs.account.Domain) Bug(com.zimbra.qa.QA.Bug)

Example 20 with Bug

use of com.zimbra.qa.QA.Bug in project zm-mailbox by Zimbra.

the class TestLdapZLdapFilter method bug64260.

@Test
@Bug(bug = 64260)
public void bug64260() throws Exception {
    String badStringFilter = "ad:(&(|(displayName=*%s*)(cn=*%s*)(sn=*%s*)(givenName=*%s*)(mail=*%s*))(!(msExchHideFromAddressLists=TRUE))(!(displayName=*(EMC)))(mailnickname=*)(|(&(objectCategory=person)(objectClass=user)(!(homeMDB=*))(!(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=user)(|(homeMDB=*)(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=contact))(objectCategory=group)(objectCategory=publicFolder)(objectCategory=msExchDynamicDistributionList)))";
    ZLdapFilter filter;
    boolean caughtException = false;
    try {
        filter = filterDactory.fromFilterString(FilterId.UNITTEST, badStringFilter);
    } catch (LdapException e) {
        // e.printStackTrace();
        if (LdapException.INVALID_SEARCH_FILTER.equals(e.getCode())) {
            caughtException = true;
        }
    }
    assertTrue(caughtException);
    String goodStringFilter = "(&(|(displayName=*)(cn=*)(sn=*)(givenName=*)(mail=*))(!(msExchHideFromAddressLists=TRUE))(!(displayName=*\\28EMC\\29))(mailnickname=*)(|(&(objectCategory=person)(objectClass=user)(!(homeMDB=*))(!(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=user)(|(homeMDB=*)(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=contact))(objectCategory=group)(objectCategory=publicFolder)(objectCategory=msExchDynamicDistributionList)))";
    // String goodStringFilter = "(displayName=*\\28EMC\\29)";
    filter = filterDactory.fromFilterString(FilterId.UNITTEST, goodStringFilter);
// System.out.println(filter.toFilterString());
/*
DEV:
zmprov mcf -zimbraGalLdapFilterDef 'zimbraAccountSync:(&(|(displayName=*%s*)(cn=*%s*)(sn=*%s*)(gn=*%s*)(zimbraPhoneticFirstName=*%s*)(zimbraPhoneticLastName=*%s*)(mail=*%s*)(zimbraMailDeliveryAddress=*%s*)(zimbraMailAlias=*%s*))(|(objectclass=zimbraAccount)(objectclass=zimbraDistributionList))(!(objectclass=zimbraCalendarResource)))'
zmprov mcf +zimbraGalLdapFilterDef 'zimbraAccountSync:(&(|(displayName=*%s*)(cn=*%s*)(sn=*%s*)(gn=*%s*)(zimbraPhoneticFirstName=*%s*)(zimbraPhoneticLastName=*%s*)(mail=*%s*)(zimbraMailDeliveryAddress=*%s*)(zimbraMailAlias=*%s*))(|(objectclass=zimbraAccount)(objectclass=zimbraDistributionList))(!(objectclass=zimbraCalendarResource))(!(displayName=*\28EMC\29)))'


DF:
zmprov mds galsync@zimbra.com VMware -zimbraGalSyncLdapFilter '(&(|(displayName=*%s*)(cn=*%s*)(sn=*%s*)(givenName=*%s*)(mail=*%s*))(!(msExchHideFromAddressLists=TRUE))(!(displayName=*EMC))(mailnickname=*)(|(&(objectCategory=person)(objectClass=user)(!(homeMDB=*))(!(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=user)(|(homeMDB=*)(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=contact))(objectCategory=group)(objectCategory=publicFolder)(objectCategory=msExchDynamicDistributionList)))'
zmprov mds galsync@zimbra.com VMware +zimbraGalSyncLdapFilter '(&(|(displayName=*%s*)(cn=*%s*)(sn=*%s*)(givenName=*%s*)(mail=*%s*))(!(msExchHideFromAddressLists=TRUE))(!(displayName=*\28EMC\29))(mailnickname=*)(|(&(objectCategory=person)(objectClass=user)(!(homeMDB=*))(!(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=user)(|(homeMDB=*)(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=contact))(objectCategory=group)(objectCategory=publicFolder)(objectCategory=msExchDynamicDistributionList)))'

zmprov mcf -zimbraGalLdapFilterDef 'ad:(&(|(displayName=*%s*)(cn=*%s*)(sn=*%s*)(givenName=*%s*)(mail=*%s*))(!(msExchHideFromAddressLists=TRUE))(!(displayName=*EMC))(mailnickname=*)(|(&(objectCategory=person)(objectClass=user)(!(homeMDB=*))(!(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=user)(|(homeMDB=*)(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=contact))(objectCategory=group)(objectCategory=publicFolder)(objectCategory=msExchDynamicDistributionList)))'
zmprov mcf +zimbraGalLdapFilterDef 'ad:(&(|(displayName=*%s*)(cn=*%s*)(sn=*%s*)(givenName=*%s*)(mail=*%s*))(!(msExchHideFromAddressLists=TRUE))(!(displayName=*\28EMC\29))(mailnickname=*)(|(&(objectCategory=person)(objectClass=user)(!(homeMDB=*))(!(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=user)(|(homeMDB=*)(msExchHomeServerName=*)))(&(objectCategory=person)(objectClass=contact))(objectCategory=group)(objectCategory=publicFolder)(objectCategory=msExchDynamicDistributionList)))'
         */
}
Also used : ZLdapFilter(com.zimbra.cs.ldap.ZLdapFilter) LdapException(com.zimbra.cs.ldap.LdapException) Bug(com.zimbra.qa.QA.Bug)

Aggregations

Bug (com.zimbra.qa.QA.Bug)20 Account (com.zimbra.cs.account.Account)12 Test (org.junit.Test)12 SoapTransport (com.zimbra.common.soap.SoapTransport)9 Group (com.zimbra.cs.account.Group)8 ServiceException (com.zimbra.common.service.ServiceException)6 AccountServiceException (com.zimbra.cs.account.AccountServiceException)6 Domain (com.zimbra.cs.account.Domain)6 ProvTest (com.zimbra.qa.unittest.prov.ProvTest)3 DistributionList (com.zimbra.cs.account.DistributionList)2 NamedEntry (com.zimbra.cs.account.NamedEntry)2 SearchDirectoryOptions (com.zimbra.cs.account.SearchDirectoryOptions)2 LdapDomain (com.zimbra.cs.account.ldap.entry.LdapDomain)2 DistributionListActionRequest (com.zimbra.soap.account.message.DistributionListActionRequest)2 GetDistributionListMembersRequest (com.zimbra.soap.account.message.GetDistributionListMembersRequest)2 GetDistributionListMembersResponse (com.zimbra.soap.account.message.GetDistributionListMembersResponse)2 GetDistributionListRequest (com.zimbra.soap.account.message.GetDistributionListRequest)2 DistributionListAction (com.zimbra.soap.account.type.DistributionListAction)2 ArrayList (java.util.ArrayList)2 ZAce (com.zimbra.client.ZAce)1