package org.appfuse.webapp.action;
import org.apache.cactus.WebRequest;
import org.apache.commons.beanutils.BeanUtils;
import org.appfuse.Constants;
import org.appfuse.webapp.form.UserFormEx;
public class UserActionTest extends BaseStrutsTestCase {
    
    public UserActionTest(String name) {
        super(name);
    }
                public void begin(WebRequest r) {}
    
    public void testCancel() throws Exception {
        setRequestPathInfo("/editUser");
        addRequestParameter("action", "Cancel");
        actionPerform();
        verifyForward("mainMenu");
        verifyNoActionErrors();
    }
    
    public void testEdit() throws Exception {
        setRequestPathInfo("/editUser");
        addRequestParameter("action", "Edit");
        addRequestParameter("username", "tomcat");
        actionPerform();
        verifyForward("edit");
        assertTrue(getRequest().getAttribute(Constants.USER_EDIT_KEY) != null);
        verifyNoActionErrors();
    }
    public void testSave() throws Exception {
        UserFormEx ex = new UserFormEx();
        BeanUtils.copyProperties(ex, user);
        ex.setPassword("tomcat");
        ex.setConfirmPassword(ex.getPassword());
        request.setAttribute(Constants.USER_EDIT_KEY, ex);
        setRequestPathInfo("/saveUser");
        addRequestParameter("encryptPass", "true");
        addRequestParameter("action", "Save");
        addRequestParameter("from", "list");
        actionPerform();
        verifyForward("edit");
        assertTrue(getRequest().getAttribute(Constants.USER_EDIT_KEY) != null);
        verifyNoActionErrors();
    }
    
    public void testSearch() throws Exception {
        setRequestPathInfo("/editUser");
        addRequestParameter("action", "Search");
        actionPerform();
        verifyForward("list");
        assertTrue(getRequest().getAttribute(Constants.USER_LIST) != null);
        verifyNoActionErrors();
    }
  
    public void testRemove() throws Exception {
        setRequestPathInfo("/editUser");
        addRequestParameter("action", "Delete");
        addRequestParameter("username", "mraible");
        actionPerform();
        verifyForward("viewUsers");
        verifyNoActionErrors();
    }
    public static void main(String[] args) {
        junit.textui.TestRunner.run(UserActionTest.class);
    }
}