diff --git a/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs b/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs
index 534e7b89..5a96a6c7 100644
--- a/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs
+++ b/src/Microsoft.SqlTools.ServiceLayer/Connection/ConnectionService.cs
@@ -28,8 +28,9 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection
/// Main class for the Connection Management services
///
public class ConnectionService
- {
+ {
public const string AdminConnectionPrefix = "ADMIN:";
+ internal const string PasswordPlaceholder = "******";
private const string SqlAzureEdition = "SQL Azure";
///
@@ -1268,6 +1269,13 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection
{
try
{
+ if (!connStringParams.IncludePassword)
+ {
+ info.ConnectionDetails.Password = ConnectionService.PasswordPlaceholder;
+ }
+
+ info.ConnectionDetails.ApplicationName = "sqlops-connection-string";
+
connectionString = BuildConnectionString(info.ConnectionDetails);
}
catch (Exception e)
diff --git a/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/GetConnectionStringParams.cs b/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/GetConnectionStringParams.cs
index 5d8d0f43..408ec136 100644
--- a/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/GetConnectionStringParams.cs
+++ b/src/Microsoft.SqlTools.ServiceLayer/Connection/Contracts/GetConnectionStringParams.cs
@@ -14,5 +14,10 @@ namespace Microsoft.SqlTools.ServiceLayer.Connection.Contracts
/// URI of the owner of the connection
///
public string OwnerUri { get; set; }
+
+ ///
+ /// Indicates whether the password should be return in the connection string
+ ///
+ public bool IncludePassword { get; set; }
}
}
diff --git a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/Connection/ConnectionServiceTests.cs b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/Connection/ConnectionServiceTests.cs
index 4a3bb506..76efb1e8 100644
--- a/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/Connection/ConnectionServiceTests.cs
+++ b/test/Microsoft.SqlTools.ServiceLayer.IntegrationTests/Connection/ConnectionServiceTests.cs
@@ -4,6 +4,7 @@
//
using System.Data;
using System.Data.Common;
+using System.Threading.Tasks;
using Microsoft.SqlTools.ServiceLayer.Connection;
using Microsoft.SqlTools.ServiceLayer.Connection.Contracts;
using Microsoft.SqlTools.ServiceLayer.IntegrationTests.Utility;
@@ -115,9 +116,14 @@ namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.Connection
ConnectionService service = ConnectionService.Instance;
var result = LiveConnectionHelper.InitLiveConnectionInfo();
var requestContext = new Mock>();
+
+ requestContext.Setup(x => x.SendResult(It.Is((connectionString) => connectionString.Contains("Password=" + ConnectionService.PasswordPlaceholder))))
+ .Returns(Task.FromResult(new object()));
+
var requestParams = new GetConnectionStringParams()
{
- OwnerUri = result.ConnectionInfo.OwnerUri
+ OwnerUri = result.ConnectionInfo.OwnerUri,
+ IncludePassword = false
};
await service.HandleGetConnectionStringRequest(requestParams, requestContext.Object);