DSInternals/Src/DSInternals.SAM.Test/LSAPolicyTester.cs
2018-12-30 18:23:49 +01:00

137 lines
4.4 KiB
C#

namespace DSInternals.SAM.Test
{
using DSInternals.SAM;
using DSInternals.SAM.Interop;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.IO;
[TestClass]
public class LSAPolicyTester
{
[TestMethod]
public void LsaPolicy_QueryDnsDomainInformation()
{
try
{
using (var policy = new LsaPolicy(LsaPolicyAccessMask.ViewLocalInformation))
{
var result = policy.QueryDnsDomainInformation();
}
}
catch(UnauthorizedAccessException e)
{
// This is expected.
throw new AssertInconclusiveException("LSA-related tests require admin rights.", e);
}
}
[TestMethod]
public void LsaPolicy_QueryAccountDomainInformation()
{
try
{
using (var policy = new LsaPolicy(LsaPolicyAccessMask.ViewLocalInformation))
{
var result = policy.QueryAccountDomainInformation();
}
}
catch (UnauthorizedAccessException e)
{
// This is expected.
throw new AssertInconclusiveException("LSA-related tests require admin rights.", e);
}
}
[TestMethod]
public void LsaPolicy_QueryMachineAccountInformation()
{
try
{
using (var policy = new LsaPolicy(LsaPolicyAccessMask.ViewLocalInformation))
{
var result = policy.QueryMachineAccountInformation();
}
}
catch (UnauthorizedAccessException e)
{
// This is expected.
throw new AssertInconclusiveException("LSA-related tests require admin rights.", e);
}
}
[TestMethod]
public void LsaPolicy_QueryLocalAccountDomainInformation()
{
try
{
using (var policy = new LsaPolicy(LsaPolicyAccessMask.ViewLocalInformation))
{
var result = policy.QueryLocalAccountDomainInformation();
}
}
catch (UnauthorizedAccessException e)
{
// This is expected.
throw new AssertInconclusiveException("LSA-related tests require admin rights.", e);
}
}
[TestMethod]
public void LsaPolicy_SetDnsDomainInformation()
{
try
{
using (var policy = new LsaPolicy(LsaPolicyAccessMask.ViewLocalInformation | LsaPolicyAccessMask.TrustAdmin))
{
// Retrieve domain info
var info = policy.QueryDnsDomainInformation();
// Now try to set it to the same value.
// BE CAREFUL WHEN TESTING THIS!!!
policy.SetDnsDomainInformation(info);
}
}
catch (UnauthorizedAccessException e)
{
// This is expected.
throw new AssertInconclusiveException("LSA-related tests require admin rights.", e);
}
}
[TestMethod]
public void LsaPolicy_LsaRetrievePrivateData_Existing()
{
try
{
using (var policy = new LsaPolicy(LsaPolicyAccessMask.GetPrivateInformation))
{
policy.RetrievePrivateData("DPAPI_SYSTEM");
}
}
catch (UnauthorizedAccessException e)
{
// This is expected.
throw new AssertInconclusiveException("LSA-related tests require admin rights.", e);
}
}
[TestMethod]
[ExpectedException(typeof(FileNotFoundException))]
public void LsaPolicy_LsaRetrievePrivateData_NonExisting()
{
try
{
using (var policy = new LsaPolicy(LsaPolicyAccessMask.GetPrivateInformation))
{
policy.RetrievePrivateData("bflmpsvz");
}
}
catch (UnauthorizedAccessException e)
{
// This is expected.
throw new AssertInconclusiveException("LSA-related tests require admin rights.", e);
}
}
}
}