Search in sources :

Example 71 with Group

use of com.zimbra.cs.account.Group in project zm-mailbox by Zimbra.

the class TestDelegatedDL method createDistributionList.

@Test
public void createDistributionList() throws Exception {
    String dlName = getAddress(genGroupNameLocalPart());
    SoapTransport transport = authUser(USER_CREATOR);
    CreateDistributionListRequest req = new CreateDistributionListRequest(dlName, null, DYNAMIC);
    List<KeyValuePair> attrsCreate = Lists.newArrayList(new KeyValuePair(Provisioning.A_zimbraDistributionListSubscriptionPolicy, ZAttrProvisioning.DistributionListSubscriptionPolicy.ACCEPT.name()));
    req.setKeyValuePairs(attrsCreate);
    CreateDistributionListResponse resp = invokeJaxb(transport, req);
    DLInfo dlInfo = resp.getDl();
    String dlId = dlInfo.getId();
    Group group = prov.getGroup(Key.DistributionListBy.name, dlName);
    assertNotNull(group);
    assertEquals(group.getId(), dlId);
    boolean seenExpectedMail = false;
    boolean seenExpectedSubsPolicy = false;
    List<? extends KeyValuePair> attrs = dlInfo.getAttrList();
    for (KeyValuePair attr : attrs) {
        String name = attr.getKey();
        String value = attr.getValue();
        if (Provisioning.A_mail.equals(name)) {
            assertEquals(group.getName(), value);
            seenExpectedMail = true;
        }
        if (Provisioning.A_zimbraDistributionListSubscriptionPolicy.equals(name)) {
            assertEquals(ZAttrProvisioning.DistributionListSubscriptionPolicy.ACCEPT.name(), value);
            seenExpectedSubsPolicy = true;
        }
    }
    assertTrue(seenExpectedMail);
    assertTrue(seenExpectedSubsPolicy);
}
Also used : Group(com.zimbra.cs.account.Group) CreateDistributionListRequest(com.zimbra.soap.account.message.CreateDistributionListRequest) KeyValuePair(com.zimbra.soap.type.KeyValuePair) CreateDistributionListResponse(com.zimbra.soap.account.message.CreateDistributionListResponse) DLInfo(com.zimbra.soap.account.type.DLInfo) SoapTransport(com.zimbra.common.soap.SoapTransport) Test(org.junit.Test)

Example 72 with Group

use of com.zimbra.cs.account.Group in project zm-mailbox by Zimbra.

the class TestDelegatedDL method ownDistListRightTarget.

/*
     * verify the ownDistList right can only be granted on group target,
     * not domain, not globalgrant
     */
@Test
public void ownDistListRightTarget() throws Exception {
    Group group = provUtil.createGroup(genGroupNameLocalPart("group"), domain, DYNAMIC);
    Account acct = provUtil.createAccount(genAcctNameLocalPart("acct"), domain);
    String right = Group.GroupOwner.GROUP_OWNER_RIGHT.getName();
    // grant on group should work
    prov.grantRight(TargetType.dl.getCode(), TargetBy.name, group.getName(), GranteeType.GT_USER.getCode(), GranteeBy.name, acct.getName(), null, right, null);
    prov.checkRight(TargetType.dl.getCode(), TargetBy.name, group.getName(), GranteeBy.name, acct.getName(), right, null, null);
    // grant on domain, should fail
    boolean cauchtException = false;
    try {
        prov.grantRight(TargetType.domain.getCode(), TargetBy.name, domain.getName(), GranteeType.GT_USER.getCode(), GranteeBy.name, acct.getName(), null, right, null);
    } catch (ServiceException e) {
        if (ServiceException.INVALID_REQUEST.equals(e.getCode())) {
            cauchtException = true;
        }
    }
    assertTrue(cauchtException);
    // grant on globalgrant, should fail
    cauchtException = false;
    try {
        prov.grantRight(TargetType.global.getCode(), null, null, GranteeType.GT_USER.getCode(), GranteeBy.name, acct.getName(), null, right, null);
    } catch (ServiceException e) {
        if (ServiceException.INVALID_REQUEST.equals(e.getCode())) {
            cauchtException = true;
        }
    }
    assertTrue(cauchtException);
}
Also used : Group(com.zimbra.cs.account.Group) Account(com.zimbra.cs.account.Account) AccountServiceException(com.zimbra.cs.account.AccountServiceException) ServiceException(com.zimbra.common.service.ServiceException) Test(org.junit.Test)

Example 73 with Group

use of com.zimbra.cs.account.Group in project zm-mailbox by Zimbra.

the class TestDelegatedDL method getDistributionListByGlobalAdmin.

/*
     * verify and request is allowed, but isOwner is false
     */
@Test
public void getDistributionListByGlobalAdmin() throws Exception {
    SoapTransport transport = authAdmin(ADMIN);
    GetDistributionListRequest req = new GetDistributionListRequest(DistributionListSelector.fromName(DL_NAME), Boolean.TRUE);
    GetDistributionListResponse resp = invokeJaxb(transport, req);
    DistributionListInfo dlInfo = resp.getDl();
    assertFalse(dlInfo.isOwner());
    String dlId = dlInfo.getId();
    Group group = prov.getGroup(Key.DistributionListBy.name, DL_NAME);
    assertNotNull(group);
    assertEquals(group.getId(), dlId);
}
Also used : GetDistributionListResponse(com.zimbra.soap.account.message.GetDistributionListResponse) Group(com.zimbra.cs.account.Group) DistributionListInfo(com.zimbra.soap.account.type.DistributionListInfo) GetDistributionListRequest(com.zimbra.soap.account.message.GetDistributionListRequest) SoapTransport(com.zimbra.common.soap.SoapTransport) Test(org.junit.Test)

Example 74 with Group

use of com.zimbra.cs.account.Group in project zm-mailbox by Zimbra.

the class TestDelegatedDL method createGroupAndAddOwner.

private static Group createGroupAndAddOwner(String groupName, Multimap<String, String> attrs, String ownerName) throws Exception {
    Group group = prov.getGroup(Key.DistributionListBy.name, groupName);
    assertNull(group);
    SoapTransport transport = authUser(USER_CREATOR);
    CreateDistributionListRequest req = new CreateDistributionListRequest(groupName, KeyValuePair.fromMultimap(attrs), DYNAMIC);
    CreateDistributionListResponse resp = invokeJaxb(transport, req);
    group = prov.getGroup(Key.DistributionListBy.name, groupName);
    assertNotNull(group);
    assertEquals(groupName, group.getName());
    assertNotNull(group.getAttr(Provisioning.A_zimbraMailHost));
    /*
         * USER_CREATOR is automatically an owner now.
         */
    // add ownerName as an owner
    addOwner(transport, groupName, ownerName);
    // remove USER_CREATOR from the owner list
    removeOwner(transport, groupName, USER_CREATOR);
    return group;
}
Also used : Group(com.zimbra.cs.account.Group) CreateDistributionListRequest(com.zimbra.soap.account.message.CreateDistributionListRequest) CreateDistributionListResponse(com.zimbra.soap.account.message.CreateDistributionListResponse) SoapTransport(com.zimbra.common.soap.SoapTransport)

Example 75 with Group

use of com.zimbra.cs.account.Group in project zm-mailbox by Zimbra.

the class TestDelegatedDL method distributionListActionGrantRevokeSetRights.

@Test
public void distributionListActionGrantRevokeSetRights() throws Exception {
    String GROUP_NAME = getAddress(genGroupNameLocalPart("group"));
    Group group = createGroupAndAddOwner(GROUP_NAME);
    String right1 = Right.RT_sendToDistList;
    String right2 = Right.RT_viewDistList;
    Account grantee1 = provUtil.createAccount(genAcctNameLocalPart("1"), domain);
    Account grantee2 = provUtil.createAccount(genAcctNameLocalPart("2"), domain);
    Group groupGrantee1 = provUtil.createGroup(genGroupNameLocalPart("3"), domain, DYNAMIC);
    // test grantees specified as "email" grantee type
    Account grantee3 = provUtil.createAccount(genAcctNameLocalPart("4"), domain);
    Account grantee4 = provUtil.createAccount(genAcctNameLocalPart("5"), domain);
    Group groupGrantee2 = provUtil.createGroup(genGroupNameLocalPart("6"), domain, DYNAMIC);
    String GUEST = "user@external.com";
    SoapTransport transport = authUser(USER_OWNER);
    //
    // grantRights
    //
    DistributionListAction action = new DistributionListAction(Operation.grantRights);
    DistributionListActionRequest req = new DistributionListActionRequest(DistributionListSelector.fromName(GROUP_NAME), action);
    DistributionListRightSpec dlRight1 = new DistributionListRightSpec(right1);
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.usr, DistributionListGranteeBy.name, grantee1.getName()));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.usr, DistributionListGranteeBy.name, grantee2.getName()));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.grp, DistributionListGranteeBy.name, groupGrantee1.getName()));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.all, null, null));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.pub, null, null));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.email, DistributionListGranteeBy.name, grantee3.getName()));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.email, DistributionListGranteeBy.name, grantee4.getName()));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.email, DistributionListGranteeBy.name, groupGrantee2.getName()));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.email, DistributionListGranteeBy.name, GUEST));
    DistributionListRightSpec dlRight2 = new DistributionListRightSpec(right2);
    dlRight2.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.usr, DistributionListGranteeBy.name, grantee1.getName()));
    dlRight2.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.usr, DistributionListGranteeBy.name, grantee2.getName()));
    action.addRight(dlRight1);
    action.addRight(dlRight2);
    DistributionListActionResponse resp = invokeJaxb(transport, req);
    //
    // verify rights are granted
    //
    RightCommand.Grants grants = prov.getGrants(TargetType.dl.name(), TargetBy.id, group.getId(), null, null, null, true);
    Set<String> right1GranteeNames = Sets.newHashSet();
    Set<String> right2GranteeNames = Sets.newHashSet();
    for (RightCommand.ACE ace : grants.getACEs()) {
        String right = ace.right();
        if (right1.equals(right)) {
            right1GranteeNames.add(Verify.makeResultStr(ace.granteeType(), ace.granteeName()));
        } else if (right2.equals(right)) {
            right2GranteeNames.add(Verify.makeResultStr(ace.granteeType(), ace.granteeName()));
        }
    }
    Verify.verifyEquals(Sets.newHashSet(Verify.makeResultStr(GranteeType.GT_USER.getCode(), grantee1.getName()), Verify.makeResultStr(GranteeType.GT_USER.getCode(), grantee2.getName()), Verify.makeResultStr(GranteeType.GT_GROUP.getCode(), groupGrantee1.getName()), Verify.makeResultStr(GranteeType.GT_AUTHUSER.getCode(), ""), Verify.makeResultStr(GranteeType.GT_PUBLIC.getCode(), ""), Verify.makeResultStr(GranteeType.GT_USER.getCode(), grantee3.getName()), Verify.makeResultStr(GranteeType.GT_USER.getCode(), grantee4.getName()), Verify.makeResultStr(GranteeType.GT_GROUP.getCode(), groupGrantee2.getName()), Verify.makeResultStr(GranteeType.GT_GUEST.getCode(), GUEST)), right1GranteeNames);
    Verify.verifyEquals(Sets.newHashSet(Verify.makeResultStr(GranteeType.GT_USER.getCode(), grantee1.getName()), Verify.makeResultStr(GranteeType.GT_USER.getCode(), grantee2.getName())), right2GranteeNames);
    //
    // setRights
    //
    action = new DistributionListAction(Operation.setRights);
    req = new DistributionListActionRequest(DistributionListSelector.fromName(GROUP_NAME), action);
    dlRight1 = new DistributionListRightSpec(right1);
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.all, null, null));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.email, DistributionListGranteeBy.name, grantee3.getName()));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.email, DistributionListGranteeBy.name, grantee4.getName()));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.email, DistributionListGranteeBy.name, groupGrantee2.getName()));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.email, DistributionListGranteeBy.name, GUEST));
    dlRight2 = new DistributionListRightSpec(right2);
    // don't add any grantee, this should revoke all grants for right2
    action.addRight(dlRight1);
    action.addRight(dlRight2);
    resp = invokeJaxb(transport, req);
    //
    // verify rights are set
    //
    grants = prov.getGrants(TargetType.dl.name(), TargetBy.id, group.getId(), null, null, null, true);
    right1GranteeNames = Sets.newHashSet();
    right2GranteeNames = Sets.newHashSet();
    for (RightCommand.ACE ace : grants.getACEs()) {
        String right = ace.right();
        if (right1.equals(right)) {
            right1GranteeNames.add(Verify.makeResultStr(ace.granteeType(), ace.granteeName()));
        } else if (right2.equals(right)) {
            right2GranteeNames.add(Verify.makeResultStr(ace.granteeType(), ace.granteeName()));
        }
    }
    Verify.verifyEquals(Sets.newHashSet(Verify.makeResultStr(GranteeType.GT_AUTHUSER.getCode(), ""), Verify.makeResultStr(GranteeType.GT_USER.getCode(), grantee3.getName()), Verify.makeResultStr(GranteeType.GT_USER.getCode(), grantee4.getName()), Verify.makeResultStr(GranteeType.GT_GROUP.getCode(), groupGrantee2.getName()), Verify.makeResultStr(GranteeType.GT_GUEST.getCode(), GUEST)), right1GranteeNames);
    assertEquals(0, right2GranteeNames.size());
    //
    // revokeRights
    //
    action = new DistributionListAction(Operation.revokeRights);
    req = new DistributionListActionRequest(DistributionListSelector.fromName(GROUP_NAME), action);
    dlRight1 = new DistributionListRightSpec(right1);
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.all, null, null));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.email, DistributionListGranteeBy.name, grantee3.getName()));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.email, DistributionListGranteeBy.name, grantee4.getName()));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.email, DistributionListGranteeBy.name, groupGrantee2.getName()));
    dlRight1.addGrantee(new DistributionListGranteeSelector(com.zimbra.soap.type.GranteeType.email, DistributionListGranteeBy.name, GUEST));
    action.addRight(dlRight1);
    resp = invokeJaxb(transport, req);
    //
    // verify all rights are revoked
    //
    grants = prov.getGrants(TargetType.dl.name(), TargetBy.id, group.getId(), null, null, null, true);
    right1GranteeNames = Sets.newHashSet();
    right2GranteeNames = Sets.newHashSet();
    for (RightCommand.ACE ace : grants.getACEs()) {
        String right = ace.right();
        if (right1.equals(right)) {
            right1GranteeNames.add(ace.granteeName());
        } else if (right2.equals(right)) {
            right2GranteeNames.add(ace.granteeName());
        }
    }
    assertEquals(0, right1GranteeNames.size());
    assertEquals(0, right2GranteeNames.size());
}
Also used : Group(com.zimbra.cs.account.Group) Account(com.zimbra.cs.account.Account) DistributionListActionResponse(com.zimbra.soap.account.message.DistributionListActionResponse) DistributionListActionRequest(com.zimbra.soap.account.message.DistributionListActionRequest) DistributionListGranteeSelector(com.zimbra.soap.account.type.DistributionListGranteeSelector) DistributionListAction(com.zimbra.soap.account.type.DistributionListAction) RightCommand(com.zimbra.cs.account.accesscontrol.RightCommand) DistributionListRightSpec(com.zimbra.soap.account.type.DistributionListRightSpec) SoapTransport(com.zimbra.common.soap.SoapTransport) Test(org.junit.Test)

Aggregations

Group (com.zimbra.cs.account.Group)110 Account (com.zimbra.cs.account.Account)53 Test (org.junit.Test)42 DynamicGroup (com.zimbra.cs.account.DynamicGroup)27 ServiceException (com.zimbra.common.service.ServiceException)23 SoapTransport (com.zimbra.common.soap.SoapTransport)23 Provisioning (com.zimbra.cs.account.Provisioning)23 LdapDynamicGroup (com.zimbra.cs.account.ldap.entry.LdapDynamicGroup)21 Domain (com.zimbra.cs.account.Domain)17 GuestAccount (com.zimbra.cs.account.GuestAccount)17 ZimbraSoapContext (com.zimbra.soap.ZimbraSoapContext)17 Element (com.zimbra.common.soap.Element)16 AccountServiceException (com.zimbra.cs.account.AccountServiceException)15 NamedEntry (com.zimbra.cs.account.NamedEntry)14 LdapAccount (com.zimbra.cs.account.ldap.entry.LdapAccount)12 DistributionListActionRequest (com.zimbra.soap.account.message.DistributionListActionRequest)12 DistributionListAction (com.zimbra.soap.account.type.DistributionListAction)12 DistributionListActionResponse (com.zimbra.soap.account.message.DistributionListActionResponse)11 DistributionList (com.zimbra.cs.account.DistributionList)9 Entry (com.zimbra.cs.account.Entry)9