I encounter a problem when testing shiro using easymock. The error message
is : 

java.lang.IllegalStateException: missing behavior definition for the
preceeding method call getCookies()
        at
org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:30)
        at
org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:61)
        at $Proxy15.getContextPath(Unknown Source)
        at
org.apache.shiro.web.attr.CookieAttribute.calculatePath(CookieAttribute.java:301)
        at
org.apache.shiro.web.attr.CookieAttribute.onStoreValue(CookieAttribute.java:322)
        at
org.apache.shiro.web.attr.AbstractWebAttribute.storeValue(AbstractWebAttribute.java:239)
        at
org.apache.shiro.web.WebRememberMeManager.rememberSerializedIdentity(WebRememberMeManager.java:226)
        at
org.apache.shiro.mgt.AbstractRememberMeManager.rememberIdentity(AbstractRememberMeManager.java:182)
        at
org.apache.shiro.mgt.AbstractRememberMeManager.rememberIdentity(AbstractRememberMeManager.java:169)
        at
org.apache.shiro.mgt.AbstractRememberMeManager.rememberIdentity(AbstractRememberMeManager.java:164)
        at
org.apache.shiro.mgt.AbstractRememberMeManager.onSuccessfulLogin(AbstractRememberMeManager.java:154)
        at
org.apache.shiro.mgt.DefaultSecurityManager.rememberMeSuccessfulLogin(DefaultSecurityManager.java:295)
        at
org.apache.shiro.mgt.DefaultSecurityManager.onSuccessfulLogin(DefaultSecurityManager.java:378)
        at
org.apache.shiro.mgt.DefaultSecurityManager.login(DefaultSecurityManager.java:360)


I follow the example of  WebRememberMeManagerTest.java to setup mock web
environment, as below:

                HttpServletRequest mockRequest = 
createNiceMock(HttpServletRequest.class);
                WebUtils.bind(mockRequest);
                HttpServletResponse mockResponse =
createNiceMock(HttpServletResponse.class);
                WebUtils.bind(mockResponse);

                Configurator configurator = Configurator.createConfigurator();

                securityService = (IAuthentication)
configurator.createService(SecurityService.SHIRO_AUTH_SERVICE);
                Boolean isSuccessful = 
securityService.login("[email protected]", "u1");

Where SecurityService contains logic to do login procedure.

                JpaRealm jparealm = (JpaRealm)
configurator.createService(JpaRealm.JPA_REALM);
                DefaultSecurityManager securityManager = 
(DefaultSecurityManager)
configurator.createService(DEFAULT_WEB_SECURITY_MANAGER);
                securityManager.setRealm(jparealm);
                SecurityUtils.setSecurityManager(securityManager);

                ...
                UsernamePasswordToken token = new UsernamePasswordToken(id, 
password);  
                token.setRememberMe(true);
                try{ 
                                securityManager.login(token);   
                }(....){}

What is the correct procedure (or what needs to be setup) to setup mock web
environment for shiro so that the unit test can get passed?

Thank you.










-- 
View this message in context: 
http://n2.nabble.com/missing-behavior-definition-for-the-preceeding-method-call-getCookies-tp3566719p3566719.html
Sent from the Shiro User mailing list archive at Nabble.com.

Reply via email to