[jbossseam-issues] [JBoss JIRA] Commented: (JBSEAM-1318) Seam 1.2.1.GA Integration Testing of #{identity.login}; NullPointerException in SeamLoginModule.java:104

Maarten Haubrich (JIRA) jira-events at lists.jboss.org
Fri May 11 18:05:52 EDT 2007


    [ http://jira.jboss.com/jira/browse/JBSEAM-1318?page=comments#action_12362108 ] 
            
Maarten Haubrich commented on JBSEAM-1318:
------------------------------------------

Hi Shane,

when did you make this change? In 1.2.1.GA?

I will have to compare the 2 versions myself. I don't think you can help me there atm. Thanks!



> Seam 1.2.1.GA Integration Testing of #{identity.login}; NullPointerException in SeamLoginModule.java:104
> --------------------------------------------------------------------------------------------------------
>
>                 Key: JBSEAM-1318
>                 URL: http://jira.jboss.com/jira/browse/JBSEAM-1318
>             Project: JBoss Seam
>          Issue Type: Bug
>          Components: Security
>    Affects Versions: 1.2.1.GA
>         Environment: Windows XP SP2, JRE 1.5.0_10, JBoss 4.0.5.GA
>            Reporter: Maarten Haubrich
>         Assigned To: Shane Bryzak
>         Attachments: SeamIssueLoginIntegrationTest.zip
>
>
> I am having problems with the integration testing of the login process with the 1.2.1.GA version.
> Upon invoking #{identity.login} I get a NullPointerException in the SeamLoginModule.
> I suspect the test environment does not load the authenticate-method from the components.xml ...
> Here is the JSF view
> [CODE]
> <h:form>
> 		
> 		<table cellspacing="2" cellpadding="2" border="0" >
> 		<tr>
> 			<td>#{messages['login.login']}:</td><td><h:inputText value="#{identity.username}" id="login" /></td>
> 		</tr>
> 		<tr>
> 			<td>#{messages['login.pwd']}:</td><td><h:inputSecret value="#{identity.password}" id="password"  /></td>
> 		</tr>
> 		<tr>
> 			<td colspan="2" align="right"><h:commandButton value="#{messages['login.button']}" action="#{identity.login}"  /></td>
> 		</tr>
> 		</table>
> 	</h:form>	
> [/CODE]
> I added this to components.xml :
> [CODE]
> <security:identity authenticate-method="#{authenticator.authenticate}"/>
> [/CODE]
> My AuthenticatorAction class looks like so:
> [CODE]
> @Name("authenticator")
> public class AuthenticatorAction implements Serializable 
> {
> 	private static final long serialVersionUID = 4836686434984261542L;
> 	private static final String USER_VAR = "currentUser";
> 	@In 
> 	private Context sessionContext;
> 	@Logger
> 	private Log log;
> 	
> 	
> 	/**
> 	 * validate the username and password
> 	 */
> 	public boolean authenticate() 
> 	{
> 		User user = ServiceLocator.instance()										// find user in database
> 						.getLoginService()
> 							.authenticate(Identity.instance().getUsername(), Identity.instance().getPassword());
> 		if(user==null)
> 		{		
> 			log.debug("invalid login!");				
> 			return false;
> 		}
> 		
> 		Identity.instance().addRole("user");
> 		
> 		if(user.isAdmin())															// add admin role if the user is an admin
> 			Identity.instance().addRole("admin");
> 		sessionContext.set(USER_VAR, user);											// save in session context
> 		log.debug("login successful: #0", user);	
> 		
> 		return true;
> 	}
> 	
> 	
> }	
> [/CODE]
> My SeamTest class is as follows:
> [CODE]
> public class AuthenticatorActionTest extends SeamTest {
> 	
> 	@Test
> 	public void testAuthenticate() throws Exception 
> 	{
> 		
> 		new FacesRequest() 
> 		{
> 			@Override
> 			protected void updateModelValues() throws Exception 
> 			{
> 				setValue("#{identity.username}", "test");											// inject the login values
> 				setValue("#{identity.password}", "test");	
> 			}
>    
> 			@Override
> 			protected void invokeApplication() 
> 			{
> 				invokeMethod("#{identity.login}");
> 			}
>    
> 			@Override
> 			protected void renderResponse() 
> 			{
> 				assertTrue("identity.loggedIn", getValue("#{identity.loggedIn}").equals(true));		// TEST FAILS HERE !
> 			}
> 		   
> 		}.run();
> 	
> 	
> 	}
> }	
> [/CODE]
> When running the test I get the following error message:
> [CODE]
> ERROR 2007-05-08 11:59:49,578  org.jboss.seam.security.jaas.SeamLoginModule -- Error invoking login 
> method 
> java.lang.NullPointerException
> 	at org.jboss.seam.security.jaas.SeamLoginModule.login(SeamLoginModule.java:104)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at javax.security.auth.login.LoginContext.invoke(Unknown Source)
> 	at javax.security.auth.login.LoginContext.access$000(Unknown Source)
> 	at javax.security.auth.login.LoginContext$5.run(Unknown Source)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at javax.security.auth.login.LoginContext.invokeCreatorPriv(Unknown Source)
> 	at javax.security.auth.login.LoginContext.login(Unknown Source)
> 	at org.jboss.seam.security.Identity.authenticate(Identity.java:247)
> 	at org.jboss.seam.security.Identity.authenticate(Identity.java:240)
> 	at org.jboss.seam.security.Identity.login(Identity.java:170)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at com.sun.el.parser.AstValue.invoke(AstValue.java:174)
> 	at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:286)
> 	at org.jboss.seam.util.UnifiedELMethodBinding.invoke(UnifiedELMethodBinding.java:36)
> 	at org.jboss.seam.actionparam.ActionParamBindingHelper.invokeTheExpression(ActionParamBindingHelper
> .java:58)
> 	at org.jboss.seam.actionparam.ActionParamMethodBinding.invoke(ActionParamMethodBinding.java:75)
> 	at org.jboss.seam.actionparam.ActionParamBindingHelper.invokeTheExpression(ActionParamBindingHelper
> .java:58)
> 	at org.jboss.seam.actionparam.ActionParamMethodBinding.invoke(ActionParamMethodBinding.java:75)
> 	at org.jboss.seam.mock.SeamTest$Request.invokeMethod(SeamTest.java:401)
> 	at com.booknolia.AuthenticatorTest$1.invokeApplication(AuthenticatorTest.java:48)
> 	at org.jboss.seam.mock.SeamTest$Request.run(SeamTest.java:489)
> 	at com.booknolia.AuthenticatorTest.testAuthenticate(AuthenticatorTest.java:66)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:645)
> 	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:479)
> 	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:715)
> 	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
> 	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
> 	at org.testng.TestRunner.runWorkers(TestRunner.java:673)
> 	at org.testng.TestRunner.privateRun(TestRunner.java:620)
> 	at org.testng.TestRunner.run(TestRunner.java:480)
> 	at org.testng.SuiteRunner.runTest(SuiteRunner.java:278)
> 	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:273)
> 	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:253)
> 	at org.testng.SuiteRunner.run(SuiteRunner.java:168)
> 	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:987)
> 	at org.testng.TestNG.runSuitesLocally(TestNG.java:951)
> 	at org.testng.TestNG.run(TestNG.java:719)
> 	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
> 	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:122)	
> [/CODE]

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the seam-issues mailing list