2023-09-20 10:59:34 -04:00
|
|
|
|
using NUnit.Framework;
|
2019-03-11 17:02:56 -04:00
|
|
|
|
using System.Linq;
|
2020-08-23 14:58:34 -04:00
|
|
|
|
using Vanara.PInvoke.Tests;
|
2019-03-11 17:02:56 -04:00
|
|
|
|
|
2023-03-31 11:47:53 -04:00
|
|
|
|
namespace Vanara.Diagnostics.Tests;
|
|
|
|
|
|
|
|
|
|
[TestFixture]
|
|
|
|
|
public class ComputerTests
|
2019-03-11 17:02:56 -04:00
|
|
|
|
{
|
2023-03-31 11:47:53 -04:00
|
|
|
|
[Test]
|
|
|
|
|
public void EnumSharesTest()
|
2019-03-11 17:02:56 -04:00
|
|
|
|
{
|
2023-03-31 11:47:53 -04:00
|
|
|
|
const string shareName = "Test123123123123";
|
|
|
|
|
try
|
2019-03-11 17:02:56 -04:00
|
|
|
|
{
|
2023-03-31 11:47:53 -04:00
|
|
|
|
Computer.Local.SharedDevices.Add(shareName, "Cmt", TestCaseSources.TempDir);
|
|
|
|
|
var shares = Computer.Local.SharedDevices.Values.ToList();
|
|
|
|
|
TestContext.Write(string.Join("\n", shares.Select(s => $"{s.Name}={s.Path} ({s.Description})")));
|
|
|
|
|
Assert.That(shares, Has.One.Property("Name").EqualTo(shareName));
|
2019-03-11 17:02:56 -04:00
|
|
|
|
}
|
2023-03-31 11:47:53 -04:00
|
|
|
|
finally
|
2021-10-13 22:08:14 -04:00
|
|
|
|
{
|
2023-03-31 11:47:53 -04:00
|
|
|
|
Computer.Local.SharedDevices.Remove(shareName);
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-10-13 22:08:14 -04:00
|
|
|
|
|
2023-03-31 11:47:53 -04:00
|
|
|
|
[Test]
|
|
|
|
|
public void EnumLocalGroupsTest()
|
|
|
|
|
{
|
|
|
|
|
const string name = "TestUser123";
|
|
|
|
|
const string newcomment = "new testing user";
|
|
|
|
|
|
|
|
|
|
var lg = Computer.Local.LocalGroups.Add(name);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Assert.That(Computer.Local.LocalGroups.Count, Is.GreaterThanOrEqualTo(1));
|
|
|
|
|
Assert.That(lg.Name, Is.EqualTo(name));
|
|
|
|
|
Assert.That(lg.Target, Is.EqualTo(Computer.Local.Target));
|
|
|
|
|
Assert.That(lg.Comment, Is.Empty);
|
|
|
|
|
Assert.IsTrue(Computer.Local.LocalGroups.Contains(lg));
|
|
|
|
|
Assert.That(() => lg.Comment = newcomment, Throws.Nothing);
|
|
|
|
|
Assert.That(lg.Comment, Is.EqualTo(newcomment));
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
Computer.Local.LocalGroups.Remove(lg);
|
2021-10-13 22:08:14 -04:00
|
|
|
|
}
|
2023-03-31 11:47:53 -04:00
|
|
|
|
}
|
2021-10-13 22:08:14 -04:00
|
|
|
|
|
2023-03-31 11:47:53 -04:00
|
|
|
|
[Test]
|
|
|
|
|
public void EnumSessionsTest()
|
|
|
|
|
{
|
|
|
|
|
try
|
2022-09-05 12:22:41 -04:00
|
|
|
|
{
|
2023-03-31 11:47:53 -04:00
|
|
|
|
var sessions = Computer.Local.Sessions.ToList();
|
|
|
|
|
foreach (var session in sessions)
|
2022-09-05 12:22:41 -04:00
|
|
|
|
{
|
2023-03-31 11:47:53 -04:00
|
|
|
|
TestContext.WriteLine("=============================");
|
|
|
|
|
session.WriteValues();
|
2022-09-05 12:22:41 -04:00
|
|
|
|
}
|
|
|
|
|
}
|
2023-03-31 11:47:53 -04:00
|
|
|
|
finally
|
2021-10-13 22:08:14 -04:00
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
2023-03-31 11:47:53 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void EnumUsersTest()
|
|
|
|
|
{
|
|
|
|
|
const string user = "TestUser123";
|
|
|
|
|
const string comment = "testing user";
|
|
|
|
|
const string newcomment = "new testing user";
|
|
|
|
|
string hmfld = TestCaseSources.TempDir;
|
|
|
|
|
var pwd = Guid.NewGuid().ToString("B");
|
2021-10-13 22:08:14 -04:00
|
|
|
|
|
2023-03-31 11:47:53 -04:00
|
|
|
|
var acct = Computer.Local.UserAccounts.Add(user, pwd, null, comment, null, PInvoke.NetApi32.UserAcctCtrlFlags.UF_ACCOUNTDISABLE);
|
|
|
|
|
try
|
2020-08-23 14:58:34 -04:00
|
|
|
|
{
|
2023-03-31 11:47:53 -04:00
|
|
|
|
Assert.That(Computer.Local.UserAccounts.Count, Is.GreaterThanOrEqualTo(1));
|
|
|
|
|
Assert.That(acct.UserName, Is.EqualTo(user));
|
|
|
|
|
Assert.That(acct.Target, Is.EqualTo(Computer.Local.Target));
|
|
|
|
|
Assert.That(acct.Comment, Is.EqualTo(comment));
|
|
|
|
|
Assert.IsTrue(Computer.Local.UserAccounts.Contains(acct));
|
|
|
|
|
Assert.That(() => acct.Comment = newcomment, Throws.Nothing);
|
|
|
|
|
Assert.That(acct.Comment, Is.EqualTo(newcomment));
|
|
|
|
|
Assert.That(acct.HomeFolder, Is.Empty);
|
|
|
|
|
Assert.That(() => acct.HomeFolder = hmfld, Throws.Nothing);
|
|
|
|
|
Assert.That(acct.HomeFolder, Is.EqualTo(hmfld));
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
Computer.Local.UserAccounts.Remove(acct);
|
2020-08-23 14:58:34 -04:00
|
|
|
|
}
|
2023-03-31 11:47:53 -04:00
|
|
|
|
}
|
2020-08-23 14:58:34 -04:00
|
|
|
|
|
2023-03-31 11:47:53 -04:00
|
|
|
|
[Test]
|
|
|
|
|
public void MapUnmapDriveTest()
|
|
|
|
|
{
|
|
|
|
|
var remoteShare = TestCaseSources.Lookup["RemoteShare"];
|
2023-09-20 10:59:34 -04:00
|
|
|
|
Assert.NotNull(remoteShare);
|
|
|
|
|
string? local = null;
|
2023-03-31 11:47:53 -04:00
|
|
|
|
try
|
2020-08-24 17:11:07 -04:00
|
|
|
|
{
|
2023-09-20 10:59:34 -04:00
|
|
|
|
local = Computer.Local.NetworkDeviceConnections.Add(remoteShare!, "*");
|
2023-03-31 11:47:53 -04:00
|
|
|
|
var conns = Computer.Local.NetworkDeviceConnections.SelectMany(r => r.Children).Concat(Computer.Local.NetworkDeviceConnections).ToList();
|
|
|
|
|
Assert.That(conns.Select(r => r.LocalName), Has.One.EqualTo(local));
|
|
|
|
|
conns.WriteValues();
|
2020-08-24 17:11:07 -04:00
|
|
|
|
}
|
2023-03-31 11:47:53 -04:00
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (local != null)
|
|
|
|
|
Computer.Local.NetworkDeviceConnections.Remove(local, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-08-24 17:11:07 -04:00
|
|
|
|
|
2023-03-31 11:47:53 -04:00
|
|
|
|
[Test]
|
|
|
|
|
public void AuthMapUnmapDriveTest()
|
|
|
|
|
{
|
|
|
|
|
var remoteShare = TestCaseSources.Lookup["RemoteShare"];
|
2023-09-20 10:59:34 -04:00
|
|
|
|
Assert.NotNull(remoteShare);
|
|
|
|
|
string? local = null;
|
2023-03-31 11:47:53 -04:00
|
|
|
|
using var authLocal = new Computer(null, Environment.MachineName + "\\" + TestCaseSources.Lookup["LocalUser"], TestCaseSources.Lookup["LocalUserPassword"]);
|
|
|
|
|
try
|
|
|
|
|
{
|
2023-09-20 10:59:34 -04:00
|
|
|
|
local = authLocal.NetworkDeviceConnections.Add(remoteShare!, "*", TestCaseSources.Lookup["LocalAdmin"], TestCaseSources.Lookup["LocalAdminPassword"]);
|
2023-03-31 11:47:53 -04:00
|
|
|
|
var conns = authLocal.NetworkDeviceConnections.SelectMany(r => r.Children).Concat(Computer.Local.NetworkDeviceConnections).ToList();
|
|
|
|
|
Assert.That(conns.Select(r => r.LocalName), Has.One.EqualTo(local));
|
|
|
|
|
conns.WriteValues();
|
|
|
|
|
}
|
|
|
|
|
finally
|
2020-08-23 14:58:34 -04:00
|
|
|
|
{
|
2023-03-31 11:47:53 -04:00
|
|
|
|
if (local != null)
|
|
|
|
|
authLocal.NetworkDeviceConnections.Remove(local, true);
|
2020-08-23 14:58:34 -04:00
|
|
|
|
}
|
2019-03-11 17:02:56 -04:00
|
|
|
|
}
|
2023-03-31 11:47:53 -04:00
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void OpenFilesTests()
|
|
|
|
|
{
|
|
|
|
|
var files = Computer.Local.OpenFiles.ToList();
|
|
|
|
|
Assert.That(files, Is.Not.Null);
|
|
|
|
|
files.WriteValues();
|
|
|
|
|
}
|
2019-03-11 17:02:56 -04:00
|
|
|
|
}
|