You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by ja...@apache.org on 2011/08/16 16:26:28 UTC

svn commit: r1158290 - in /incubator/rave/trunk/rave-portal/src: main/java/org/apache/rave/portal/service/impl/DefaultNewAccountService.java test/java/org/apache/rave/portal/service/NewAccountServiceTest.java

Author: jasha
Date: Tue Aug 16 14:26:28 2011
New Revision: 1158290

URL: http://svn.apache.org/viewvc?rev=1158290&view=rev
Log:
RAVE-80 added unit tests for NewAccountService

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

Modified: incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/impl/DefaultNewAccountService.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/impl/DefaultNewAccountService.java?rev=1158290&r1=1158289&r2=1158290&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/impl/DefaultNewAccountService.java (original)
+++ incubator/rave/trunk/rave-portal/src/main/java/org/apache/rave/portal/service/impl/DefaultNewAccountService.java Tue Aug 16 14:26:28 2011
@@ -19,21 +19,25 @@
 
 package org.apache.rave.portal.service.impl;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.apache.rave.portal.model.Page;
 import org.apache.rave.portal.model.PageLayout;
 import org.apache.rave.portal.model.Region;
 import org.apache.rave.portal.model.User;
-import org.apache.rave.portal.service.*;
+import org.apache.rave.portal.service.NewAccountService;
+import org.apache.rave.portal.service.PageLayoutService;
+import org.apache.rave.portal.service.PageService;
+import org.apache.rave.portal.service.RegionService;
+import org.apache.rave.portal.service.UserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.authentication.encoding.PasswordEncoder;
 import org.springframework.security.authentication.dao.SaltSource;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.List;
-
 @Service
 public class DefaultNewAccountService implements NewAccountService {
 
@@ -61,12 +65,17 @@ public class DefaultNewAccountService im
 
 	 @Override
 	 public void createNewAccount(String userName, String password, String userPageLayout) throws Exception {
-		  User user=new User();
+         final User existingUser = userService.getUserByUsername(userName);
+         if (existingUser != null) {
+            throw new IllegalArgumentException("A user already exists for username " + userName);
+         }
+         
+         User user=new User();
 		  user.setUsername(userName);
 		  //This assumes we use the username for the salt.  If not, the code below will need to change.
 		  //See also applicationContext-security.xml
 		  String saltedHashedPassword=passwordEncoder.encodePassword(password,saltSource.getSalt(user));
-		  logger.debug("Salt Source:"+saltSource.getSalt(user));
+		  logger.debug("Salt Source: {}", saltSource.getSalt(user));
 		  user.setPassword(saltedHashedPassword);
 		  
 		  user.setExpired(false);

Modified: incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/service/NewAccountServiceTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/service/NewAccountServiceTest.java?rev=1158290&r1=1158289&r2=1158290&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/service/NewAccountServiceTest.java (original)
+++ incubator/rave/trunk/rave-portal/src/test/java/org/apache/rave/portal/service/NewAccountServiceTest.java Tue Aug 16 14:26:28 2011
@@ -19,18 +19,95 @@
 
 package org.apache.rave.portal.service;
 
+import org.apache.rave.portal.model.PageLayout;
+import org.apache.rave.portal.model.User;
+import org.apache.rave.portal.service.impl.DefaultNewAccountService;
+import org.junit.Before;
 import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.security.authentication.dao.SaltSource;
+import org.springframework.security.authentication.encoding.PasswordEncoder;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.test.util.ReflectionTestUtils;
 
+import static junit.framework.Assert.fail;
+import static org.easymock.EasyMock.createNiceMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.replay;
+
+/**
+ * Test class for {@link org.apache.rave.portal.service.impl.DefaultNewAccountService}
+ */
 public class NewAccountServiceTest {
+    private UserService userService;
+    private PageLayoutService pageLayoutService;
+
+    private NewAccountService newAccountService;
+
+    private final Logger logger = LoggerFactory.getLogger(NewAccountServiceTest.class);
+
+    @Test
+    public void createNewAccountTest() throws Exception {
+        String validUser = "valid.user";
+        String validPass = "valid.password";
+        String validLayout = "valid.layout";
+
+        User newUser = new User();
+        newUser.setUsername(validUser);
+        newUser.setPassword(validPass);
+        newUser.setConfirmPassword(validPass);
+        newUser.setExpired(false);
+        newUser.setLocked(false);
+        newUser.setEnabled(true);
+
+
+        SaltSource saltSource = createNiceMock(SaltSource.class);
+        UserDetails userDetails = createNiceMock(UserDetails.class);
+        expect(userDetails.getUsername()).andReturn("valid.user");
+        expect(userDetails.getPassword()).andReturn("valid.password");
+        expect(saltSource.getSalt(userDetails)).andReturn("salt");
+        PasswordEncoder passwordEncoder = createNiceMock(PasswordEncoder.class);
+        expect(passwordEncoder.encodePassword("valid.password", "salt")).andReturn("valid.password");
+        replay(saltSource, userDetails, passwordEncoder);
+
+        ReflectionTestUtils.setField(newAccountService, "saltSource", saltSource);
+        ReflectionTestUtils.setField(newAccountService, "passwordEncoder", passwordEncoder);
+
+        expect(userService.getUserByUsername(validUser)).andReturn(null);
+        PageLayout pageLayout = new PageLayout();
+        pageLayout.setNumberOfRegions(4L);
+        expect(pageLayoutService.getPageLayoutByCode(validLayout)).andReturn(pageLayout);
+        replay(userService, pageLayoutService);
+
+        newAccountService.createNewAccount(validUser, validPass, validLayout);
+    }
+
+    @Test
+    public void failedAccountCreationTest() throws Exception {
+        String duplicateUserName = "duplicateUserName";
+        User existingUser = new User();
+        existingUser.setUsername(duplicateUserName);
+
+        expect(userService.getUserByUsername(duplicateUserName)).andReturn(existingUser);
+        replay(userService);
+
+        try {
+            newAccountService.createNewAccount(duplicateUserName, "", "");
+            fail();
+        } catch (IllegalArgumentException e) {
+            logger.debug("Expected failure of account creation due to duplicate name");
+        }
+    }
+
+    @Before
+    public void setup() {
+        userService = createNiceMock(UserService.class);
+        PageService pageService = createNiceMock(PageService.class);
+        pageLayoutService = createNiceMock(PageLayoutService.class);
+        RegionService regionService = createNiceMock(RegionService.class);
+
+        newAccountService = new DefaultNewAccountService(userService, pageService, pageLayoutService, regionService);
 
-	 @Test
-	 public void createNewAccountTest(){
-		  //TODO implement test
-	 }
-
-	 @Test
-	 public void failedAccountCreationTest() {
-		  //TODO implement test to check failure conditions such as using already
-		  //used user name.
-	 }
+    }
 }
\ No newline at end of file