Vanara/UnitTests/Security/AccessControl/SystemSecurityTests.cs

104 lines
3.0 KiB
C#

using NUnit.Framework;
using Vanara.Security.AccessControl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Principal;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework.Constraints;
using Vanara;
using static Vanara.PInvoke.AdvApi32;
namespace Vanara.Security.AccessControl.Tests
{
[TestFixture()]
public class SystemSecurityTests
{
[Test()]
public void EnumerateAccountsWithRightTest()
{
SystemSecurity ss;
using (ss = new SystemSecurity(SystemSecurity.DesiredAccess.ViewLocalInformation | SystemSecurity.DesiredAccess.LookupNames))
Assert.That(ss.EnumerateAccountsWithRight(SystemPrivilege.Backup), Is.Not.Empty);
}
[TestCase("SYSTEM")]
[TestCase("Administrators")]
[TestCase("Everyone")]
[TestCase("dahall")]
[TestCase("AMERICAS\\dahall")]
[TestCase("AAADELETE")]
[TestCase("DAHALL18")]
[TestCase("DAHALL12", false)]
public void GetAccountInfoTest(string acctName, bool valid = true)
{
SystemSecurity ss;
using (ss = new SystemSecurity(SystemSecurity.DesiredAccess.LookupNames))
{
SystemSecurity.SystemAccountInfo sai = null;
Assert.That(() => sai = ss.GetAccountInfo(acctName), valid ? (IResolveConstraint)Throws.Nothing : Throws.Exception);
TestContext.WriteLine($"{sai?.SidType ?? SID_NAME_USE.SidTypeUnknown}:{sai?.Name}");
}
}
[Test()]
public void GetAccountInfoTest1()
{
SystemSecurity ss;
using (ss = new SystemSecurity(SystemSecurity.DesiredAccess.LookupNames))
{
IList<SystemSecurity.SystemAccountInfo> sa = null;
Assert.That(() => sa = ss.GetAccountInfo(false, "SYSTEM", "Administrator", "Everyone", "dahall", "AMERICAS\\dahall", "AAADELETE", "DAHALL17", "DAHALL12"), Throws.Nothing);
foreach (var sai in sa)
TestContext.WriteLine($"{sai.SidType}:{sai.Name}");
}
}
[Test()]
public void GetAccountInfoTest2()
{
SystemSecurity ss;
using (ss = new SystemSecurity(SystemSecurity.DesiredAccess.LookupNames))
{
IList<SystemSecurity.SystemAccountInfo> sa = null;
using var identity = WindowsIdentity.GetCurrent();
Assert.That(() => sa = ss.GetAccountInfo(false, false, identity.User, new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null)), Throws.Nothing);
foreach (var sai in sa)
TestContext.WriteLine($"{sai.SidType}:{sai.Name}");
}
}
[Test()]
public void GetAvailableCAPIDsTest()
{
using (var ss = SystemSecurity.Local)
Assert.That(() => ss.GetAvailableCAPIDs(), Throws.Nothing);
}
[Test()]
public void UserLogonRightsTest()
{
using (var ss = SystemSecurity.Local)
{
SystemSecurity.LogonRights r = null;
Assert.That(() => r = ss.UserLogonRights(null), Throws.Nothing);
TestContext.WriteLine($"{r}");
}
}
[Test()]
public void UserPrivilegesTest()
{
using (var ss = SystemSecurity.Local)
{
SystemSecurity.AccountPrivileges p = null;
Assert.That(() => p = ss.UserPrivileges(null), Throws.Nothing);
TestContext.WriteLine($"{p}");
}
}
}
}