package org.appfuse.webapp.action;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import org.apache.cactus.WebRequest;
import org.apache.cactus.client.authentication.FormAuthentication;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.appfuse.Constants;
import org.appfuse.model.User;
import org.appfuse.service.UserManager;
import org.appfuse.util.ConvertUtil;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import servletunit.struts.CactusStrutsTestCase;
public class BaseStrutsTestCase extends CactusStrutsTestCase {
    
    protected User user = null;
    protected ResourceBundle rb = null;
    private Log log = LogFactory.getLog(BaseStrutsTestCase.class);
    protected ResourceBundle login = null;
    protected WebApplicationContext ctx = null;
    
    public BaseStrutsTestCase(String name) {
        super(name);
                        String className = this.getClass().getName();
        try {
            rb = ResourceBundle.getBundle(className);
        } catch (MissingResourceException mre) {
                    }
        login = ResourceBundle.getBundle(LoginServletTest.class.getName());
    }
    
    public void begin(WebRequest request) {
        request.setRedirectorName("ServletRedirectorSecure");
        request.setAuthentication(new FormAuthentication(
                login.getString("username"),
                login.getString("encryptedPassword")));
    }
    public void setUp() throws Exception {
        super.setUp();
                String username = login.getString("username");
        ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(
                this.getSession().getServletContext());
        UserManager userMgr = (UserManager) ctx.getBean("userManager");
        user = (User) userMgr.getUser(username);
        getSession().setAttribute(Constants.USER_KEY, user);
    }
    protected void tearDown() throws Exception {
        ctx = null;
    }
    
    
    public Object convert(Object o) throws Exception {
        Object target = ConvertUtil.convert(o);
        target = ConvertUtil.convertDates(o, target);
        return target;
    }
}