diff --git a/UnitTests/PInvoke/UserEnv/CreateEnvironmentBlockTest_And_DestroyEnvironmentBlockTest.cs b/UnitTests/PInvoke/UserEnv/CreateEnvironmentBlockTest_And_DestroyEnvironmentBlockTest.cs new file mode 100644 index 00000000..c3f12bf5 --- /dev/null +++ b/UnitTests/PInvoke/UserEnv/CreateEnvironmentBlockTest_And_DestroyEnvironmentBlockTest.cs @@ -0,0 +1,53 @@ +using NUnit.Framework; +using System; +using static Vanara.PInvoke.AdvApi32; +using static Vanara.PInvoke.Kernel32; +using static Vanara.PInvoke.UserEnv; + +namespace Vanara.PInvoke.Tests +{ + public partial class UserEnvTests + { + [Test] + public void CreateEnvironmentBlockTest_And_DestroyEnvironmentBlockTest() + { + SafeHTOKEN hToken; + + using (hToken = SafeHTOKEN.FromProcess(GetCurrentProcess(), TokenAccess.TOKEN_IMPERSONATE | TokenAccess.TOKEN_DUPLICATE | TokenAccess.TOKEN_READ).Duplicate(SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation)) + { + Assert.IsFalse(hToken.IsClosed); + + Assert.That(CreateEnvironmentBlock(out var environmentBlock, hToken, false), ResultIs.Successful); + + + // Test all environment variables. + + var allEnvironmentVariables = Environment.GetEnvironmentVariables(); + + foreach (var envVar in environmentBlock) + { + var envVarName = envVar.Split('=')[0]; + + if (allEnvironmentVariables.Contains(envVarName)) + { + var envVarValue = Environment.GetEnvironmentVariable(envVarName); + + Assert.AreEqual(allEnvironmentVariables[envVarName], envVarValue); + + TestContext.WriteLine(envVar); + } + + else + { + TestContext.WriteLine(); + TestContext.WriteLine($"*** UNAVAILABLE: {envVar}"); + TestContext.WriteLine(); + } + } + } + + + Assert.IsTrue(hToken.IsClosed); + } + } +} diff --git a/UnitTests/PInvoke/UserEnv/UserEnv.csproj b/UnitTests/PInvoke/UserEnv/UserEnv.csproj index bfce3dab..893a30e0 100644 --- a/UnitTests/PInvoke/UserEnv/UserEnv.csproj +++ b/UnitTests/PInvoke/UserEnv/UserEnv.csproj @@ -44,6 +44,7 @@ + diff --git a/UnitTests/PInvoke/UserEnv/UserEnvTests.cs b/UnitTests/PInvoke/UserEnv/UserEnvTests.cs index dc151897..5e7cdf16 100644 --- a/UnitTests/PInvoke/UserEnv/UserEnvTests.cs +++ b/UnitTests/PInvoke/UserEnv/UserEnvTests.cs @@ -1,19 +1,9 @@ using NUnit.Framework; -using static Vanara.PInvoke.AdvApi32; -using static Vanara.PInvoke.Kernel32; -using static Vanara.PInvoke.UserEnv; namespace Vanara.PInvoke.Tests { - public class UserEnvTests + [TestFixture()] + public partial class UserEnvTests { - [Test] - public void CreateDestroyEnvironmentBlockTest() - { - using var hTok = SafeHTOKEN.FromProcess(GetCurrentProcess(), TokenAccess.TOKEN_IMPERSONATE | TokenAccess.TOKEN_DUPLICATE | TokenAccess.TOKEN_READ).Duplicate(SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation); - Assert.That(CreateEnvironmentBlock(out var env, hTok, false), ResultIs.Successful); - Assert.That(env, Has.Exactly(1).StartsWith("Path=")); - TestContext.Write(string.Join("\r\n", env)); - } } -} \ No newline at end of file +}