[英]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.