using Microsoft.Extensions.Logging;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using System;
using System.IO.Abstractions.TestingHelpers;
using System.Runtime.InteropServices;
using Tgstation.Server.Host.IO;
namespace Tgstation.Server.Host.System.Tests
{
///
/// Tests for .
///
[TestClass]
public sealed class TestProcessFeatures
{
static IProcessFeatures features;
[ClassInitialize]
public static void Init(TestContext _)
{
features = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
? (IProcessFeatures)new WindowsProcessFeatures(Mock.Of>())
: new PosixProcessFeatures(new Lazy(() => null), new DefaultIOManager(new MockFileSystem()), Mock.Of>());
}
[TestMethod]
public void TestGetUsername()
{
if (!new PlatformIdentifier().IsWindows)
Assert.Inconclusive("This test is buggy on linux and not required");
var username = features.GetExecutingUsername(global::System.Diagnostics.Process.GetCurrentProcess());
Assert.IsTrue(username.Contains(Environment.UserName), $"Exepcted a string containing \"{Environment.UserName}\", got \"{username}\"");
}
}
}