/*
* Copyright 2014 University of Dundee. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package omero.cmd.mail;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import ome.services.blitz.test.AbstractServantTest;
import ome.services.util.Executor;
import ome.services.mail.MailUtil;
import ome.system.ServiceFactory;
import omero.cmd.ERR;
import omero.cmd.HandleI.Cancel;
import omero.cmd.Helper;
import omero.cmd.Request;
import omero.cmd.Response;
import omero.cmd.SendEmailResponse;
import omero.cmd.Status;
import org.hibernate.Session;
import org.springframework.transaction.annotation.Transactional;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(groups = "integration")
public class SendEmailRequestTest extends AbstractServantTest {
@Override
@BeforeClass
protected void setUp() throws Exception {
super.setUp();
}
protected SendEmailResponse assertRequest(final SendEmailRequestI req,
Map<String, String> ctx) {
final Status status = new Status();
@SuppressWarnings("unchecked")
List<Object> rv = (List<Object>) user.ex.execute(ctx, user
.getPrincipal(), new Executor.SimpleWork(this, "testRequest") {
@Transactional(readOnly = true)
public List<Object> doWork(Session session, ServiceFactory sf) {
// from HandleI.steps()
List<Object> rv = new ArrayList<Object>();
Helper helper = new Helper((Request) req, status,
getSqlAction(), session, sf);
req.init(helper);
int j = 0;
while (j < status.steps) {
try {
status.currentStep = j;
rv.add(req.step(j));
} catch (Cancel c) {
throw c;
} catch (Throwable t) {
throw helper.cancel(new ERR(), t, "bad-step", "step",
"" + j);
}
j++;
}
return rv;
}
});
// Post-process
for (int step = 0; step < status.steps; step++) {
Object obj = rv.get(step);
req.buildResponse(step, obj);
}
Response rsp = req.getResponse();
if (rsp instanceof ERR) {
fail(rsp.toString());
}
return (SendEmailResponse) rsp;
}
@Test
public void testSendEmail() throws Exception {
SendEmailRequestI req = new SendEmailRequestI(
(MailUtil) user.ctx.getBean("mailUtil"));
req.userIds = new ArrayList<Long>(Arrays.asList(0L));
req.groupIds = new ArrayList<Long>(Arrays.asList(0L));
req.extra = new ArrayList<String>(Arrays.asList("user@mail"));
req.subject = "topic";
req.body = "text";
SendEmailResponse rsp = assertRequest(req, null);
}
}