2016-08-16 5 views
1

Team ServicesでVisual Studioプロジェクトをビルドしてから、いくつかのテストを実行する必要があります。これらのテストでは、REST API呼び出しが行われ、データベースに直接アクセスしてREST API呼び出しが機能していることが検証されます。データベースは、Windows認証ユーザーのみがアクセスできるMicrosoft SQL Serverデータベースです。それは社内サーバー上で実行されています。そのため、マシン上でビルドをローカルで実行するとうまく動作しますが、チームサービスではデータベースにアクセスできないためテストが失敗します。私はそれがユーザーとしてテストを実行することが可能かどうか、何とかこの問題を回避するのだろうかと思います。Visual Studio Team ServicesでWindowsユーザーとして実行する

提案は大歓迎ですが、APIを確認するにはデータベースに直接アクセスできる必要があります。

答えて

2

VSTSビルドによるプロジェクトのビルドでは、vstsエージェントアカウントを使用します(セットアップvstsエージェントの場合に指定できます)。

最初に、vstsエージェントを使ってビルドとテストを行い、そのマシンにWindowsアカウントがありSQL Serverに接続してデータを読み取れば、SQL Serverからデータにアクセスするユーザーを偽装する可能性があります。

シンプルコード:

public static class Helper 
{ 
    [DllImport("advapi32.dll", SetLastError = true)] 
    public static extern bool LogonUser(
     string lpszUsername, 
     string lpszDomain, 
     string lpszPassword, 
     int dwLogonType, 
     int dwLogonProvider, 
     out IntPtr phToken); 
} 

- あなたはエージェントをホスト使用している場合

IntPtr userToken = IntPtr.Zero; 

     bool success = Helper.LogonUser(
      "[user name]", 
      "[domain]", 
      "[password]", 
      2, //2 
      0, //0 
      out userToken); 

     if (!success) 
     { 
      Assert.Fail("Logon user failed"); 

     } 

     using (WindowsIdentity.Impersonate(userToken)) 
     { 
      //TODO connect to your sql server database 

}第二に

、唯一の方法は、あなたがするSQL Serverアカウントを使用する必要があるということですSQL Serverデータベースにアクセスし、SQL ServerインスタンスがHostedエージェントからアクセスできることを確認してください。

関連する問題