package org.opensafety.webapp.controller;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import org.opensafety.BaseSpringJunitTestCase;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.security.core.context.SecurityContextHolder;
public abstract class BaseControllerTestCase extends BaseSpringJunitTestCase {
private int smtpPort = 25250;
@Autowired
protected MailSender mailSender;
@Override
protected void setUp() throws Exception {
smtpPort = smtpPort + (int) (Math.random() * 100);
// change the port on the mailSender so it doesn't conflict with an
// existing SMTP server on localhost
JavaMailSenderImpl mailSender = (JavaMailSenderImpl) this.mailSender;
mailSender.setPort(getSmtpPort());
mailSender.setHost("localhost");
}
@Override
protected void tearDown() throws Exception {
SecurityContextHolder.getContext().setAuthentication(null);
}
protected int getSmtpPort() {
return smtpPort;
}
/**
* Convenience methods to make tests simpler
* @return a MockHttpServletRequest with a POST to the specified URL
* @param url the URL to post to
*/
public MockHttpServletRequest newPost(String url) {
return new MockHttpServletRequest("POST", url);
}
public MockHttpServletRequest newGet(String url) {
return new MockHttpServletRequest("GET", url);
}
private Field[] getDeclaredFields(Class clazz) {
Field[] f = new Field[0];
Class superClazz = clazz.getSuperclass();
Collection<Field> rval = new ArrayList<Field>();
if (superClazz != null) {
rval.addAll(Arrays.asList(getDeclaredFields(superClazz)));
}
rval.addAll(Arrays.asList(clazz.getDeclaredFields()));
return rval.toArray(f);
}
}