Hi Dave,

I added my struts code.

Junit Code:

public class AdminValidation extends StrutsTestCase  {

    @Test
    public void testUserNameErrorMessage() throws Exception {

        HttpSession session = request.getSession();
        UserVO uservo1 =new UserVO();
        uservo1.setUserMailId("akrajmscjavaquest...@gmail.com");
        uservo1.setReturnedStatus("admin");
        uservo1.setAccessLevel("1293");
        uservo1.setIntranetId("Krishnaraj");
        uservo1.setSuperAdmin(true);
        uservo1.setShowRegContact(false);
        session.setAttribute("user", uservo1);
        ActionProxy proxy = getActionProxy("/MainAdminPage.action");
        ActionContext context =proxy.getInvocation().getInvocationContext();
        Map<String,Object> session = new HashMap<String,Object>();
        session.put("user", uservo1);
        context.setSession(session);
         String result = proxy.execute();
         assertEquals("Result returned form executing the action was not
success but it should have been.", "success", result);
    }
}

Struts.xml code:

<interceptors>
<interceptor name="printMsgInterceptor"
class="com.interceptor.UserValidation"></interceptor>
<interceptor name="sessionClearInterceptor"
class="com.interceptor.SessionClearInterceptor"></interceptor>
<interceptor-stack name="newStack">
<interceptor-ref name="printMsgInterceptor" />
<interceptor-ref name="sessionClearInterceptor" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>

<action name="MainAdminPage" class="com.action.MainAdminAction">
    <interceptor-ref name="newStack" />
    <result>/MainAdmin.jsp</result>
    <result name="Login_page">/Login.jsp</result>
</action>

UserValidation.java code:

public class UserValidation extends AbstractInterceptor implements
StrutsStatics {


    private static final long serialVersionUID = 1L;

    public void init() {

    }

    public void destroy() {
    }

    public String intercept(ActionInvocation invocation) throws Exception {

        final ActionContext context = invocation.getInvocationContext();
        String str =invocation.getAction().getClass().getSimpleName();
        Map<String,Object> session =context.getSession() ;
        HttpServletRequest request=(HttpServletRequest)
context.get(HTTP_REQUEST);
        HttpServletResponse response=(HttpServletResponse)
context.get(HTTP_RESPONSE);
        String str1 =request.getRequestedSessionId();

        request.setCharacterEncoding("UTF-8");
        final UserVO uservo =(UserVO) session.get("user");
            String userMailId;
            if(uservo !=null){
            String mailID=uservo.getUserMailId();
            if(mailID != null){
                System.out.println("Success");
            }
        }

        else {
            return "login";

        }
        response.setHeader("Pragma","no-cache");
        response.setHeader("Cache-Control","no-store");
        response.setHeader("Expires","0");
        response.setDateHeader("Expires",-1);
        response.setCharacterEncoding("UTF-8");
        return invocation.invoke();

    }
}

I debug the application by placing the break point. When the control go to
" return invocation.invoke();" it throws error.

 java.lang.
IllegalStateException: Action has already executed


Thanks,
Krishnaraj




On Thu, Jun 12, 2014 at 8:45 PM, Dave Newton <davelnew...@gmail.com> wrote:

> Without knowing what's in your interceptor stack it's impossible to help.
>
> Dave
>
>
> On Thu, Jun 12, 2014 at 11:11 AM, Krishnaraj A <
> akrajmscjavaquest...@gmail.com> wrote:
>
> > Hi Team,
> >
> > Iam new to using Struts2 unit testing. Iam using the Struts 2 JUnit
> plugin
> > <http://struts.apache.org/2.3.1.2/docs/junit-plugin.html>. The normal
> > actions which is working fine. But I have issue when I am testing the
> > action which has interceptor.
> >
> > <action name="MainAdminPage" class="com.action.MainAdminAction">
> >             <interceptor-ref name="newStack" />
> >             <result>/MainAdmin.jsp</result>
> >             <result name="Login_page">/Login.jsp</result>
> > </action>
> >
> > When I start testing the control goes to interceptor and check all the
> > validation.
> > when it invoke "return invocation.invoke();". it throws error.
> >  java.lang.IllegalStateException: Action has already executed
> >
> > I am not able to get the solution for the above problem. Can any one help
> > me in this problem to find the solution. Thanks in advance.
> >
> > Thanks,
> > Krishna raj
> >
>
>
>
> --
> e: davelnew...@gmail.com
> m: 908-380-8699
> s: davelnewton_skype
> t: @dave_newton <https://twitter.com/dave_newton>
> b: Bucky Bits <http://buckybits.blogspot.com/>
> g: davelnewton <https://github.com/davelnewton>
> so: Dave Newton <http://stackoverflow.com/users/438992/dave-newton>
>

Reply via email to