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