簡體   English   中英

C#-Asp.net Web API測試項目-如何模擬用戶並在特定用戶下運行測試用例

[英]C# - Asp.net web API test project - how to impersonate a user and run test cases under a specific user

我正在研究ASP.net Web api項目。 我添加了一個測試項目。 在一個測試用例中,我使用Windows身份驗證連接到SQL Server。 當我在Visual Studio上運行該測試用例時,該測試用例在本地運行良好,因為我的帳戶(我的NT ID)已獲得SQL服務器的授權。

但是,當我們在構建服務器上運行相同的測試用例時,該測試用例失敗,說明Microsoft.AnalysisServices.AdomdClient.AdomdErrorResponseException: Either the user, 'domain\\ttwp5434203$', does not have access to the 'Employee' database, or the database does not exist.

為了克服這個問題,我正在考慮模擬運行測試用例的用戶。

我在測試項目下的App.Config文件中添加了以下代碼。

<system.web>
    <identity impersonate="true"
              userName="UID"
              password= "PWD" />
  </system.web>

此更改沒有用。 我又遇到了同樣的錯誤。 我該怎么做才能確保任何計算機上的測試用例都以特定帳戶運行。

我要使用的另一個選項是: Impersonate(IntPtr) 但是我不確定如何在多個測試用例中使用此代碼。

我現在正在使用SimpleImpersonation庫運行測試用例。 此塊軟件包可讓您模擬某些用戶,並且它確實易於使用。

 [TestMethod]
    public void SearchUser()
    {
        var  credentials = new UserCredentials("domain", "UID", "PWD");
        var result = Impersonation.RunAsUser(credentials, LogonType.NewCredentials, () =>
        {
            //CODE INSDIE THIS BLOCK WILL RUN UNDER THE ID OF ANOTHER USER 
            dynamic actualResult = controller.SearchUser();
            //Assert
            Assert.IsNotNull(actualResult);
            return actualResult;
        });
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM