C # - Тестовый проект веб-API Asp.net - как олицетворять пользователя и запускать тестовые примеры под конкретным пользователем - PullRequest
0 голосов
/ 21 сентября 2018

Я работаю над проектом ASP.net Web API.Я добавил тестовый проект.В одном из тестовых случаев я подключаюсь к SQL-серверу, используя проверку подлинности WindowsТестовый пример хорошо работает локально, когда я запускаю его в 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) .Но я не уверен, как я могу использовать этот код в нескольких тестовых случаях.

1 Ответ

0 голосов
/ 05 октября 2018

Я сейчас запускаю свои тесты с использованием библиотеки 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;
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...