Package org.springside.modules.unit.security.springsecurity

Source Code of org.springside.modules.unit.security.springsecurity.SpringSecurityUtilsTest$MockSecurityContextHolderReturnNull

package org.springside.modules.unit.security.springsecurity;

import static org.junit.Assert.*;

import java.util.List;

import mockit.Mock;
import mockit.MockClass;
import mockit.Mockit;

import org.junit.Test;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.GrantedAuthorityImpl;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.context.SecurityContextImpl;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.web.authentication.WebAuthenticationDetails;
import org.springside.modules.security.springsecurity.SpringSecurityUtils;

import com.google.common.collect.Lists;

public class SpringSecurityUtilsTest {
  private static final String USER_NAME = "foo";

  @MockClass(realClass = SecurityContextHolder.class)
  public static class MockSecurityContextHolder {
    @Mock
    public static SecurityContext getContext() {
      SecurityContext context = new SecurityContextImpl();

      MockHttpServletRequest request = new MockHttpServletRequest();
      request.setRemoteAddr("localhost");
      List<GrantedAuthority> list = Lists.newArrayList((GrantedAuthority) new GrantedAuthorityImpl("role_foo"));
      User user = new User(USER_NAME, "bar", false, false, false, false, list);

      UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(user, null,
          list);
      authentication.setDetails(new WebAuthenticationDetails(request));
      context.setAuthentication(authentication);
      return context;
    }
  }

  @MockClass(realClass = SecurityContextHolder.class)
  public static class MockSecurityContextHolderReturnNull {
    @Mock
    public static SecurityContext getContext() {
      SecurityContext context = new SecurityContextImpl();
      return context;
    }
  }

  @Test
  public void getCurrentStatus() {
    Mockit.setUpMocks(MockSecurityContextHolder.class);
    User user = SpringSecurityUtils.getCurrentUser();
    assertEquals(USER_NAME, user.getUsername());

    String userName = SpringSecurityUtils.getCurrentUserName();
    assertEquals(USER_NAME, userName);

    String ip = SpringSecurityUtils.getCurrentUserIp();
    assertEquals("localhost", ip);
    Mockit.tearDownMocks();

  }

  @Test
  public void getCurrentStatusFail() {
    Mockit.setUpMocks(MockSecurityContextHolderReturnNull.class);
    User user = SpringSecurityUtils.getCurrentUser();
    assertEquals(null, user);

    String userName = SpringSecurityUtils.getCurrentUserName();
    assertEquals("", userName);

    String ip = SpringSecurityUtils.getCurrentUserIp();
    assertEquals("", ip);
    Mockit.tearDownMocks();
  }

  @Test
  public void hasAnyRole() {
    Mockit.setUpMocks(MockSecurityContextHolder.class);

    assertTrue(SpringSecurityUtils.hasAnyRole("role_foo"));
    assertTrue(SpringSecurityUtils.hasAnyRole("role_foo", "role_bar"));
    assertFalse(SpringSecurityUtils.hasAnyRole("role_bar"));
    Mockit.tearDownMocks();
  }

  @Test
  public void saveUserDetailsToContext() {
    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setRemoteAddr("localhost");
    List<GrantedAuthority> list = Lists.newArrayList((GrantedAuthority) new GrantedAuthorityImpl("role_foo"));
    User user = new User(USER_NAME, "bar", false, false, false, false, list);

    SpringSecurityUtils.saveUserDetailsToContext(user, request);

    assertEquals(USER_NAME, SpringSecurityUtils.getCurrentUserName());
    assertEquals("localhost", SpringSecurityUtils.getCurrentUserIp());
  }
}
TOP

Related Classes of org.springside.modules.unit.security.springsecurity.SpringSecurityUtilsTest$MockSecurityContextHolderReturnNull

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.