java - Spring Security 中用于身份验证的模拟对象

标签 java spring spring-security mocking testng

现在对于单元测试,我需要 authenticate 方法来假装它正常工作,在我的例子中什么都不做,所以我可以测试方法本身是否完成预期的工作(根据单元测试原则在其他地方测试身份验证,但是需要在该方法中调用身份验证)

这是我的 TestNG 类,我需要在其中制作用于身份验证的模拟对象:

package in.hexgen.api.facade;

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.Authentication;
import org.testng.annotations.Test;

import com.hexgen.api.facade.security.HexGenPermissionEvaluator;

public class HexGenPermissionEvaluatorTest {
     private static final Logger logger = LoggerFactory.getLogger(HexGenPermissionEvaluatorTest.class);

  Object name="akash";
  Object permission="CREATE_REQUISITION";
  Authentication authentication;

  //@Resource(name = "permissionEval")
  private HexGenPermissionEvaluator permissionEval;

  @Test
  public void hasPermission() {
      //authentication.setAuthenticated(true);

      logger.debug("HexGenPermissionEvaluator Generate - starting ...");
         permissionEval.hasPermission(authentication,name, permission);
      logger.debug("HexGenPermissionEvaluator Generate - completed ...");
  }

}

如何做到这一点。

最好的问候

最佳答案

考虑到 permissionEval 对象调用 authentication.isAuthenticatedFor(name,permission),使用 Mockito (https://code.google.com/p/mockito/):

import static org.mockito.Mockito.*

...

@Test
public void test(){
    // Given
    Authentication authentication = mock(Authentication.class);
    when(authentication.isAuthenticatedFor(eq(name),eq(permission)).thenReturn(true);

    // When
    permissionEval.hasPermission(authentication,name, permission);

    // Then
    // Do you asserts/verify
}

关于java - Spring Security 中用于身份验证的模拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15521310/

相关文章:

java - Android sqlite 中的自定义查询和多列上的主键

java - 如何在Java 8中使用stream()排序,两个 float 减法?

java - Spring 和 MongoDB : SAXParseException while reading Bean Definitions

grails - Grails Spring Security:在双角色之间切换

spring-security - Spring Security 3.1 中的小写比较发生了什么?

java - Spring Security 可以接受同一用户的多个密码吗?

java - nullpointerException 无法启动 Activity

java - 用于服务器端的好的 XMPP Java 库?

java - 使用 OpenSaml 将 SAMLRequest 解析为 AuthnRequest,Unmarshaller 为 NULL

java - 为什么 Spring Security permitAll() 不适用于 OAuth2.0?