/*
* Copyright 2014-2015 University of Dundee. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package omero.cmd.admin;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import ome.conditions.ApiUsageException;
import ome.security.SecuritySystem;
import ome.security.auth.PasswordProvider;
import ome.security.auth.PasswordUtil;
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.Helper;
import omero.cmd.Request;
import omero.cmd.Response;
import omero.cmd.ResetPasswordResponse;
import omero.cmd.Status;
import omero.cmd.HandleI.Cancel;
import org.hibernate.Session;
import org.springframework.transaction.annotation.Transactional;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class ResetPasswordRequestTest extends AbstractServantTest {
@Override
@BeforeClass
protected void setUp() throws Exception {
super.setUp();
}
protected ResetPasswordResponse assertRequest(
final ResetPasswordRequestI 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 (ResetPasswordResponse) rsp;
}
@Test(expectedExceptions = ApiUsageException.class)
public void testSendEmail() throws Exception {
ResetPasswordRequestI req = new ResetPasswordRequestI(
(MailUtil) user.ctx.getBean("mailUtil"),
(PasswordUtil) user.ctx.getBean("passwordUtil"),
(SecuritySystem) user.ctx.getBean("securitySystem"),
(PasswordProvider) user.ctx.getBean("passwordProvider"));
req.omename = "test";
req.email = "user@mail";
ResetPasswordResponse rsp = assertRequest(req, null);
}
}