单元测试启用了身份验证和授权的WCF服务类

Ala*_*ani 2 c# wcf nunit unit-testing wcf-security

我有一个WCF服务,它启用了UserName身份验证和PrincipalPermission授权.

我该如何对该方法进行单元测试.

服务:

    [PrincipalPermission(SecurityAction.Demand, Role = "Admin")]
    public void UploadEmployees(CustomerRequest request)
    {
        try
        {
            ProcessEmployees(request.PacketId, request.Employees);
        }
        catch (Exception ex)
        {
            throw new FaultException<CustomerException>(new CustomerException { Status = -1, ErrorMessage = ex.Message });
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的Nunit测试方法:

    [Test]
    public void CallProcessEmployee_Should_Work()
    {
        var service=new CustomerService();
        var request = new CustomerRequest();
        service.UploadEmployees(request);
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试执行单元测试时,我收到的错误是:

System.Security.SecurityException : Request for principal permission failed.
Run Code Online (Sandbox Code Playgroud)

如何对启用了身份验证和授权的类进行单元测试.

Ala*_*ani 5

我通过创建"setup"方法并将principal设置为当前线程来解决此问题,如下所示:

    [SetUp]
    public void SetupUnitTestPrinciple()
    {
       var identity = new GenericIdentity("Unitest");
       System.Threading.Thread.CurrentPrincipal = new CustomPrincipal(identity);
    }
Run Code Online (Sandbox Code Playgroud)