You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/04/07 15:42:49 UTC

svn commit: r1310769 - in /archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src: main/java/org/apache/ main/java/org/apache/archiva/ main/java/org/apache/archiva/redback/ main/java/org/apache/archiva/redback/authentication/...

Author: olamy
Date: Sat Apr  7 13:42:48 2012
New Revision: 1310769

URL: http://svn.apache.org/viewvc?rev=1310769&view=rev
Log:
package change to o.a.a.r

Added:
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/apache/
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/apache/archiva/
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/apache/archiva/redback/
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/apache/archiva/redback/authentication/
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/apache/archiva/redback/authentication/users/
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/apache/archiva/redback/authentication/users/UserManagerAuthenticator.java
      - copied, changed from r1310767, archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/codehaus/plexus/redback/authentication/users/UserManagerAuthenticator.java
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/apache/
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/apache/archiva/
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/apache/archiva/redback/
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/apache/archiva/redback/authentication/
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/apache/archiva/redback/authentication/users/
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/apache/archiva/redback/authentication/users/UserManagerAuthenticatorTest.java   (with props)
Removed:
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/codehaus/plexus/redback/authentication/users/UserManagerAuthenticator.java
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/codehaus/plexus/redback/authentication/users/UserManagerAuthenticatorTest.java
Modified:
    archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/resources/spring-context.xml

Copied: archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/apache/archiva/redback/authentication/users/UserManagerAuthenticator.java (from r1310767, archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/codehaus/plexus/redback/authentication/users/UserManagerAuthenticator.java)
URL: http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/apache/archiva/redback/authentication/users/UserManagerAuthenticator.java?p2=archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/apache/archiva/redback/authentication/users/UserManagerAuthenticator.java&p1=archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/codehaus/plexus/redback/authentication/users/UserManagerAuthenticator.java&r1=1310767&r2=1310769&rev=1310769&view=diff
==============================================================================
--- archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/codehaus/plexus/redback/authentication/users/UserManagerAuthenticator.java (original)
+++ archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/main/java/org/apache/archiva/redback/authentication/users/UserManagerAuthenticator.java Sat Apr  7 13:42:48 2012
@@ -1,4 +1,4 @@
-package org.codehaus.plexus.redback.authentication.users;
+package org.apache.archiva.redback.authentication.users;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one

Added: archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/apache/archiva/redback/authentication/users/UserManagerAuthenticatorTest.java
URL: http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/apache/archiva/redback/authentication/users/UserManagerAuthenticatorTest.java?rev=1310769&view=auto
==============================================================================
--- archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/apache/archiva/redback/authentication/users/UserManagerAuthenticatorTest.java (added)
+++ archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/apache/archiva/redback/authentication/users/UserManagerAuthenticatorTest.java Sat Apr  7 13:42:48 2012
@@ -0,0 +1,215 @@
+package org.apache.archiva.redback.authentication.users;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+import org.apache.archiva.redback.authentication.users.UserManagerAuthenticator;
+import org.apache.archiva.redback.users.User;
+import org.apache.archiva.redback.users.UserManager;
+import org.apache.archiva.redback.users.UserNotFoundException;
+import org.codehaus.plexus.redback.authentication.AuthenticationException;
+import org.codehaus.plexus.redback.authentication.AuthenticationResult;
+import org.codehaus.plexus.redback.authentication.Authenticator;
+import org.codehaus.plexus.redback.authentication.PasswordBasedAuthenticationDataSource;
+import org.codehaus.plexus.redback.policy.AccountLockedException;
+import org.codehaus.plexus.redback.policy.MustChangePasswordException;
+import org.codehaus.plexus.redback.policy.UserSecurityPolicy;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import java.util.Calendar;
+import java.util.Date;
+
+/**
+ * Tests for {@link org.apache.archiva.redback.authentication.users.UserManagerAuthenticator} implementation.
+ *
+ * @author <a href='mailto:rahul.thakur.xdev@gmail.com'>Rahul Thakur</a>
+ */
+@RunWith( SpringJUnit4ClassRunner.class )
+@ContextConfiguration( locations = { "classpath*:/META-INF/spring-context.xml", "classpath*:/spring-context.xml" } )
+public class UserManagerAuthenticatorTest
+    extends TestCase
+{
+    @Inject
+    private UserSecurityPolicy userSecurityPolicy;
+
+    @Inject
+    @Named(value = "authenticator#user-manager")
+    Authenticator component;
+
+    @Inject
+    @Named(value = "userManager#memory")
+    UserManager um;
+
+    @Before
+    public void setUp()
+        throws Exception
+    {
+        super.setUp();
+        userSecurityPolicy.setEnabled( false );
+    }
+
+    @Test
+    public void testLookup()
+        throws Exception
+    {
+        assertNotNull( component );
+        assertEquals( UserManagerAuthenticator.class.getName(), component.getClass().getName() );
+    }
+
+    @Test
+    public void testAuthenticate()
+        throws Exception
+    {
+        // Set up a few users for the Authenticator
+
+        User user = um.createUser( "test", "Test User", "testuser@somedomain.com" );
+        user.setPassword( "testpass" );
+        um.addUser( user );
+
+        user = um.createUser( "guest", "Guest User", "testuser@somedomain.com" );
+        user.setPassword( "guestpass" );
+        um.addUser( user );
+
+        user = um.createUser( "anonymous", "Anonymous User", "testuser@somedomain.com" );
+        user.setPassword( "nopass" );
+        um.addUser( user );
+
+        // test with valid credentials
+        Authenticator auth = component;
+        assertNotNull( auth );
+
+        AuthenticationResult result = auth.authenticate( createAuthDataSource( "anonymous", "nopass" ) );
+        assertTrue( result.isAuthenticated() );
+
+        // test with invalid password
+        result = auth.authenticate( createAuthDataSource( "anonymous", "wrongpass" ) );
+        assertFalse( result.isAuthenticated() );
+        assertNull( result.getException() );
+
+        // test with unknown user
+        result = auth.authenticate( createAuthDataSource( "unknownuser", "wrongpass" ) );
+        assertFalse( result.isAuthenticated() );
+        assertNotNull( result.getException() );
+        assertEquals( result.getException().getClass().getName(), UserNotFoundException.class.getName() );
+    }
+
+    @Test
+    public void testAuthenticateLockedPassword()
+        throws AuthenticationException, MustChangePasswordException, UserNotFoundException
+    {
+        userSecurityPolicy.setEnabled( true );
+
+        // Set up a user for the Authenticator
+        User user = um.createUser( "testuser", "Test User Locked Password", "testuser@somedomain.com" );
+        user.setPassword( "correctpass1" );
+        user.setValidated( true );
+        user.setPasswordChangeRequired( false );
+        um.addUser( user );
+
+        Authenticator auth = component;
+        assertNotNull( auth );
+
+        boolean hasException = false;
+        AuthenticationResult result = null;
+
+        try
+        {
+            // test password lock
+            for ( int i = 0; i < 11; i++ )
+            {
+                result = auth.authenticate( createAuthDataSource( "testuser", "wrongpass" ) );
+            }
+        }
+        catch ( AccountLockedException e )
+        {
+            hasException = true;
+        }
+        finally
+        {
+            assertNotNull( result );
+            assertFalse( result.isAuthenticated() );
+            assertTrue( hasException );
+        }
+    }
+
+    @Test
+    public void testAuthenticateExpiredPassword()
+        throws AuthenticationException, AccountLockedException, UserNotFoundException
+    {
+        userSecurityPolicy.setEnabled( true );
+        userSecurityPolicy.setPasswordExpirationDays( 15 );
+
+        // Set up a user for the Authenticator
+        User user = um.createUser( "testuser", "Test User Expired Password", "testuser@somedomain.com" );
+        user.setPassword( "expiredpass1" );
+        user.setValidated( true );
+        user.setPasswordChangeRequired( false );
+        um.addUser( user );
+
+        Authenticator auth = component;
+        assertNotNull( auth );
+
+        boolean hasException = false;
+
+        try
+        {
+            // test successful authentication
+            AuthenticationResult result = auth.authenticate( createAuthDataSource( "testuser", "expiredpass1" ) );
+            assertTrue( result.isAuthenticated() );
+
+            // test expired password
+            user = um.findUser( "testuser" );
+
+            Calendar currentDate = Calendar.getInstance();
+            currentDate.set( Calendar.YEAR, currentDate.get( Calendar.YEAR ) - 1 );
+            Date lastPasswordChange = currentDate.getTime();
+            user.setLastPasswordChange( lastPasswordChange );
+
+            um.updateUser( user );
+
+            auth.authenticate( createAuthDataSource( "testuser", "expiredpass1" ) );
+        }
+        catch ( MustChangePasswordException e )
+        {
+            hasException = true;
+        }
+        finally
+        {
+            assertTrue( hasException );
+        }
+    }
+
+    private PasswordBasedAuthenticationDataSource createAuthDataSource( String username, String password )
+    {
+        PasswordBasedAuthenticationDataSource source = new PasswordBasedAuthenticationDataSource();
+
+        source.setPrincipal( username );
+        source.setPassword( password );
+
+        return source;
+
+    }
+}

Propchange: archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/apache/archiva/redback/authentication/users/UserManagerAuthenticatorTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/java/org/apache/archiva/redback/authentication/users/UserManagerAuthenticatorTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/resources/spring-context.xml
URL: http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/resources/spring-context.xml?rev=1310769&r1=1310768&r2=1310769&view=diff
==============================================================================
--- archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/resources/spring-context.xml (original)
+++ archiva/redback/redback-core/trunk/redback-users/redback-authentication-users/src/test/resources/spring-context.xml Sat Apr  7 13:42:48 2012
@@ -27,7 +27,7 @@
            http://www.springframework.org/schema/context/spring-context-3.0.xsd"
        default-lazy-init="true">
 
-  <bean name="authenticator#user-manager" class="org.codehaus.plexus.redback.authentication.users.UserManagerAuthenticator">
+  <bean name="authenticator#user-manager" class="org.apache.archiva.redback.authentication.users.UserManagerAuthenticator">
     <property name="userManager" ref="userManager#memory"/>
     <property name="securityPolicy" ref="userSecurityPolicy"/>
   </bean>