mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-16 18:47:57 -05:00
Updating add database reference requests to check null or whitespace (#1894)
This commit is contained in:
@@ -27,7 +27,7 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects.Contracts
|
|||||||
/// <exception cref="ArgumentException"></exception>
|
/// <exception cref="ArgumentException"></exception>
|
||||||
internal void Validate()
|
internal void Validate()
|
||||||
{
|
{
|
||||||
if (DatabaseVariable != null && DatabaseLiteral != null)
|
if (!string.IsNullOrWhiteSpace(DatabaseVariable) && !string.IsNullOrWhiteSpace(DatabaseLiteral))
|
||||||
{
|
{
|
||||||
throw new ArgumentException($"Both {nameof(DatabaseVariable)} and {nameof(DatabaseLiteral)} cannot be set.");
|
throw new ArgumentException($"Both {nameof(DatabaseVariable)} and {nameof(DatabaseLiteral)} cannot be set.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -375,14 +375,14 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects
|
|||||||
SqlProject project = GetProject(requestParams.ProjectUri!);
|
SqlProject project = GetProject(requestParams.ProjectUri!);
|
||||||
DacpacReference reference;
|
DacpacReference reference;
|
||||||
|
|
||||||
if (requestParams.DatabaseLiteral != null) // same server, different database via database name literal
|
if (!string.IsNullOrWhiteSpace(requestParams.DatabaseLiteral)) // same server, different database via database name literal
|
||||||
{
|
{
|
||||||
reference = new DacpacReference(
|
reference = new DacpacReference(
|
||||||
requestParams.DacpacPath,
|
requestParams.DacpacPath,
|
||||||
requestParams.SuppressMissingDependencies,
|
requestParams.SuppressMissingDependencies,
|
||||||
requestParams.DatabaseLiteral);
|
requestParams.DatabaseLiteral);
|
||||||
}
|
}
|
||||||
else if (requestParams.DatabaseVariable != null) // different database, possibly different server via sqlcmdvar
|
else if (!string.IsNullOrWhiteSpace(requestParams.DatabaseVariable)) // different database, possibly different server via sqlcmdvar
|
||||||
{
|
{
|
||||||
reference = new DacpacReference(
|
reference = new DacpacReference(
|
||||||
requestParams.DacpacPath,
|
requestParams.DacpacPath,
|
||||||
@@ -408,7 +408,7 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects
|
|||||||
SqlProject project = GetProject(requestParams.ProjectUri!);
|
SqlProject project = GetProject(requestParams.ProjectUri!);
|
||||||
SqlProjectReference reference;
|
SqlProjectReference reference;
|
||||||
|
|
||||||
if (requestParams.DatabaseLiteral != null) // same server, different database via database name literal
|
if (!string.IsNullOrWhiteSpace(requestParams.DatabaseLiteral)) // same server, different database via database name literal
|
||||||
{
|
{
|
||||||
reference = new SqlProjectReference(
|
reference = new SqlProjectReference(
|
||||||
requestParams.ProjectPath,
|
requestParams.ProjectPath,
|
||||||
@@ -416,7 +416,7 @@ namespace Microsoft.SqlTools.ServiceLayer.SqlProjects
|
|||||||
requestParams.SuppressMissingDependencies,
|
requestParams.SuppressMissingDependencies,
|
||||||
requestParams.DatabaseLiteral);
|
requestParams.DatabaseLiteral);
|
||||||
}
|
}
|
||||||
else if (requestParams.DatabaseVariable != null) // different database, possibly different server via sqlcmdvar
|
else if (!string.IsNullOrWhiteSpace(requestParams.DatabaseVariable)) // different database, possibly different server via sqlcmdvar
|
||||||
{
|
{
|
||||||
reference = new SqlProjectReference(
|
reference = new SqlProjectReference(
|
||||||
requestParams.ProjectPath,
|
requestParams.ProjectPath,
|
||||||
|
|||||||
@@ -602,6 +602,27 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.SqlProjects
|
|||||||
Assert.AreEqual(FileUtils.NormalizePath(mockReferencePath, PlatformID.Win32NT), dacpacRef.DacpacPath, "Referenced dacpac");
|
Assert.AreEqual(FileUtils.NormalizePath(mockReferencePath, PlatformID.Win32NT), dacpacRef.DacpacPath, "Referenced dacpac");
|
||||||
Assert.AreEqual("DacpacLiteral", dacpacRef.DatabaseVariableLiteralName, nameof(dacpacRef.DatabaseVariableLiteralName));
|
Assert.AreEqual("DacpacLiteral", dacpacRef.DatabaseVariableLiteralName, nameof(dacpacRef.DatabaseVariableLiteralName));
|
||||||
Assert.IsFalse(dacpacRef.SuppressMissingDependencies, nameof(dacpacRef.SuppressMissingDependencies));
|
Assert.IsFalse(dacpacRef.SuppressMissingDependencies, nameof(dacpacRef.SuppressMissingDependencies));
|
||||||
|
|
||||||
|
// Validate adding a dacpac reference via database literal when an empty string is passed in for DatabaseVariable
|
||||||
|
mockReferencePath = Path.Join(Path.GetDirectoryName(projectUri), "AnotherDatabaseLiteral.dacpac");
|
||||||
|
|
||||||
|
requestMock = new();
|
||||||
|
await service.HandleAddDacpacReferenceRequest(new AddDacpacReferenceParams()
|
||||||
|
{
|
||||||
|
ProjectUri = projectUri,
|
||||||
|
DacpacPath = mockReferencePath,
|
||||||
|
SuppressMissingDependencies = false,
|
||||||
|
DatabaseLiteral = "DacpacLiteral2",
|
||||||
|
DatabaseVariable = ""
|
||||||
|
}, requestMock.Object);
|
||||||
|
|
||||||
|
requestMock.AssertSuccess(nameof(service.HandleAddDacpacReferenceRequest), "db literal");
|
||||||
|
Assert.AreEqual(4, service.Projects[projectUri].DatabaseReferences.Count, "Database references after adding dacpac reference with an empty string passed in for database variable(db literal)");
|
||||||
|
dacpacRef = (DacpacReference)service.Projects[projectUri].DatabaseReferences.Get(FileUtils.NormalizePath(mockReferencePath, PlatformID.Win32NT));
|
||||||
|
Assert.AreEqual(FileUtils.NormalizePath(mockReferencePath, PlatformID.Win32NT), dacpacRef.DacpacPath, "Referenced dacpac");
|
||||||
|
Assert.AreEqual("DacpacLiteral2", dacpacRef.DatabaseVariableLiteralName, nameof(dacpacRef.DatabaseVariableLiteralName));
|
||||||
|
Assert.IsFalse(dacpacRef.SuppressMissingDependencies, nameof(dacpacRef.SuppressMissingDependencies));
|
||||||
|
Assert.AreEqual(null, dacpacRef.DatabaseVariable, nameof(dacpacRef.DatabaseVariable));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|||||||
Reference in New Issue
Block a user