New test common project for database connections using the settings.json (#210)

* moved test driver tests and test common classes to separate projects
This commit is contained in:
Leila Lali
2017-01-11 13:47:56 -08:00
committed by GitHub
parent e71bcefb28
commit b353b2137e
56 changed files with 1396 additions and 1008 deletions

View File

@@ -122,7 +122,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
}
[Fact]
public async void CanCancelConnectRequestByConnecting()
public async Task CanCancelConnectRequestByConnecting()
{
var testFile = "file:///my/test/file.sql";
@@ -269,7 +269,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
[Theory]
[InlineDataAttribute(null)]
[InlineDataAttribute("")]
public async void CanConnectWithEmptyDatabaseName(string databaseName)
public async Task CanConnectWithEmptyDatabaseName(string databaseName)
{
// Connect
var connectionDetails = TestObjects.GetTestConnectionDetails();
@@ -293,7 +293,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
[Theory]
[InlineDataAttribute("master")]
[InlineDataAttribute("nonMasterDb")]
public async void ConnectToDefaultDatabaseRespondsWithActualDbName(string expectedDbName)
public async Task ConnectToDefaultDatabaseRespondsWithActualDbName(string expectedDbName)
{
// Given connecting with empty database name will return the expected DB name
var connectionMock = new Mock<DbConnection> { CallBase = true };
@@ -328,7 +328,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// connection, we disconnect first before connecting.
/// </summary>
[Fact]
public async void ConnectingWhenConnectionExistCausesDisconnectThenConnect()
public async Task ConnectingWhenConnectionExistCausesDisconnectThenConnect()
{
bool callbackInvoked = false;
@@ -375,7 +375,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// Verify that when connecting with invalid credentials, an error is thrown.
/// </summary>
[Fact]
public async void ConnectingWithInvalidCredentialsYieldsErrorMessage()
public async Task ConnectingWithInvalidCredentialsYieldsErrorMessage()
{
var testConnectionDetails = TestObjects.GetTestConnectionDetails();
var invalidConnectionDetails = new ConnectionDetails();
@@ -414,7 +414,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
[InlineData("Integrated", "file://my/sample/file.sql", null, "test", "sa", "123456")]
[InlineData("Integrated", "", "my-server", "test", "sa", "123456")]
[InlineData("Integrated", "file://my/sample/file.sql", "", "test", "sa", "123456")]
public async void ConnectingWithInvalidParametersYieldsErrorMessage(string authType, string ownerUri, string server, string database, string userName, string password)
public async Task ConnectingWithInvalidParametersYieldsErrorMessage(string authType, string ownerUri, string server, string database, string userName, string password)
{
// Connect with invalid parameters
var connectionResult = await
@@ -448,7 +448,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
[InlineData("sa", "")]
[InlineData(null, "12345678")]
[InlineData("", "12345678")]
public async void ConnectingWithNoUsernameOrPasswordWorksForIntegratedAuth(string userName, string password)
public async Task ConnectingWithNoUsernameOrPasswordWorksForIntegratedAuth(string userName, string password)
{
// Connect
var connectionResult = await
@@ -473,7 +473,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// Verify that when connecting with a null parameters object, an error is thrown.
/// </summary>
[Fact]
public async void ConnectingWithNullParametersObjectYieldsErrorMessage()
public async Task ConnectingWithNullParametersObjectYieldsErrorMessage()
{
// Connect with null parameters
var connectionResult = await
@@ -551,7 +551,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// Verify that a connection changed event is fired when the database context changes.
/// </summary>
[Fact]
public async void ConnectionChangedEventIsFiredWhenDatabaseContextChanges()
public async Task ConnectionChangedEventIsFiredWhenDatabaseContextChanges()
{
var serviceHostMock = new Mock<IProtocolEndpoint>();
@@ -585,7 +585,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// Verify that the SQL parser correctly detects errors in text
/// </summary>
[Fact]
public async void ConnectToDatabaseTest()
public async Task ConnectToDatabaseTest()
{
// connect to a database instance
string ownerUri = "file://my/sample/file.sql";
@@ -605,7 +605,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// Verify that we can disconnect from an active connection succesfully
/// </summary>
[Fact]
public async void DisconnectFromDatabaseTest()
public async Task DisconnectFromDatabaseTest()
{
// first connect
string ownerUri = "file://my/sample/file.sql";
@@ -635,7 +635,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// Test that when a disconnect is performed, the callback event is fired
/// </summary>
[Fact]
public async void DisconnectFiresCallbackEvent()
public async Task DisconnectFiresCallbackEvent()
{
bool callbackInvoked = false;
@@ -679,7 +679,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// Test that disconnecting an active connection removes the Owner URI -> ConnectionInfo mapping
/// </summary>
[Fact]
public async void DisconnectRemovesOwnerMapping()
public async Task DisconnectRemovesOwnerMapping()
{
// first connect
string ownerUri = "file://my/sample/file.sql";
@@ -719,7 +719,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
[InlineDataAttribute(null)]
[InlineDataAttribute("")]
public async void DisconnectValidatesParameters(string disconnectUri)
public async Task DisconnectValidatesParameters(string disconnectUri)
{
// first connect
string ownerUri = "file://my/sample/file.sql";
@@ -751,7 +751,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// Verifies the the list databases operation lists database names for the server used by a connection.
/// </summary>
[Fact]
public async void ListDatabasesOnServerForCurrentConnectionReturnsDatabaseNames()
public async Task ListDatabasesOnServerForCurrentConnectionReturnsDatabaseNames()
{
// Result set for the query of database names
Dictionary<string, string>[] data =
@@ -800,7 +800,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// Verify that the SQL parser correctly detects errors in text
/// </summary>
[Fact]
public async void OnConnectionCallbackHandlerTest()
public async Task OnConnectionCallbackHandlerTest()
{
bool callbackInvoked = false;
@@ -854,7 +854,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// Verify when a connection is created that the URI -> Connection mapping is created in the connection service.
/// </summary>
[Fact]
public async void TestConnectRequestRegistersOwner()
public async Task TestConnectRequestRegistersOwner()
{
// Given a request to connect to a database
var service = TestObjects.GetTestConnectionService();

View File

@@ -65,7 +65,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.LanguageServices
// set up file for returning the query
scriptFile = new Mock<ScriptFile>();
scriptFile.SetupGet(file => file.Contents).Returns(Common.StandardQuery);
scriptFile.SetupGet(file => file.Contents).Returns(QueryExecution.Common.StandardQuery);
scriptFile.SetupGet(file => file.ClientFilePath).Returns(this.testScriptUri);
// set up workspace mock

View File

@@ -27,6 +27,7 @@ using Microsoft.SqlTools.Test.Utility;
using Moq;
using Xunit;
using Location = Microsoft.SqlTools.ServiceLayer.Workspace.Contracts.Location;
using Microsoft.SqlTools.ServiceLayer.Test.Common;
namespace Microsoft.SqlTools.ServiceLayer.Test.LanguageServices
{
@@ -71,7 +72,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.LanguageServices
// set up file for returning the query
var fileMock = new Mock<ScriptFile>();
fileMock.SetupGet(file => file.Contents).Returns(Common.StandardQuery);
fileMock.SetupGet(file => file.Contents).Returns(QueryExecution.Common.StandardQuery);
fileMock.SetupGet(file => file.ClientFilePath).Returns(this.testScriptUri);
// set up workspace mock
@@ -125,7 +126,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.LanguageServices
[Fact]
public async Task DefinitionsHandlerWithNoConnectionTest()
{
TestObjects.InitializeTestServices();
TestServiceProvider.InitializeTestServices();
InitializeTestObjects();
// request definition
var definitionTask = await Task.WhenAny(LanguageService.HandleDefinitionRequest(textDocument, requestContext.Object), Task.Delay(TaskTimeout));

View File

@@ -16,7 +16,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution
public class CancelTests
{
[Fact]
public async void CancelInProgressQueryTest()
public async Task CancelInProgressQueryTest()
{
// If:
// ... I request a query (doesn't matter what kind) and execute it
@@ -45,7 +45,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution
}
[Fact]
public async void CancelExecutedQueryTest()
public async Task CancelExecutedQueryTest()
{
// If:
// ... I request a query (doesn't matter what kind) and wait for execution

View File

@@ -33,7 +33,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution
}
[Fact]
public async void DisposeExecutedQuery()
public async Task DisposeExecutedQuery()
{
// If:
// ... I request a query (doesn't matter what kind)
@@ -61,7 +61,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution
}
[Fact]
public async void QueryDisposeMissingQuery()
public async Task QueryDisposeMissingQuery()
{
// If:
// ... I attempt to dispose a query that doesn't exist

View File

@@ -159,7 +159,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution.Execution
}
[Fact]
public async void QueryExecuteUnconnectedUriTest()
public async Task QueryExecuteUnconnectedUriTest()
{
// Given:
// If:
@@ -182,7 +182,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution.Execution
}
[Fact]
public async void QueryExecuteInProgressTest()
public async Task QueryExecuteInProgressTest()
{
// If:
// ... I request to execute a query
@@ -210,7 +210,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution.Execution
}
[Fact]
public async void QueryExecuteCompletedTest()
public async Task QueryExecuteCompletedTest()
{
// If:
// ... I request to execute a query
@@ -266,7 +266,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution.Execution
}
[Fact]
public async void QueryExecuteInvalidQueryTest()
public async Task QueryExecuteInvalidQueryTest()
{
// If:
// ... I request to execute a query that is invalid

View File

@@ -50,7 +50,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution.SaveResults
}
[Fact]
public async void SaveResultAsCsvFailure()
public async Task SaveResultAsCsvFailure()
{
// Given:
// ... A working query and workspace service
@@ -96,7 +96,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution.SaveResults
}
[Fact]
public async void SaveResultsAsCsvSuccess()
public async Task SaveResultsAsCsvSuccess()
{
// Given:
// ... A working query and workspace service
@@ -167,7 +167,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution.SaveResults
}
[Fact]
public async void SaveResultAsJsonFailure()
public async Task SaveResultAsJsonFailure()
{
// Given:
// ... A working query and workspace service
@@ -213,7 +213,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.QueryExecution.SaveResults
}
[Fact]
public async void SaveResultsAsJsonSuccess()
public async Task SaveResultsAsJsonSuccess()
{
// Given:
// ... A working query and workspace service

View File

@@ -15,7 +15,7 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.ServiceHost
public class ServiceHostTests
{
[Fact]
public async void InitializeResultShouldIncludeTheCharactersThatWouldTriggerTheCompletion()
public async Task InitializeResultShouldIncludeTheCharactersThatWouldTriggerTheCompletion()
{
Hosting.ServiceHost host = Hosting.ServiceHost.Instance;
var requesContext = new Mock<RequestContext<InitializeResult>>();

View File

@@ -10,14 +10,13 @@ using System.Data.Common;
using System.Data.SqlClient;
using System.IO;
using System.Reflection;
using System.Threading.Tasks;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlTools.ServiceLayer.Connection;
using Microsoft.SqlTools.ServiceLayer.Connection.Contracts;
using Microsoft.SqlTools.ServiceLayer.Credentials;
using Microsoft.SqlTools.ServiceLayer.Hosting;
using Microsoft.SqlTools.ServiceLayer.LanguageServices;
using Microsoft.SqlTools.ServiceLayer.QueryExecution;
using Microsoft.SqlTools.ServiceLayer.SqlContext;
using Microsoft.SqlTools.ServiceLayer.Test.Common;
using Microsoft.SqlTools.ServiceLayer.Test.Utility;
using Microsoft.SqlTools.ServiceLayer.Workspace;
using Microsoft.SqlTools.ServiceLayer.Workspace.Contracts;
@@ -29,7 +28,6 @@ namespace Microsoft.SqlTools.Test.Utility
/// </summary>
public class TestObjects
{
private static bool hasInitServices = false;
public const string ScriptUri = "file://some/file.sql";
/// <summary>
@@ -74,23 +72,10 @@ namespace Microsoft.SqlTools.Test.Utility
{
return new ConnectionDetails()
{
UserName = "sa",
Password = "...",
DatabaseName = "master",
ServerName = "localhost"
};
}
/// <summary>
/// Gets a ConnectionDetails for connecting to localhost with integrated auth
/// </summary>
public static ConnectionDetails GetIntegratedTestConnectionDetails()
{
return new ConnectionDetails()
{
DatabaseName = "master",
ServerName = "localhost",
AuthenticationType = "Integrated"
UserName = "user",
Password = "password",
DatabaseName = "databaseName",
ServerName = "serverName"
};
}
@@ -121,38 +106,7 @@ namespace Microsoft.SqlTools.Test.Utility
return ConnectionService.Instance.ConnectionFactory;
}
public static void InitializeTestServices()
{
if (TestObjects.hasInitServices)
{
return;
}
TestObjects.hasInitServices = true;
const string hostName = "SQ Tools Test Service Host";
const string hostProfileId = "SQLToolsTestService";
Version hostVersion = new Version(1,0);
// set up the host details and profile paths
var hostDetails = new HostDetails(hostName, hostProfileId, hostVersion);
SqlToolsContext sqlToolsContext = new SqlToolsContext(hostDetails);
// Grab the instance of the service host
ServiceHost serviceHost = ServiceHost.Instance;
// Start the service
serviceHost.Start().Wait();
// Initialize the services that will be hosted here
WorkspaceService<SqlToolsSettings>.Instance.InitializeService(serviceHost);
LanguageService.Instance.InitializeService(serviceHost, sqlToolsContext);
ConnectionService.Instance.InitializeService(serviceHost);
CredentialService.Instance.InitializeService(serviceHost);
QueryExecutionService.Instance.InitializeService(serviceHost);
serviceHost.Initialize();
}
public static string GetTestSqlFile()
{
@@ -170,12 +124,14 @@ namespace Microsoft.SqlTools.Test.Utility
return filePath;
}
public static ConnectionInfo InitLiveConnectionInfo(out ScriptFile scriptFile)
public static async Task<TestConnectionResult> InitLiveConnectionInfo()
{
TestObjects.InitializeTestServices();
TestServiceProvider.InitializeTestServices();
string sqlFilePath = GetTestSqlFile();
scriptFile = WorkspaceService<SqlToolsSettings>.Instance.Workspace.GetFile(sqlFilePath);
string sqlFilePath = GetTestSqlFile();
ScriptFile scriptFile = WorkspaceService<SqlToolsSettings>.Instance.Workspace.GetFile(sqlFilePath);
TestConnectionProfileService connectionProfileService = new TestConnectionProfileService();
ConnectParams connectParams = await connectionProfileService.GetConnectionParametersAsync();
string ownerUri = scriptFile.ClientFilePath;
var connectionService = TestObjects.GetLiveTestConnectionService();
@@ -184,19 +140,21 @@ namespace Microsoft.SqlTools.Test.Utility
.Connect(new ConnectParams()
{
OwnerUri = ownerUri,
Connection = TestObjects.GetIntegratedTestConnectionDetails()
Connection = connectParams.Connection
});
connectionResult.Wait();
ConnectionInfo connInfo = null;
connectionService.TryFindConnection(ownerUri, out connInfo);
return connInfo;
return new TestConnectionResult () { ConnectionInfo = connInfo, ScriptFile = scriptFile };
}
public static ConnectionInfo InitLiveConnectionInfoForDefinition()
public static async Task<ConnectionInfo> InitLiveConnectionInfoForDefinition()
{
TestObjects.InitializeTestServices();
TestServiceProvider.InitializeTestServices();
TestConnectionProfileService connectionProfileService = new TestConnectionProfileService();
ConnectParams connectParams = await connectionProfileService.GetConnectionParametersAsync();
string ownerUri = ScriptUri;
var connectionService = TestObjects.GetLiveTestConnectionService();
@@ -205,7 +163,7 @@ namespace Microsoft.SqlTools.Test.Utility
.Connect(new ConnectParams()
{
OwnerUri = ownerUri,
Connection = TestObjects.GetIntegratedTestConnectionDetails()
Connection = connectParams.Connection
});
connectionResult.Wait();
@@ -351,4 +309,13 @@ namespace Microsoft.SqlTools.Test.Utility
};
}
}
public class TestConnectionResult
{
public ConnectionInfo ConnectionInfo { get; set; }
public ScriptFile ScriptFile { get; set; }
public TextDocumentPosition TextDocumentPosition { get; set; }
}
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
namespace Microsoft.SqlTools.ServiceLayer.Test.Utility
{

View File

@@ -27,7 +27,8 @@
"Microsoft.SqlTools.ServiceLayer": {
"target": "project"
},
"Moq": "4.6.36-alpha"
"Moq": "4.6.36-alpha",
"Microsoft.SqlTools.ServiceLayer.Test.Common": "1.0.0-*"
},
"testRunner": "xunit",
"frameworks": {