use of com.zimbra.cs.account.soap.SoapProvisioning in project zm-mailbox by Zimbra.
the class TestDomainAdmin method testModifyCalendarResourceInDiffDomain.
@Test
public void testModifyCalendarResourceInDiffDomain() throws Exception {
String domAdminId = createAdminConsoleStyleDomainAdmin(DOMADMIN);
SoapProvisioning domAdminSoapProv = getSoapProvisioning(DOMADMIN, TestUtil.DEFAULT_PASSWORD);
List<Attr> attrs = Lists.newArrayList();
attrs.add(new Attr(Provisioning.A_displayName, "testModifyCalendarResourceInDiffDomain Room 101"));
attrs.add(new Attr(Provisioning.A_description, "Room 101 for 50 seats"));
attrs.add(new Attr(Provisioning.A_zimbraCalResType, "Location"));
attrs.add(new Attr(Provisioning.A_zimbraCalResAutoAcceptDecline, "TRUE"));
attrs.add(new Attr(Provisioning.A_zimbraCalResAutoDeclineIfBusy, "TRUE"));
CreateCalendarResourceResponse caResp;
caResp = adminSoapProv.invokeJaxb(new CreateCalendarResourceRequest(DIFF_CALRES, TestUtil.DEFAULT_PASSWORD, attrs));
assertNotNull("CreateCalendarResourceResponse for " + DIFF_CALRES + " as FULL ADMIN", caResp);
String acctId = caResp.getCalResource().getId();
ModifyCalendarResourceRequest modAcctReq = new ModifyCalendarResourceRequest(acctId);
modAcctReq.addAttr(new Attr(Provisioning.A_description, "dummy description"));
try {
domAdminSoapProv.invokeJaxb(modAcctReq);
} catch (SoapFaultException sfe) {
checkSoapReason(sfe, "permission denied: can not access calendar resource ");
}
try {
domAdminSoapProv.invokeJaxbOnTargetAccount(modAcctReq, acctId);
} catch (SoapFaultException sfe) {
checkSoapReason(sfe, "permission denied: can not access calendar resource ");
}
DeleteCalendarResourceRequest delAcctReq = new DeleteCalendarResourceRequest(acctId);
DeleteCalendarResourceResponse delAcctResp = adminSoapProv.invokeJaxbOnTargetAccount(delAcctReq, acctId);
assertNotNull("DeleteCalendarResourceResponse for " + DIFF_CALRES + " as ADMIN specifying target acct", delAcctResp);
try {
domAdminSoapProv.invokeJaxb(modAcctReq);
fail("ModifyCalendarResourceRequest succeeded after delete!");
} catch (SoapFaultException sfe) {
// Get this instead of "no such account: " because modify by ID (not name) and for domain admin
// cannot know whether that ID was for a domain we administered or not.
checkSoapReason(sfe, "permission denied: can not access calendar resource ");
}
try {
domAdminSoapProv.invokeJaxbOnTargetAccount(modAcctReq, acctId);
fail("ModifyCalendarResourceRequest succeeded after delete!");
} catch (SoapFaultException sfe) {
checkSoapReason(sfe, "permission denied: can not access account ");
}
}
use of com.zimbra.cs.account.soap.SoapProvisioning in project zm-mailbox by Zimbra.
the class TestDomainAdmin method testGetDistributionListInDiffDomain.
@Test
public void testGetDistributionListInDiffDomain() throws Exception {
String domAdminId = createAdminConsoleStyleDomainAdmin(DOMADMIN);
CreateDistributionListResponse caResp;
caResp = adminSoapProv.invokeJaxb(new CreateDistributionListRequest(DIFF_DL));
assertNotNull("CreateDistributionListResponse for " + DIFF_DL + " as FULL ADMIN", caResp);
String dlId = caResp.getDl().getId();
SoapProvisioning domAdminSoapProv = getSoapProvisioning(DOMADMIN, TestUtil.DEFAULT_PASSWORD);
GetDistributionListRequest getAcctReq = new GetDistributionListRequest(DistributionListSelector.fromName(DIFF_DL));
try {
domAdminSoapProv.invokeJaxb(getAcctReq);
fail("GetDistributionListRequest succeeded for DistributionList in other domain!");
} catch (SoapFaultException sfe) {
checkSoapReason(sfe, "permission denied: can not access distribution list");
}
// try non-existent acct
getAcctReq = new GetDistributionListRequest(DistributionListSelector.fromName(DIFF_DL2));
try {
domAdminSoapProv.invokeJaxb(getAcctReq);
fail("GetDistributionListRequest succeeded for non-existent DistributionList in other domain!");
} catch (SoapFaultException sfe) {
checkSoapReason(sfe, "permission denied: can not access distribution list");
}
AddDistributionListAliasResponse aaaResp;
try {
aaaResp = domAdminSoapProv.invokeJaxb(new AddDistributionListAliasRequest(dlId, ALIAS_FOR_TARGET_DL));
fail("AddDistributionListAliasRequest succeeded for DistributionList in other domain!");
} catch (SoapFaultException sfe) {
checkSoapReason(sfe, "permission denied: can not access distribution list");
}
aaaResp = adminSoapProv.invokeJaxb(new AddDistributionListAliasRequest(dlId, ALIAS_FOR_TARGET_DL));
assertNotNull("AddDistributionListAliasResponse for " + TARGET_DL + " as FULL ADMIN", aaaResp);
try {
domAdminSoapProv.invokeJaxb(new RemoveDistributionListAliasRequest(dlId, ALIAS_FOR_TARGET_DL));
fail("RemoveDistributionListAliasRequest succeeded for DistributionList in other domain!");
} catch (SoapFaultException sfe) {
checkSoapReason(sfe, "permission denied: can not access distribution list");
}
try {
domAdminSoapProv.invokeJaxb(new RenameDistributionListRequest(dlId, TARGET_DL_RENAMED));
fail("RenameDistributionListRequest succeeded for DistributionList in other domain!");
} catch (SoapFaultException sfe) {
checkSoapReason(sfe, "permission denied: can not access distribution list");
}
try {
domAdminSoapProv.invokeJaxb(new DeleteDistributionListRequest(dlId));
fail("DeleteDistributionListRequest succeeded for DistributionList in other domain!");
} catch (SoapFaultException sfe) {
checkSoapReason(sfe, "permission denied: can not access distribution list");
}
}
use of com.zimbra.cs.account.soap.SoapProvisioning in project zm-mailbox by Zimbra.
the class TestDomainAdmin method testModifyDistributionListInDomAdminDomain.
@Test
public void testModifyDistributionListInDomAdminDomain() throws Exception {
String domAdminId = createAdminConsoleStyleDomainAdmin(DOMADMIN);
SoapProvisioning domAdminSoapProv = getSoapProvisioning(DOMADMIN, TestUtil.DEFAULT_PASSWORD);
List<Attr> attrs = Lists.newArrayList();
attrs.add(new Attr(Provisioning.A_displayName, "testModifyDistributionListInDomAdminDomain"));
CreateDistributionListResponse caResp;
caResp = domAdminSoapProv.invokeJaxb(new CreateDistributionListRequest(TARGET_DL, attrs, false));
assertNotNull("CreateDistributionListResponse for " + TARGET_DL + " simple as domAdmin", caResp);
String dlId = caResp.getDl().getId();
ModifyDistributionListRequest modDlReq;
ModifyDistributionListResponse modDlResp;
modDlReq = new ModifyDistributionListRequest(null);
modDlReq.addAttr(new Attr(Provisioning.A_description, "dummy description"));
try {
modDlResp = domAdminSoapProv.invokeJaxb(modDlReq);
fail("ModifyDistributionListRequest succeeded without specifying id!");
} catch (SoapFaultException sfe) {
checkSoapReason(sfe, "invalid request: missing required attribute: id");
}
modDlReq = new ModifyDistributionListRequest(dlId);
modDlReq.addAttr(new Attr(Provisioning.A_description, "dummy description"));
modDlResp = domAdminSoapProv.invokeJaxb(modDlReq);
assertNotNull("ModifyDistributionListResponse for " + TARGET_DL2 + " simple as domAdmin", modDlResp);
DeleteDistributionListRequest delDlReq = new DeleteDistributionListRequest(dlId);
DeleteDistributionListResponse delDlResp = domAdminSoapProv.invokeJaxb(delDlReq);
assertNotNull("DeleteDistributionListResponse for " + TARGET_DL2 + " as domAdmin", delDlResp);
try {
modDlResp = domAdminSoapProv.invokeJaxb(modDlReq);
fail("ModifyDistributionListRequest succeeded after delete!");
} catch (SoapFaultException sfe) {
// Get this instead of "no such calendar resource: " because modify by ID (not name) and for domain admin
// cannot know whether that ID was for a domain we administered or not.
checkSoapReason(sfe, "permission denied: can not access distribution list ");
}
// as full admin
try {
modDlResp = adminSoapProv.invokeJaxb(modDlReq);
fail("ModifyDistributionListRequest succeeded after delete!");
} catch (SoapFaultException sfe) {
// Full admin gets "no such distribution list: " instead of "permission denied"
checkSoapReason(sfe, "no such distribution list: ");
}
}
use of com.zimbra.cs.account.soap.SoapProvisioning in project zm-mailbox by Zimbra.
the class TestDomainAdmin method testModifyCalendarResourceInDomAdminDomain.
@Test
public void testModifyCalendarResourceInDomAdminDomain() throws Exception {
String domAdminId = createAdminConsoleStyleDomainAdmin(DOMADMIN);
SoapProvisioning domAdminSoapProv = getSoapProvisioning(DOMADMIN, TestUtil.DEFAULT_PASSWORD);
List<Attr> attrs = Lists.newArrayList();
attrs.add(new Attr(Provisioning.A_displayName, "testModifyCalendarResourceInDomAdminDomain Room 101"));
attrs.add(new Attr(Provisioning.A_description, "Room 101 for 50 seats"));
attrs.add(new Attr(Provisioning.A_zimbraCalResType, "Location"));
attrs.add(new Attr(Provisioning.A_zimbraCalResAutoAcceptDecline, "TRUE"));
attrs.add(new Attr(Provisioning.A_zimbraCalResAutoDeclineIfBusy, "TRUE"));
CreateCalendarResourceResponse caResp;
caResp = domAdminSoapProv.invokeJaxb(new CreateCalendarResourceRequest(TARGET_CALRES, TestUtil.DEFAULT_PASSWORD, attrs));
assertNotNull("CreateCalendarResourceResponse for " + TARGET_CALRES + " simple as domAdmin", caResp);
String acctId = caResp.getCalResource().getId();
ModifyCalendarResourceRequest modAcctReq;
ModifyCalendarResourceResponse modAcctResp;
modAcctReq = new ModifyCalendarResourceRequest(null);
modAcctReq.addAttr(new Attr(Provisioning.A_description, "dummy description"));
try {
modAcctResp = domAdminSoapProv.invokeJaxb(modAcctReq);
fail("ModifyCalendarResourceRequest succeeded without 'id'!");
} catch (SoapFaultException sfe) {
checkSoapReason(sfe, "invalid request: missing required attribute: id");
}
modAcctReq = new ModifyCalendarResourceRequest(acctId);
modAcctReq.addAttr(new Attr(Provisioning.A_description, "dummy description"));
modAcctResp = domAdminSoapProv.invokeJaxb(modAcctReq);
assertNotNull("ModifyCalendarResourceResponse for " + TARGET_CALRES2 + " simple as domAdmin", modAcctResp);
modAcctReq = new ModifyCalendarResourceRequest(acctId);
modAcctReq.addAttr(new Attr(Provisioning.A_description, "another dummy description"));
modAcctResp = domAdminSoapProv.invokeJaxbOnTargetAccount(modAcctReq, acctId);
assertNotNull("ModifyCalendarResourceResponse for " + TARGET_CALRES2 + " as domAdmin specifying target acct", modAcctResp);
DeleteCalendarResourceRequest delAcctReq = new DeleteCalendarResourceRequest(acctId);
DeleteCalendarResourceResponse delAcctResp = domAdminSoapProv.invokeJaxbOnTargetAccount(delAcctReq, acctId);
assertNotNull("DeleteCalendarResourceResponse for " + TARGET_CALRES2 + " as domAdmin specifying target acct", delAcctResp);
try {
modAcctResp = domAdminSoapProv.invokeJaxb(modAcctReq);
fail("ModifyCalendarResourceRequest succeeded after delete!");
} catch (SoapFaultException sfe) {
// Get this instead of "no such calendar resource: " because modify by ID (not name) and for domain admin
// cannot know whether that ID was for a domain we administered or not.
checkSoapReason(sfe, "permission denied: can not access calendar resource ");
}
try {
modAcctResp = domAdminSoapProv.invokeJaxbOnTargetAccount(modAcctReq, acctId);
fail("ModifyCalendarResourceRequest succeeded after delete!");
} catch (SoapFaultException sfe) {
checkSoapReason(sfe, "permission denied: can not access account");
}
// as full admin
try {
modAcctResp = adminSoapProv.invokeJaxb(modAcctReq);
fail("ModifyCalendarResourceRequest succeeded after delete!");
} catch (SoapFaultException sfe) {
// Full admin gets "no such calendar resource: " instead of "permission denied"
checkSoapReason(sfe, "no such calendar resource: ");
}
}
use of com.zimbra.cs.account.soap.SoapProvisioning in project zm-mailbox by Zimbra.
the class PurgeMessages method handle.
public Element handle(Element request, Map<String, Object> context) throws ServiceException {
ZimbraSoapContext zsc = getZimbraSoapContext(context);
Element mreq = request.getOptionalElement(AdminConstants.E_MAILBOX);
String[] accounts;
if (mreq != null) {
accounts = new String[] { mreq.getAttribute(AdminConstants.A_ACCOUNTID) };
// accounts are specified, check right or each account
Provisioning prov = Provisioning.getInstance();
for (String acctId : accounts) {
Account acct = prov.get(AccountBy.id, acctId);
if (acct == null)
throw AccountServiceException.NO_SUCH_ACCOUNT(acctId);
checkAccountRight(zsc, acct, Admin.R_purgeMessages);
}
} else {
// all accounts on the system, has to be a system admin
checkRight(zsc, context, null, AdminRight.PR_SYSTEM_ADMIN_ONLY);
accounts = MailboxManager.getInstance().getAccountIds();
}
PurgeMessagesResponse purgeResponse = new PurgeMessagesResponse();
for (int i = 0; i < accounts.length; i++) {
Account account = Provisioning.getInstance().getAccountById(accounts[i]);
if (account == null)
continue;
MailboxWithMailboxId mboxResp;
if (Provisioning.onLocalServer(account)) {
// local
Mailbox mbox = MailboxManager.getInstance().getMailboxByAccount(account, false);
if (mbox == null)
continue;
mbox.purgeMessages(null);
mboxResp = new MailboxWithMailboxId(mbox.getId(), account.getId(), Long.valueOf(mbox.getSize()));
} else {
// remote
Server server = account.getServer();
if (server == null)
continue;
SoapProvisioning soapProvisioning = SoapProvisioning.getAdminInstance();
mboxResp = soapProvisioning.purgeMessages(account);
if (mboxResp == null)
continue;
mboxResp.setAccountId(account.getId());
}
purgeResponse.addMailbox(mboxResp);
}
return JaxbUtil.jaxbToElement(purgeResponse);
}
Aggregations