You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by jc...@apache.org on 2012/01/11 19:08:39 UTC

svn commit: r1230171 - in /incubator/rave/trunk/rave-components/rave-core/src: main/java/org/apache/rave/portal/service/impl/DefaultNewAccountService.java test/java/org/apache/rave/portal/service/impl/DefaultNewAccountServiceTest.java

Author: jcian
Date: Wed Jan 11 18:08:39 2012
New Revision: 1230171

URL: http://svn.apache.org/viewvc?rev=1230171&view=rev
Log:
RAVE-420 - NewAccountService should allow for creating new accounts which do not include an email

Modified:
    incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultNewAccountService.java
    incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultNewAccountServiceTest.java

Modified: incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultNewAccountService.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultNewAccountService.java?rev=1230171&r1=1230170&r2=1230171&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultNewAccountService.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultNewAccountService.java Wed Jan 11 18:08:39 2012
@@ -19,6 +19,7 @@
 
 package org.apache.rave.portal.service.impl;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.rave.portal.model.NewUser;
 import org.apache.rave.portal.model.User;
 import org.apache.rave.portal.service.AuthorityService;
@@ -90,9 +91,16 @@ public class DefaultNewAccountService im
         if (existingUser != null) {
             throw new IllegalArgumentException("A user already exists for username " + userName);
         }
-        existingUser = userService.getUserByEmail(email);
-        if (existingUser != null) {
-            throw new IllegalArgumentException("A user already exists for email " + email);
+
+        //Implementors who use an alternative store for profile data probably wont be including email when creating new
+        //Rave accounts -- they will likely only be setting username to create a stub entry in the database just so they
+        //have something to tie the rest of the Rave entities to.  All the other profile data (like email) will be looked
+        //up elsewhere.
+        if (StringUtils.isNotEmpty(email)) {
+            existingUser = userService.getUserByEmail(email);
+            if (existingUser != null) {
+                throw new IllegalArgumentException("A user already exists for email " + email);
+            }
         }
     }
 }
\ No newline at end of file

Modified: incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultNewAccountServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultNewAccountServiceTest.java?rev=1230171&r1=1230170&r2=1230171&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultNewAccountServiceTest.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultNewAccountServiceTest.java Wed Jan 11 18:08:39 2012
@@ -113,10 +113,8 @@ public class DefaultNewAccountServiceTes
         expectedUser.setExpired(false);
         expectedUser.setLocked(false);
         expectedUser.setEnabled(true);                
-        
 
         ReflectionTestUtils.setField(newAccountService, "passwordEncoder", passwordEncoder);
-                
 
         expect(passwordEncoder.encode("valid.password")).andReturn("valid.password");
         expect(userService.getUserByUsername(VALID_USER)).andReturn(null);
@@ -133,6 +131,40 @@ public class DefaultNewAccountServiceTes
     }
 
     @Test
+    public void createNewAccountTest_blankEmail() throws Exception {
+        NewUser newUser = new NewUser();
+        newUser.setUsername(VALID_USER);
+        newUser.setPassword(VALID_PASSWORD);
+        newUser.setConfirmPassword(VALID_PASSWORD);
+        newUser.setEmail("");
+        newUser.setPageLayout(VALID_LAYOUT_CODE);
+
+        User expectedUser = new User();
+        expectedUser.setUsername(newUser.getUsername());
+        expectedUser.setPassword(newUser.getPassword());
+        expectedUser.setEmail(newUser.getEmail());
+        expectedUser.setDefaultPageLayout(validPageLayout);
+        expectedUser.setExpired(false);
+        expectedUser.setLocked(false);
+        expectedUser.setEnabled(true);
+
+        ReflectionTestUtils.setField(newAccountService, "passwordEncoder", passwordEncoder);
+
+        expect(passwordEncoder.encode("valid.password")).andReturn("valid.password");
+        expect(userService.getUserByUsername(VALID_USER)).andReturn(null);
+        //if the email is blank getUserByEmail should not be called so dont expect it
+        expect(pageLayoutService.getPageLayoutByCode(VALID_LAYOUT_CODE)).andReturn(validPageLayout);
+        expect(authorityService.getDefaultAuthorities()).andReturn(validAuthoritySearchResult);
+        userService.registerNewUser(expectedUser);
+        expectLastCall();
+        replay(userDetails, passwordEncoder, userService, pageLayoutService, authorityService);
+
+        newAccountService.createNewAccount(newUser);
+
+        verify(userDetails, passwordEncoder, userService, pageLayoutService);
+    }
+
+    @Test
     public void failedAccountCreationTest_duplicateUsername() throws Exception {
         String duplicateUserName = "duplicateUserName";
         NewUser newUser = new NewUser();
@@ -172,5 +204,4 @@ public class DefaultNewAccountServiceTes
         }
     }
 
-
 }
\ No newline at end of file