Package org.springside.examples.miniweb.unit.service.account

Source Code of org.springside.examples.miniweb.unit.service.account.UserDetailsServiceImplTest

package org.springside.examples.miniweb.unit.service.account;

import static org.junit.Assert.*;

import org.easymock.EasyMock;
import org.easymock.IMocksControl;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.security.core.authority.GrantedAuthorityImpl;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springside.examples.miniweb.data.AccountData;
import org.springside.examples.miniweb.entity.account.Authority;
import org.springside.examples.miniweb.entity.account.Role;
import org.springside.examples.miniweb.entity.account.User;
import org.springside.examples.miniweb.service.account.AccountManager;
import org.springside.examples.miniweb.service.account.UserDetailsServiceImpl;

/**
* UserDetailsServiceImpl的测试用例, 测试Service层的业务逻辑.
*
* 使用EasyMock对AccountManager进行模拟.
*
* @author calvin
*/
public class UserDetailsServiceImplTest {

  private IMocksControl control = EasyMock.createControl();

  private UserDetailsServiceImpl userDetailService;
  private AccountManager mockAccountManager;

  @Before
  public void setUp() {
    userDetailService = new UserDetailsServiceImpl();
    mockAccountManager = control.createMock(AccountManager.class);
    userDetailService.setAccountManager(mockAccountManager);
  }

  @After
  public void tearDown() {
    control.verify();
  }

  @Test
  public void loadUserExist() {

    //准备数据
    String authName = "foo";
    User user = AccountData.getRandomUser();
    Role role = AccountData.getRandomRole();
    user.getRoleList().add(role);
    Authority auth = new Authority();
    auth.setName(authName);
    role.getAuthorityList().add(auth);

    //录制脚本
    EasyMock.expect(mockAccountManager.findUserByLoginName(user.getLoginName())).andReturn(user);
    control.replay();

    //执行测试
    UserDetails userDetails = userDetailService.loadUserByUsername(user.getLoginName());

    //校验结果
    assertEquals(user.getLoginName(), userDetails.getUsername());
    assertEquals(user.getPassword(), userDetails.getPassword());
    assertEquals(1, userDetails.getAuthorities().size());
    assertEquals(new GrantedAuthorityImpl(auth.getPrefixedName()), userDetails.getAuthorities().iterator().next());
  }

  @Test(expected = UsernameNotFoundException.class)
  public void loadUserNotExist() {
    //录制脚本
    EasyMock.expect(mockAccountManager.findUserByLoginName("userNameNotExist")).andReturn(null);
    control.replay();
    //执行测试
    userDetailService.loadUserByUsername("userNameNotExist");
  }
}
TOP

Related Classes of org.springside.examples.miniweb.unit.service.account.UserDetailsServiceImplTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.