From 85dc0b9ae26de2dc2df8de1f20ef544bc3bde5d4 Mon Sep 17 00:00:00 2001 From: Leila Lali Date: Wed, 14 Jun 2017 15:54:50 -0700 Subject: [PATCH] setting user status in oe if user is disabled (#378) * setting user status in oe if disabled --- .../SmoModel/SmoUserCustomNode.cs | 38 +++++++++++++++++++ .../Baselines/AllSqlObjects.txt | 6 +-- .../ObjectExplorer/UsersChildFactoryTests.cs | 30 +++++++++++++++ 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoUserCustomNode.cs create mode 100644 test/Microsoft.SqlTools.ServiceLayer.UnitTests/ObjectExplorer/UsersChildFactoryTests.cs diff --git a/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoUserCustomNode.cs b/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoUserCustomNode.cs new file mode 100644 index 00000000..cb7593ca --- /dev/null +++ b/src/Microsoft.SqlTools.ServiceLayer/ObjectExplorer/SmoModel/SmoUserCustomNode.cs @@ -0,0 +1,38 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// + +using Microsoft.SqlServer.Management.Smo; + +namespace Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel +{ + /// + /// Status for logins + /// + internal partial class UsersChildFactory : SmoChildFactoryBase + { + public override string GetNodeStatus(object context) + { + return UserCustomeNodeHelper.GetStatus(context); + } + } + + internal static class UserCustomeNodeHelper + { + internal static string GetStatus(object context) + { + User user = context as User; + if (user != null) + { + if (!user.HasDBAccess) + { + return "Disabled"; + } + } + + return string.Empty; + } + } +} + diff --git a/test/Microsoft.SqlTools.ServiceLayer.Test.Common/TestData/ObjectExplorer/Baselines/AllSqlObjects.txt b/test/Microsoft.SqlTools.ServiceLayer.Test.Common/TestData/ObjectExplorer/Baselines/AllSqlObjects.txt index a89be3d3..9bd5963f 100644 --- a/test/Microsoft.SqlTools.ServiceLayer.Test.Common/TestData/ObjectExplorer/Baselines/AllSqlObjects.txt +++ b/test/Microsoft.SqlTools.ServiceLayer.Test.Common/TestData/ObjectExplorer/Baselines/AllSqlObjects.txt @@ -123,9 +123,9 @@ NodeType: FileGroup Label: PRIMARY SubType: Status: NodeType: FullTextCatalog Label: AW2014FullTextCatalog SubType: Status: NodeType: User Label: amy0 SubType: Status: NodeType: User Label: dbo SubType: Status: -NodeType: User Label: guest SubType: Status: -NodeType: User Label: INFORMATION_SCHEMA SubType: Status: -NodeType: User Label: sys SubType: Status: +NodeType: User Label: guest SubType: Status:Disabled +NodeType: User Label: INFORMATION_SCHEMA SubType: Status:Disabled +NodeType: User Label: sys SubType: Status:Disabled NodeType: DatabaseRole Label: db_accessadmin SubType: Status: NodeType: DatabaseRole Label: db_backupoperator SubType: Status: NodeType: DatabaseRole Label: db_datareader SubType: Status: diff --git a/test/Microsoft.SqlTools.ServiceLayer.UnitTests/ObjectExplorer/UsersChildFactoryTests.cs b/test/Microsoft.SqlTools.ServiceLayer.UnitTests/ObjectExplorer/UsersChildFactoryTests.cs new file mode 100644 index 00000000..aed7f7db --- /dev/null +++ b/test/Microsoft.SqlTools.ServiceLayer.UnitTests/ObjectExplorer/UsersChildFactoryTests.cs @@ -0,0 +1,30 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// + +using Microsoft.SqlServer.Management.Smo; +using Microsoft.SqlTools.ServiceLayer.ObjectExplorer.SmoModel; +using Xunit; + +namespace Microsoft.SqlTools.ServiceLayer.UnitTests.ObjectExplorer +{ + public class UsersChildFactoryTests + { + [Fact] + public void GetStatusShouldReturnEmptyStringGivenNull() + { + string expected = string.Empty; + string actual = UserCustomeNodeHelper.GetStatus(null); + Assert.Equal(expected, actual); + } + + [Fact] + public void GetStatusShouldReturnEmptyStringGivenNotUser() + { + string expected = string.Empty; + string actual = UserCustomeNodeHelper.GetStatus(new Database()); + Assert.Equal(expected, actual); + } + } +}