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);
}
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);
}
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);
}
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;
}
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());
}
Aggregations