Addressing code review feedback

This commit is contained in:
Mitchell Sternke
2016-08-31 16:04:04 -07:00
parent 3fe6e330fe
commit a30ff33187
3 changed files with 142 additions and 65 deletions

View File

@@ -152,15 +152,19 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// Verify that when connecting with invalid parameters, an error is thrown.
/// </summary>
[Theory]
[InlineDataAttribute(null, "my-server", "test", "sa", "123456")]
[InlineDataAttribute("file://my/sample/file.sql", null, "test", "sa", "123456")]
[InlineDataAttribute("file://my/sample/file.sql", "my-server", "test", null, "123456")]
[InlineDataAttribute("file://my/sample/file.sql", "my-server", "test", "sa", null)]
[InlineDataAttribute("", "my-server", "test", "sa", "123456")]
[InlineDataAttribute("file://my/sample/file.sql", "", "test", "sa", "123456")]
[InlineDataAttribute("file://my/sample/file.sql", "my-server", "test", "", "123456")]
[InlineDataAttribute("file://my/sample/file.sql", "my-server", "test", "sa", "")]
public void ConnectingWithInvalidParametersYieldsErrorMessage(string ownerUri, string server, string database, string userName, string password)
[InlineData("SqlLogin", null, "my-server", "test", "sa", "123456")]
[InlineData("SqlLogin", "file://my/sample/file.sql", null, "test", "sa", "123456")]
[InlineData("SqlLogin", "file://my/sample/file.sql", "my-server", "test", null, "123456")]
[InlineData("SqlLogin", "file://my/sample/file.sql", "my-server", "test", "sa", null)]
[InlineData("SqlLogin", "", "my-server", "test", "sa", "123456")]
[InlineData("SqlLogin", "file://my/sample/file.sql", "", "test", "sa", "123456")]
[InlineData("SqlLogin", "file://my/sample/file.sql", "my-server", "test", "", "123456")]
[InlineData("SqlLogin", "file://my/sample/file.sql", "my-server", "test", "sa", "")]
[InlineData("Integrated", null, "my-server", "test", "sa", "123456")]
[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 void ConnectingWithInvalidParametersYieldsErrorMessage(string authType, string ownerUri, string server, string database, string userName, string password)
{
// Connect with invalid parameters
var connectionResult =
@@ -172,7 +176,8 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
ServerName = server,
DatabaseName = database,
UserName = userName,
Password = password
Password = password,
AuthenticationType = authType
}
});
@@ -181,6 +186,40 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
Assert.NotEqual(String.Empty, connectionResult.Messages);
}
/// <summary>
/// Verify that when using integrated authentication, the username and/or password can be empty.
/// </summary>
[Theory]
[InlineData(null, null)]
[InlineData(null, "")]
[InlineData("", null)]
[InlineData("", "")]
[InlineData("sa", null)]
[InlineData("sa", "")]
[InlineData(null, "12345678")]
[InlineData("", "12345678")]
public void ConnectingWithNoUsernameOrPasswordWorksForIntegratedAuth(string userName, string password)
{
// Connect
var connectionResult =
TestObjects.GetTestConnectionService()
.Connect(new ConnectParams()
{
OwnerUri = "file:///my/test/file.sql",
Connection = new ConnectionDetails() {
ServerName = "my-server",
DatabaseName = "test",
UserName = userName,
Password = password,
AuthenticationType = "Integrated"
}
});
// check that the connection was successful
Assert.NotEmpty(connectionResult.ConnectionId);
Assert.Null(connectionResult.Messages);
}
/// <summary>
/// Verify that when connecting with a null parameters object, an error is thrown.
/// </summary>
@@ -201,38 +240,38 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
/// Verify that optional parameters can be built into a connection string for connecting.
/// </summary>
[Theory]
[InlineDataAttribute("AuthenticationType", "Integrated")]
[InlineDataAttribute("AuthenticationType", "SqlLogin")]
[InlineDataAttribute("Encrypt", true)]
[InlineDataAttribute("Encrypt", false)]
[InlineDataAttribute("TrustServerCertificate", true)]
[InlineDataAttribute("TrustServerCertificate", false)]
[InlineDataAttribute("PersistSecurityInfo", true)]
[InlineDataAttribute("PersistSecurityInfo", false)]
[InlineDataAttribute("ConnectTimeout", 15)]
[InlineDataAttribute("ConnectRetryCount", 1)]
[InlineDataAttribute("ConnectRetryInterval", 10)]
[InlineDataAttribute("ApplicationName", "vscode-mssql")]
[InlineDataAttribute("WorkstationId", "mycomputer")]
[InlineDataAttribute("ApplicationIntent", "ReadWrite")]
[InlineDataAttribute("ApplicationIntent", "ReadOnly")]
[InlineDataAttribute("CurrentLanguage", "test")]
[InlineDataAttribute("Pooling", false)]
[InlineDataAttribute("Pooling", true)]
[InlineDataAttribute("MaxPoolSize", 100)]
[InlineDataAttribute("MinPoolSize", 0)]
[InlineDataAttribute("LoadBalanceTimeout", 0)]
[InlineDataAttribute("Replication", true)]
[InlineDataAttribute("Replication", false)]
[InlineDataAttribute("AttachDbFilename", "myfile")]
[InlineDataAttribute("FailoverPartner", "partner")]
[InlineDataAttribute("MultiSubnetFailover", true)]
[InlineDataAttribute("MultiSubnetFailover", false)]
[InlineDataAttribute("MultipleActiveResultSets", false)]
[InlineDataAttribute("MultipleActiveResultSets", true)]
[InlineDataAttribute("PacketSize", 8192)]
[InlineDataAttribute("TypeSystemVersion", "Latest")]
public void ConnectingWithOptionalParametersBuildsConnectionString(string propertyName, object propertyValue)
[InlineData("AuthenticationType", "Integrated", "Integrated Security")]
[InlineData("AuthenticationType", "SqlLogin", "Integrated Security")]
[InlineData("Encrypt", true, "Encrypt")]
[InlineData("Encrypt", false, "Encrypt")]
[InlineData("TrustServerCertificate", true, "TrustServerCertificate")]
[InlineData("TrustServerCertificate", false, "TrustServerCertificate")]
[InlineData("PersistSecurityInfo", true, "Persist Security Info")]
[InlineData("PersistSecurityInfo", false, "Persist Security Info")]
[InlineData("ConnectTimeout", 15, "Connect Timeout")]
[InlineData("ConnectRetryCount", 1, "ConnectRetryCount")]
[InlineData("ConnectRetryInterval", 10, "ConnectRetryInterval")]
[InlineData("ApplicationName", "vscode-mssql", "Application Name")]
[InlineData("WorkstationId", "mycomputer", "Workstation ID")]
[InlineData("ApplicationIntent", "ReadWrite", "ApplicationIntent")]
[InlineData("ApplicationIntent", "ReadOnly", "ApplicationIntent")]
[InlineData("CurrentLanguage", "test", "Current Language")]
[InlineData("Pooling", false, "Pooling")]
[InlineData("Pooling", true, "Pooling")]
[InlineData("MaxPoolSize", 100, "Max Pool Size")]
[InlineData("MinPoolSize", 0, "Min Pool Size")]
[InlineData("LoadBalanceTimeout", 0, "Load Balance Timeout")]
[InlineData("Replication", true, "Replication")]
[InlineData("Replication", false, "Replication")]
[InlineData("AttachDbFilename", "myfile", "AttachDbFilename")]
[InlineData("FailoverPartner", "partner", "Failover Partner")]
[InlineData("MultiSubnetFailover", true, "MultiSubnetFailover")]
[InlineData("MultiSubnetFailover", false, "MultiSubnetFailover")]
[InlineData("MultipleActiveResultSets", false, "MultipleActiveResultSets")]
[InlineData("MultipleActiveResultSets", true, "MultipleActiveResultSets")]
[InlineData("PacketSize", 8192, "Packet Size")]
[InlineData("TypeSystemVersion", "Latest", "Type System Version")]
public void ConnectingWithOptionalParametersBuildsConnectionString(string propertyName, object propertyValue, string connectionStringMarker)
{
// Create a test connection details object and set the property to a specific value
ConnectionDetails details = TestObjects.GetTestConnectionDetails();
@@ -243,6 +282,9 @@ namespace Microsoft.SqlTools.ServiceLayer.Test.Connection
string connectionString = ConnectionService.BuildConnectionString(details);
Assert.NotNull(connectionString);
Assert.NotEmpty(connectionString);
// Verify that the parameter is in the connection string
Assert.True(connectionString.Contains(connectionStringMarker));
}
/// <summary>